Safengine LLVM 基于 LLVM/Clang,在编译过程中对代码进行加密混淆处理,轻松满足跨平台、多系统环境下的安全需求。
您仅需标记需要保护的代码片段,并使用 Safengine LLVM 编译代码,即可完成保护。
此过程无需联网、上传,并且与开发环境无缝集成,支持源码级调试、设备模拟器及错误反馈。
我们使用最新的 LLVM/Clang 代码,支持最新 C++ 标准,并集成开发环境自带编译器的特性,
可完美替代原有编译器,生产出更高效、更稳定的应用程序。
安装步骤:
1.安装XCode
2.解压se-llvm-xcode.zip
3.正式版用户将授权文件se-llvm.lic放置到解压后的目录中
4.在终端中定位到解压后的目录,执行sudo ./install.sh
安装后,XCode的原始Toolchain备份在/Applications/Xcode.app/Contents/Developer/Toolchains中
重新安装或更新XCode后需要重复以上安装步骤
使用方法:
1.根据需要在代码中增加SDK标记
代码顶层:#pragma obfuscate on/off 加密编译该区域中的所有函数
函数声明:__attribute((obfuscate)) 加密编译该函数
2.使用IDE或命令行直接编译
例子:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) __attribute((obfuscate)) {
UNUSED(argc);UNUSED(argv);
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog(@"%@", [NSString stringWithUTF8String:"Hello, World!"]);
[pool drain];
return 0;
}
这个表示整个main函数,处于加密混淆处理的编译状态
编译结果:
.section __TEXT,__text,regular,pure_instructions
.ios_version_min 5, 0
.section __TEXT,__textcoal_nt,coalesced,pure_instructions
.section __TEXT,__const_coal,coalesced
.section __TEXT,__picsymbolstub4,symbol_stubs,none,16
.section __TEXT,__StaticInit,regular,pure_instructions
.section __TEXT,__cstring,cstring_literals
.syntax unified
.section __TEXT,__text,regular,pure_instructions
.globl _main
.align 2
_main:
push {r4, r5, r6, r7, lr}
add r7, sp, #12
push {r8, r10, r11}
sub sp, sp, #104
ldr r4, LCPI0_193
mvn r10, #1
mov r11, #0
mov r6, #65
LPC0_0:
ldr r4, [pc, r4]
ldr r4, [r4]
ldr r4, [r4]
str r4, [r7, #-32]
ldr r5, LCPI0_194
LPC0_1:
ldr r5, [pc, r5]
ldr r0, [r5]
ldr r8, LCPI0_195
LPC0_2:
ldr r8, [pc, r8]
ldr r1, [r8]
ldr r2, LCPI0_196
str r2, [r8]
rsb r2, r1, #0
ldr r3, LCPI0_197
sub r2, r3, r2
mul r3, r2, r1
mvn r1, r3
sub r0, r0, r3
orr r1, r1, r10
str r0, [r7, #-92]
cmn r1, #1
mov r1, #0
moveq r1, #1
strb r1, [r7, #-93]
ldr r0, LCPI0_198
LPC0_3:
ldr r0, [pc, r0]
ldr r12, [r0]
str r12, [r7, #-104]
ldr r0, LCPI0_199
LPC0_4:
ldr r0, [pc, r0]
ldr lr, [r0]
str lr, [r7, #-100]
ldr r0, LCPI0_200
LPC0_5:
ldr r0, [pc, r0]
ldr r0, [r0]
str r0, [r7, #-108]
ldr r0, LCPI0_201
LPC0_6:
ldr r0, [pc, r0]
ldr r0, [r0]
str r0, [r7, #-112]
ldr r0, LCPI0_202
ldr r1, LCPI0_203
LPC0_7:
ldr r1, [pc, r1]
add r1, r1, #7
str r1, [r7, #-116]
b LBB0_2
LBB0_1:
ldr r1, LCPI0_204
cmp r0, r1
ldreq r0, LCPI0_205
LBB0_2:
ldr r1, LCPI0_206
cmp r0, r1
ble LBB0_1
ldr r1, LCPI0_234
cmp r0, r1
bgt LBB0_8
ldr r1, LCPI0_235
cmp r0, r1
bgt LBB0_9
ldr r1, LCPI0_207
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_208
str r0, [r5]
ldr r1, LCPI0_209
ldr r0, LCPI0_210
ldrb r2, [r7, #-34]
LBB0_7:
cmp r2, #0
movne r0, r1
b LBB0_2
LBB0_8:
ldr r1, LCPI0_236
cmp r0, r1
ldreq r0, LCPI0_211
b LBB0_2
LBB0_9:
ldr r1, LCPI0_237
cmp r0, r1
bgt LBB0_13
ldr r1, LCPI0_212
cmp r0, r1
bne LBB0_2
ldr r0, [r7, #-76]
strb r11, [r0, #13]
ldr r0, [r7, #-76]
ldr r1, [r8]
add r0, r0, #10
str r0, [r7, #-52]
ldr r0, [r5]
ldr r2, LCPI0_213
str r2, [r8]
rsb r2, r1, #0
ldr r3, LCPI0_214
sub r2, r3, r2
mul r3, r2, r1
eor r1, r3, r10
tst r1, r3
mov r1, #0
moveq r1, #1
strb r1, [r7, #-48]
eor r1, r3, r0
and r0, r3, r0
ldr r2, LCPI0_215
ldr r3, LCPI0_216
orr r1, r0, r1
ldr r0, LCPI0_204
LBB0_12:
cmp r1, r2
movgt r0, r3
b LBB0_2
LBB0_13:
ldr r1, LCPI0_8
cmp r0, r1
bgt LBB0_16
ldr r1, LCPI0_217
cmp r0, r1
bne LBB0_2
ldr r0, [r7, #-60]
strb r6, [r0]
ldr r0, LCPI0_218
b LBB0_2
LBB0_16:
ldr r1, LCPI0_9
cmp r0, r1
bgt LBB0_20
ldr r1, LCPI0_219
cmp r0, r1
bne LBB0_2
ldr r0, [r5]
ldr r1, [r8]
ldr r2, LCPI0_220
str r2, [r8]
ldr r2, LCPI0_221
add r2, r1, r2
mul r3, r2, r1
mvn r1, r3
orr r1, r1, r10
cmn r1, #1
mov r1, #0
moveq r1, #1
strb r1, [r7, #-34]
ldr r1, LCPI0_222
ldr r2, LCPI0_223
add r0, r0, r1
sub r1, r0, r3
ldr r3, LCPI0_207
ldr r0, LCPI0_55
LBB0_19:
cmp r1, r2
movne r0, r3
b LBB0_2
LBB0_20:
ldr r1, LCPI0_10
cmp r0, r1
bgt LBB0_23
ldr r1, LCPI0_224
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_225
str r0, [r5]
ldr r1, LCPI0_238
ldr r0, LCPI0_75
ldrb r2, [r7, #-37]
b LBB0_7
LBB0_23:
ldr r1, LCPI0_11
cmp r0, r1
bgt LBB0_26
ldr r1, LCPI0_226
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_227
str r0, [r5]
ldr r1, LCPI0_71
ldr r0, LCPI0_31
ldrb r2, [r7, #-64]
b LBB0_7
LBB0_26:
ldr r1, LCPI0_12
cmp r0, r1
bgt LBB0_29
ldr r1, LCPI0_239
cmp r0, r1
bne LBB0_2
ldr r0, [r5]
ldr r1, [r8]
ldr r2, LCPI0_228
str r2, [r8]
ldr r2, LCPI0_229
add r2, r1, r2
mul r3, r2, r1
eor r1, r3, r10
eor r0, r0, r3
tst r1, r3
mov r1, #0
moveq r1, #1
strb r1, [r7, #-63]
ldr r2, LCPI0_230
bic r1, r3, r0
ldr r3, LCPI0_77
ldr r0, LCPI0_91
cmp r1, r2
moveq r0, r3
b LBB0_2
LBB0_29:
ldr r1, LCPI0_13
cmp r0, r1
bgt LBB0_33
ldr r1, LCPI0_98
cmp r0, r1
bne LBB0_2
ldr r0, [r5]
ldr r1, [r8]
ldr r2, LCPI0_231
str r2, [r8]
ldr r2, LCPI0_232
add r2, r1, r2
mul r3, r2, r1
eor r1, r3, r10
tst r1, r3
mov r1, #0
moveq r1, #1
strb r1, [r7, #-55]
bic r1, r3, r0
bic r0, r0, r3
ldr r2, LCPI0_233
ldr r3, LCPI0_53
orr r1, r0, r1
ldr r0, LCPI0_81
LBB0_32:
cmp r1, r2
movlo r0, r3
b LBB0_2
LBB0_33:
ldr r1, LCPI0_14
cmp r0, r1
bgt LBB0_36
ldr r1, LCPI0_97
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_116
str r0, [r5]
ldr r1, LCPI0_104
ldr r0, LCPI0_43
ldrb r2, [r7, #-53]
b LBB0_7
LBB0_36:
ldr r1, LCPI0_15
cmp r0, r1
bgt LBB0_39
ldr r1, LCPI0_96
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_110
str r0, [r5]
ldr r1, LCPI0_89
ldr r0, LCPI0_39
ldrb r2, [r7, #-36]
b LBB0_7
LBB0_39:
ldr r1, LCPI0_16
cmp r0, r1
bgt LBB0_42
ldr r1, LCPI0_95
cmp r0, r1
bne LBB0_2
ldr r0, [r7, #-76]
mov r1, #111
strb r1, [r0, #8]
mov r1, #44
ldr r0, [r7, #-76]
strb r1, [r0, #5]
ldr r0, [r7, #-76]
ldr r0, LCPI0_29
b LBB0_2
LBB0_42:
ldr r1, LCPI0_17
cmp r0, r1
bgt LBB0_44
ldr r1, LCPI0_94
cmp r0, r1
ldreq r0, LCPI0_98
b LBB0_2
LBB0_44:
ldr r1, LCPI0_18
cmp r0, r1
bgt LBB0_47
ldr r1, LCPI0_93
cmp r0, r1
bne LBB0_2
ldr r0, [r5]
ldr r1, [r8]
ldr r2, LCPI0_153
str r2, [r8]
mvn r0, r0
ldr r2, LCPI0_154
add r2, r1, r2
mul r3, r2, r1
eor r1, r3, r10
tst r1, r3
mov r1, #0
moveq r1, #1
strb r1, [r7, #-53]
mvn r1, r3
ldr r2, LCPI0_155
ldr r3, LCPI0_97
orr r0, r1, r0
mvn r1, r0
ldr r0, LCPI0_104
b LBB0_12
LBB0_47:
ldr r1, LCPI0_19
cmp r0, r1
bgt LBB0_50
ldr r1, LCPI0_92
cmp r0, r1
bne LBB0_2
ldr r0, [r5]
ldr r1, [r8]
ldr r2, LCPI0_141
str r2, [r8]
ldr r2, LCPI0_142
add r2, r1, r2
mul r3, r2, r1
eor r1, r3, r10
tst r1, r3
mov r1, #0
moveq r1, #1
strb r1, [r7, #-45]
ldr r2, LCPI0_143
mul r1, r3, r0
ldr r3, LCPI0_87
ldr r0, LCPI0_27
cmp r1, r2
movlt r0, r3
b LBB0_2
LBB0_50:
ldr r1, LCPI0_20
cmp r0, r1
bgt LBB0_88
ldr r1, LCPI0_22
cmp r0, r1
bgt LBB0_90
ldr r1, LCPI0_24
cmp r0, r1
bgt LBB0_92
ldr r1, LCPI0_26
cmp r0, r1
bgt LBB0_94
ldr r1, LCPI0_28
cmp r0, r1
bgt LBB0_96
ldr r1, LCPI0_30
cmp r0, r1
bgt LBB0_98
ldr r1, LCPI0_32
cmp r0, r1
bgt LBB0_100
ldr r1, LCPI0_34
cmp r0, r1
bgt LBB0_101
ldr r1, LCPI0_36
cmp r0, r1
bgt LBB0_103
ldr r1, LCPI0_38
cmp r0, r1
bgt LBB0_105
ldr r1, LCPI0_40
mov r3, r12
cmp r0, r1
bgt LBB0_107
ldr r1, LCPI0_42
cmp r0, r1
bgt LBB0_109
ldr r1, LCPI0_44
cmp r0, r1
bgt LBB0_111
ldr r1, LCPI0_46
cmp r0, r1
bgt LBB0_112
ldr r1, LCPI0_48
cmp r0, r1
bgt LBB0_113
ldr r1, LCPI0_50
cmp r0, r1
bgt LBB0_115
ldr r1, LCPI0_52
cmp r0, r1
bgt LBB0_118
ldr r1, LCPI0_54
cmp r0, r1
bgt LBB0_120
ldr r1, LCPI0_56
cmp r0, r1
bgt LBB0_122
ldr r1, LCPI0_58
cmp r0, r1
bgt LBB0_124
ldr r1, LCPI0_60
cmp r0, r1
bgt LBB0_126
ldr r1, LCPI0_62
cmp r0, r1
bgt LBB0_128
ldr r1, LCPI0_64
cmp r0, r1
bgt LBB0_129
ldr r1, LCPI0_66
cmp r0, r1
bgt LBB0_131
ldr r1, LCPI0_68
cmp r0, r1
bgt LBB0_133
ldr r1, LCPI0_70
cmp r0, r1
bgt LBB0_135
ldr r1, LCPI0_72
cmp r0, r1
bgt LBB0_136
ldr r1, LCPI0_74
cmp r0, r1
bgt LBB0_138
ldr r1, LCPI0_76
cmp r0, r1
bgt LBB0_140
ldr r1, LCPI0_78
cmp r0, r1
bgt LBB0_142
ldr r1, LCPI0_80
cmp r0, r1
bgt LBB0_144
ldr r1, LCPI0_82
cmp r0, r1
bgt LBB0_146
ldr r1, LCPI0_84
cmp r0, r1
bgt LBB0_148
ldr r1, LCPI0_86
cmp r0, r1
bgt LBB0_149
ldr r1, LCPI0_88
cmp r0, r1
bgt LBB0_151
ldr r1, LCPI0_2
cmp r0, r1
beq LBB0_153
ldr r1, LCPI0_90
cmp r0, r1
bne LBB0_163
ldr r12, [r5]
ldr r1, [r8]
str r12, [r7, #-128]
ldr r2, LCPI0_165
str r2, [r8]
ldr r2, LCPI0_166
add r2, r1, r2
mul r0, r2, r1
mvn r1, r0
str r0, [r7, #-124]
orr r2, r1, r10
str r1, [r7, #-120]
cmn r2, #1
mov r2, #0
moveq r2, #1
strb r2, [r7, #-61]
ldr r2, LCPI0_167
ldr r1, LCPI0_168
and r0, r12, r2
bic r12, r1, r12
orr r12, r12, r0
ldr r0, [r7, #-124]
and r2, r0, r2
bic r1, r1, r0
ldr r0, [r7, #-128]
orr r1, r1, r2
ldr r2, [r7, #-120]
eor r1, r1, r12
mvn r0, r0
orr r0, r2, r0
ldr r2, LCPI0_169
ldr r12, LCPI0_23
mvn r0, r0
orr r1, r1, r0
ldr r0, LCPI0_29
cmp r1, r2
movgt r0, r12
mov r12, r3
b LBB0_2
LBB0_88:
ldr r1, LCPI0_21
cmp r0, r1
bne LBB0_2
ldr r0, [r5]
ldr r1, [r8]
ldr r2, LCPI0_147
str r2, [r8]
rsb r2, r1, #0
ldr r3, LCPI0_148
sub r2, r3, r2
mul r3, r2, r1
mvn r1, r3
orr r1, r1, r10
cmn r1, #1
mov r1, #0
moveq r1, #1
strb r1, [r7, #-47]
mul r1, r3, r0
ldr r2, LCPI0_149
ldr r3, LCPI0_65
ldr r0, LCPI0_51
b LBB0_12
LBB0_90:
ldr r1, LCPI0_23
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_120
str r0, [r5]
ldr r1, LCPI0_29
ldr r0, LCPI0_95
ldrb r2, [r7, #-61]
b LBB0_7
LBB0_92:
ldr r1, LCPI0_25
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_121
str r0, [r5]
ldr r1, LCPI0_5
ldr r0, LCPI0_73
ldrb r2, [r7, #-62]
b LBB0_7
LBB0_94:
ldr r1, LCPI0_27
cmp r0, r1
bne LBB0_2
ldr r1, [r7, #-84]
ldr r0, [r7, #-80]
ldr r2, [r7, #-76]
bl _objc_msgSend
str r0, [r7, #-44]
ldr lr, [r7, #-100]
ldr r12, [r7, #-104]
ldr r0, [r5]
ldr r1, [r8]
ldr r2, LCPI0_138
str r2, [r8]
rsb r2, r1, #0
ldr r3, LCPI0_139
sub r2, r3, r2
mul r3, r2, r1
mvn r1, r3
orr r1, r1, r10
cmn r1, #1
mov r1, #0
moveq r1, #1
strb r1, [r7, #-37]
eor r1, r3, r0
and r0, r3, r0
ldr r2, LCPI0_140
ldr r3, LCPI0_101
orr r1, r0, r1
ldr r0, LCPI0_85
b LBB0_12
LBB0_96:
ldr r1, LCPI0_29
cmp r0, r1
bne LBB0_2
ldr r0, [r7, #-76]
mov r1, #111
strb r1, [r0, #8]
mov r1, #44
ldr r0, [r7, #-76]
strb r1, [r0, #5]
ldr r0, [r7, #-76]
ldr r1, [r8]
add r0, r0, #14
str r0, [r7, #-60]
ldr r0, [r5]
ldr r2, LCPI0_162
str r2, [r8]
mvn r0, r0
ldr r2, LCPI0_163
add r2, r1, r2
mul r3, r2, r1
mvn r1, r3
orr r2, r1, r10
orr r0, r1, r0
cmn r2, #1
mov r2, #0
mvn r1, r0
moveq r2, #1
strb r2, [r7, #-56]
ldr r2, LCPI0_164
ldr r3, LCPI0_61
ldr r0, LCPI0_94
b LBB0_32
LBB0_98:
ldr r1, LCPI0_31
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_191
LPC0_11:
ldr r0, [pc, r0]
ldr r1, [r7, #-112]
ldr r0, [r0]
bl _objc_msgSend
ldr r1, [r7, #-108]
bl _objc_msgSend
ldr lr, [r7, #-100]
ldr r12, [r7, #-104]
ldr r0, LCPI0_79
b LBB0_2
LBB0_100:
ldr r1, LCPI0_33
cmp r0, r1
bne LBB0_2
b LBB0_174
LBB0_101:
ldr r1, LCPI0_35
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_109
str r0, [r5]
ldr r1, LCPI0_47
ldr r0, LCPI0_39
ldrb r2, [r7, #-35]
b LBB0_7
LBB0_103:
ldr r1, LCPI0_37
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_113
str r0, [r5]
ldr r1, LCPI0_63
ldr r0, LCPI0_69
ldrb r2, [r7, #-46]
b LBB0_7
LBB0_105:
ldr r1, LCPI0_39
cmp r0, r1
bne LBB0_2
ldr r1, [r7, #-44]
ldr r0, LCPI0_192
LPC0_12:
ldr r0, [pc, r0]
str lr, [r7, #-100]
bl _NSLog
ldr lr, [r7, #-100]
ldr r12, [r7, #-104]
ldr r0, LCPI0_89
b LBB0_2
LBB0_107:
ldr r1, LCPI0_41
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_124
str r0, [r5]
ldr r1, LCPI0_79
ldr r0, LCPI0_31
ldrb r2, [r7, #-93]
b LBB0_7
LBB0_109:
ldr r1, LCPI0_43
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, [r7, #-76]
strb r11, [r0, #13]
ldr r0, [r7, #-76]
ldr r0, LCPI0_104
b LBB0_2
LBB0_111:
ldr r1, LCPI0_45
mov r12, r3
cmp r0, r1
ldreq r0, LCPI0_93
b LBB0_2
LBB0_112:
ldr r1, LCPI0_47
mov r12, r3
cmp r0, r1
ldreq r0, LCPI0_102
b LBB0_2
LBB0_113:
ldr r1, LCPI0_49
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_115
str r0, [r5]
ldr r1, LCPI0_106
ldr r0, LCPI0_43
ldrb r2, [r7, #-48]
b LBB0_7
LBB0_115:
ldr r1, LCPI0_51
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, [r7, #-52]
mov r1, #108
strb r1, [r0]
ldr r0, [r5]
ldr r1, [r8]
ldr r2, LCPI0_144
str r2, [r8]
ldr r2, LCPI0_145
add r2, r1, r2
mul r3, r2, r1
mvn r1, r3
orr r1, r1, r10
cmn r1, #1
mov r1, #0
moveq r1, #1
strb r1, [r7, #-46]
mul r1, r3, r0
ldr r2, LCPI0_146
ldr r3, LCPI0_37
ldr r0, LCPI0_63
LBB0_117:
cmp r1, r2
movhi r0, r3
b LBB0_2
LBB0_118:
ldr r1, LCPI0_53
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_118
str r0, [r5]
ldr r1, LCPI0_81
ldr r0, LCPI0_103
ldrb r2, [r7, #-55]
b LBB0_7
LBB0_120:
ldr r1, LCPI0_55
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, [r7, #-88]
mov r1, r12
str lr, [r7, #-100]
ldr r0, [r0]
bl _objc_msgSend
ldr lr, [r7, #-100]
ldr r12, [r7, #-104]
ldr r0, [r5]
ldr r1, [r8]
ldr r2, LCPI0_125
str r2, [r8]
ldr r2, LCPI0_126
add r2, r1, r2
mul r3, r2, r1
mvn r1, r3
orr r1, r1, r10
cmn r1, #1
mov r1, #0
moveq r1, #1
strb r1, [r7, #-33]
bic r1, r3, r0
bic r0, r0, r3
ldr r2, LCPI0_127
ldr r3, LCPI0_59
orr r1, r0, r1
ldr r0, LCPI0_33
b LBB0_19
LBB0_122:
ldr r1, LCPI0_57
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, [r7, #-88]
mov r1, r12
str r12, [r7, #-104]
str lr, [r7, #-100]
ldr r0, [r0]
bl _objc_msgSend
ldr lr, [r7, #-100]
ldr r12, [r7, #-104]
ldr r0, LCPI0_55
b LBB0_2
LBB0_124:
ldr r1, LCPI0_59
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_107
str r0, [r5]
ldr r1, LCPI0_33
ldr r0, LCPI0_57
ldrb r2, [r7, #-33]
b LBB0_7
LBB0_126:
ldr r1, LCPI0_61
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_119
str r0, [r5]
ldr r1, LCPI0_94
ldr r0, LCPI0_95
ldrb r2, [r7, #-56]
b LBB0_7
LBB0_128:
ldr r1, LCPI0_63
mov r12, r3
cmp r0, r1
ldreq r0, LCPI0_92
b LBB0_2
LBB0_129:
ldr r1, LCPI0_65
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_114
str r0, [r5]
ldr r1, LCPI0_51
ldr r0, LCPI0_69
ldrb r2, [r7, #-47]
b LBB0_7
LBB0_131:
ldr r1, LCPI0_67
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_117
str r0, [r5]
ldr r1, LCPI0_45
ldr r0, LCPI0_103
ldrb r2, [r7, #-54]
b LBB0_7
LBB0_133:
ldr r1, LCPI0_69
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, [r7, #-52]
mov r1, #108
strb r1, [r0]
ldr r0, LCPI0_51
b LBB0_2
LBB0_135:
ldr r1, LCPI0_71
mov r12, r3
cmp r0, r1
ldreq r0, LCPI0_99
b LBB0_2
LBB0_136:
ldr r1, LCPI0_73
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, [r7, #-68]
mov r1, #132
ldrb r0, [r0]
bic r1, r1, r0
and r0, r0, #123
orr r0, r1, r0
ldr r1, [r7, #-72]
strb r0, [r1]
mov r1, #108
ldr r0, [r7, #-76]
strb r1, [r0, #3]
mov r1, #111
ldr r0, [r7, #-76]
strb r1, [r0, #4]
mov r1, #32
ldr r0, [r7, #-76]
strb r1, [r0, #6]
ldr r0, LCPI0_91
b LBB0_2
LBB0_138:
ldr r1, LCPI0_75
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r1, [r7, #-84]
ldr r0, [r7, #-80]
ldr r2, [r7, #-76]
str lr, [r7, #-100]
bl _objc_msgSend
ldr lr, [r7, #-100]
ldr r12, [r7, #-104]
ldr r0, LCPI0_27
b LBB0_2
LBB0_140:
ldr r1, LCPI0_77
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_122
str r0, [r5]
ldr r1, LCPI0_91
ldr r0, LCPI0_73
ldrb r2, [r7, #-63]
b LBB0_7
LBB0_142:
ldr r1, LCPI0_79
mov r12, r3
cmp r0, r1
bne LBB0_2
sub r0, sp, #4
mov sp, r0
str r0, [r7, #-88]
ldr r0, LCPI0_188
LPC0_8:
ldr r0, [pc, r0]
ldr r1, [r7, #-112]
ldr r0, [r0]
bl _objc_msgSend
ldr r1, [r7, #-108]
bl _objc_msgSend
ldr lr, [r7, #-100]
ldr r12, [r7, #-104]
ldr r1, [r7, #-88]
str r0, [r1]
ldr r0, LCPI0_189
LPC0_9:
ldr r0, [pc, r0]
str lr, [r7, #-84]
ldr r0, [r0]
str r0, [r7, #-80]
sub r0, sp, #16
mov sp, r0
str r0, [r7, #-76]
ldr r0, [r7, #-76]
mov r1, #33
strb r1, [r0, #12]
mov r1, #101
ldr r0, [r7, #-76]
strb r1, [r0, #1]
mov r1, #114
ldr r0, [r7, #-76]
strb r1, [r0, #9]
mov r1, #108
ldr r0, [r7, #-76]
strb r1, [r0, #2]
mov r1, #72
ldr r0, [r7, #-76]
strb r1, [r0]
mov r1, #100
ldr r0, [r7, #-76]
strb r1, [r0, #11]
ldr r0, [r7, #-76]
ldr r1, [r8]
add r0, r0, #7
str r0, [r7, #-72]
ldr r0, [r7, #-116]
str r0, [r7, #-68]
ldr r0, [r5]
ldr r2, LCPI0_176
str r2, [r8]
ldr r2, LCPI0_177
add r2, r1, r2
mul r3, r2, r1
mvn r1, r3
orr r1, r1, r10
cmn r1, #1
mov r1, #0
moveq r1, #1
strb r1, [r7, #-64]
bic r1, r3, r0
bic r0, r0, r3
ldr r2, LCPI0_178
ldr r3, LCPI0_100
orr r1, r0, r1
ldr r0, LCPI0_71
b LBB0_32
LBB0_144:
ldr r1, LCPI0_81
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, [r7, #-60]
strb r6, [r0]
ldr r0, [r5]
ldr r1, [r8]
ldr r2, LCPI0_156
str r2, [r8]
rsb r2, r1, #0
ldr r3, LCPI0_157
sub r2, r3, r2
mul r3, r2, r1
eor r1, r3, r10
tst r1, r3
mov r1, #0
moveq r1, #1
strb r1, [r7, #-54]
mul r1, r3, r0
ldr r2, LCPI0_158
ldr r3, LCPI0_67
ldr r0, LCPI0_45
b LBB0_117
LBB0_146:
ldr r1, LCPI0_83
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, [r5]
ldr r1, [r8]
ldr r2, LCPI0_135
str r2, [r8]
rsb r2, r1, #0
ldr r3, LCPI0_136
sub r2, r3, r2
mul r3, r2, r1
eor r1, r3, r10
eor r0, r0, r3
tst r1, r3
mov r1, #0
moveq r1, #1
strb r1, [r7, #-36]
bic r1, r3, r0
ldr r2, LCPI0_137
ldr r3, LCPI0_96
ldr r0, LCPI0_89
b LBB0_32
LBB0_148:
ldr r1, LCPI0_85
mov r12, r3
cmp r0, r1
ldreq r0, LCPI0_83
b LBB0_2
LBB0_149:
ldr r1, LCPI0_87
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, LCPI0_112
str r0, [r5]
ldr r1, LCPI0_27
ldr r0, LCPI0_75
ldrb r2, [r7, #-45]
b LBB0_7
LBB0_151:
ldr r1, LCPI0_89
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r1, [r7, #-44]
ldr r0, LCPI0_190
LPC0_10:
ldr r0, [pc, r0]
str lr, [r7, #-100]
bl _NSLog
ldr lr, [r7, #-100]
ldr r12, [r7, #-104]
ldr r0, [r5]
ldr r1, [r8]
ldr r2, LCPI0_132
str r2, [r8]
ldr r2, LCPI0_133
add r2, r1, r2
mul r3, r2, r1
mvn r3, r3
orr r3, r3, r10
cmn r3, #1
mov r3, #0
moveq r3, #1
strb r3, [r7, #-35]
mla r3, r2, r1, r0
ldr r1, LCPI0_134
ldr r2, LCPI0_35
ldr r0, LCPI0_47
cmp r3, r1
movlo r0, r2
b LBB0_2
LBB0_153:
ldr r1, LCPI0_179
ldr r2, [r7, #-92]
ldr r12, LCPI0_41
ldr r0, LCPI0_79
cmp r2, r1
movlt r0, r12
mov r12, r3
b LBB0_2
.align 2
.data_region
LCPI0_193:
.long L___stack_chk_guard$non_lazy_ptr-(LPC0_0+8)
.align 2
LCPI0_194:
.long l___unnamed_1-(LPC0_1+8)
.align 2
LCPI0_195:
.long l___unnamed_2-(LPC0_2+8)
.align 2
LCPI0_196:
.long 1795783692
.align 2
LCPI0_197:
.long 2582461727
.align 2
LCPI0_198:
.long L_OBJC_SELECTOR_REFERENCES_8-(LPC0_3+8)
.align 2
LCPI0_199:
.long L_OBJC_SELECTOR_REFERENCES_6-(LPC0_4+8)
.align 2
LCPI0_200:
.long L_OBJC_SELECTOR_REFERENCES_2-(LPC0_5+8)
.align 2
LCPI0_201:
.long L_OBJC_SELECTOR_REFERENCES_-(LPC0_6+8)
LBB0_163:
.end_data_region
ldr r1, LCPI0_91
mov r12, r3
cmp r0, r1
bne LBB0_2
ldr r0, [r7, #-68]
mov r1, #132
ldrb r0, [r0]
bic r1, r1, r0
and r0, r0, #123
orr r0, r1, r0
ldr r1, [r7, #-72]
strb r0, [r1]
mov r1, #108
ldr r0, [r7, #-76]
strb r1, [r0, #3]
mov r1, #111
ldr r0, [r7, #-76]
strb r1, [r0, #4]
mov r1, #32
ldr r0, [r7, #-76]
strb r1, [r0, #6]
ldr r0, [r5]
ldr r1, [r8]
ldr r2, LCPI0_170
str r2, [r8]
ldr r2, LCPI0_171
add r2, r1, r2
mul r3, r2, r1
eor r1, r3, r10
tst r1, r3
mov r1, #0
moveq r1, #1
strb r1, [r7, #-62]
sub r1, r0, r3
ldr r2, LCPI0_172
ldr r3, LCPI0_25
ldr r0, LCPI0_5
b LBB0_12
.align 2
.data_region
LCPI0_202:
.long 3203105646
.align 2
LCPI0_203:
.long l___unnamed_3-(LPC0_7+8)
.align 2
LCPI0_204:
.long 2148016130
.align 2
LCPI0_205:
.long 1808729366
.align 2
LCPI0_206:
.long 2349361576
.align 2
LCPI0_234:
.long 1960729009
.align 2
LCPI0_235:
.long 2396213886
.align 2
LCPI0_236:
.long 1960729010
.align 2
LCPI0_237:
.long 2483107261
LBB0_174:
.end_data_region
ldr r0, [r7, #-32]
subs r0, r4, r0
moveq r0, #0
subeq sp, r7, #24
popeq {r8, r10, r11}
popeq {r4, r5, r6, r7, lr}
moveq pc, lr
bl ___stack_chk_fail
.align 2
.data_region
LCPI0_207:
.long 2349361577
.align 2
LCPI0_208:
.long 1199402428
.align 2
LCPI0_209:
.long 90758257
.align 2
LCPI0_210:
.long 5594681
.align 2
LCPI0_211:
.long 3204671730
.align 2
LCPI0_212:
.long 2396213887
.align 2
LCPI0_213:
.long 3486617614
.align 2
LCPI0_214:
.long 3185943175
.align 2
LCPI0_215:
.long 2242672481
.align 2
LCPI0_216:
.long 387196098
.align 2
LCPI0_217:
.long 2483107262
.align 2
LCPI0_218:
.long 3507360371
.align 2
LCPI0_219:
.long 2699780125
.align 2
LCPI0_220:
.long 389152822
.align 2
LCPI0_221:
.long 2225375435
.align 2
LCPI0_222:
.long 3629125266
.align 2
LCPI0_223:
.long 2182405119
.align 2
LCPI0_224:
.long 2765133174
.align 2
LCPI0_225:
.long 3100684984
.align 2
LCPI0_226:
.long 2772787951
.align 2
LCPI0_227:
.long 1561429870
.align 2
LCPI0_228:
.long 351771330
.align 2
LCPI0_229:
.long 594457545
.align 2
LCPI0_230:
.long 2437964098
.align 2
LCPI0_231:
.long 301875767
.align 2
LCPI0_232:
.long 1589184483
.align 2
LCPI0_233:
.long 3312975667
.align 2
LCPI0_238:
.long 3452625270
.align 2
LCPI0_239:
.long 2787616215
.align 2
LCPI0_2:
.long 3203105646
LCPI0_5:
.long 1960729010
LCPI0_8:
.long 2699780124
LCPI0_9:
.long 2765133173
LCPI0_10:
.long 2772787950
LCPI0_11:
.long 2787616214
LCPI0_12:
.long 2793937776
LCPI0_13:
.long 2967639213
LCPI0_14:
.long 2999882879
LCPI0_15:
.long 3011893353
LCPI0_16:
.long 3080060885
LCPI0_17:
.long 3087153813
LCPI0_18:
.long 3159577750
LCPI0_19:
.long 3203105645
LCPI0_20:
.long 1808729365
LCPI0_21:
.long 1808729366
LCPI0_22:
.long 1804400680
LCPI0_23:
.long 1804400681
LCPI0_24:
.long 1602002133
LCPI0_25:
.long 1602002134
LCPI0_26:
.long 1527622292
LCPI0_27:
.long 1527622293
LCPI0_28:
.long 1450653301
LCPI0_29:
.long 1450653302
LCPI0_30:
.long 1082747144
LCPI0_31:
.long 1082747145
LCPI0_32:
.long 1032831941
LCPI0_33:
.long 1032831942
LCPI0_34:
.long 1014452996
LCPI0_35:
.long 1014452997
LCPI0_36:
.long 899161826
LCPI0_37:
.long 899161827
LCPI0_38:
.long 855895274
LCPI0_39:
.long 855895275
LCPI0_40:
.long 685261646
LCPI0_41:
.long 685261647
LCPI0_42:
.long 592927173
LCPI0_43:
.long 592927174
LCPI0_44:
.long 539285428
LCPI0_45:
.long 539285429
LCPI0_46:
.long 433410556
LCPI0_47:
.long 433410557
LCPI0_48:
.long 387196097
LCPI0_49:
.long 387196098
LCPI0_50:
.long 326264679
LCPI0_51:
.long 326264680
LCPI0_52:
.long 158884489
LCPI0_53:
.long 158884490
LCPI0_54:
.long 90758256
LCPI0_55:
.long 90758257
LCPI0_56:
.long 5594680
LCPI0_57:
.long 5594681
LCPI0_58:
.long 4229572157
LCPI0_59:
.long 4229572158
LCPI0_60:
.long 4217617261
LCPI0_61:
.long 4217617262
LCPI0_62:
.long 4195474730
LCPI0_63:
.long 4195474731
LCPI0_64:
.long 4151878004
LCPI0_65:
.long 4151878005
LCPI0_66:
.long 4020969146
LCPI0_67:
.long 4020969147
LCPI0_68:
.long 3944195736
LCPI0_69:
.long 3944195737
LCPI0_70:
.long 3875094687
LCPI0_71:
.long 3875094688
LCPI0_72:
.long 3716443739
LCPI0_73:
.long 3716443740
LCPI0_74:
.long 3626536473
LCPI0_75:
.long 3626536474
LCPI0_76:
.long 3611578844
LCPI0_77:
.long 3611578845
LCPI0_78:
.long 3584124949
LCPI0_79:
.long 3584124950
LCPI0_80:
.long 3507360370
LCPI0_81:
.long 3507360371
LCPI0_82:
.long 3480029039
LCPI0_83:
.long 3480029040
LCPI0_84:
.long 3452625269
LCPI0_85:
.long 3452625270
LCPI0_86:
.long 3403365249
LCPI0_87:
.long 3403365250
LCPI0_88:
.long 3349522590
LCPI0_89:
.long 3349522591
LCPI0_90:
.long 3204671730
LCPI0_91:
.long 3343419812
LCPI0_92:
.long 3159577751
LCPI0_93:
.long 3087153814
LCPI0_94:
.long 3080060886
LCPI0_95:
.long 3011893354
LCPI0_96:
.long 2999882880
LCPI0_97:
.long 2967639214
LCPI0_98:
.long 2793937777
LCPI0_99:
.long 2787616215
LCPI0_100:
.long 2772787951
LCPI0_101:
.long 2765133174
LCPI0_102:
.long 2699780125
LCPI0_103:
.long 2483107262
LCPI0_104:
.long 2396213887
LCPI0_106:
.long 2148016130
LCPI0_107:
.long 1591507483
LCPI0_109:
.long 1990432
LCPI0_110:
.long 3032672794
LCPI0_112:
.long 837055408
LCPI0_113:
.long 2419098278
LCPI0_114:
.long 1401943185
LCPI0_115:
.long 435515348
LCPI0_116:
.long 2027217078
LCPI0_117:
.long 3139072736
LCPI0_118:
.long 2769373406
LCPI0_119:
.long 2502712722
LCPI0_120:
.long 4131066152
LCPI0_121:
.long 770481134
LCPI0_122:
.long 1682118419
LCPI0_124:
.long 1706203531
LCPI0_125:
.long 95446203
LCPI0_126:
.long 4187824195
LCPI0_127:
.long 3119239729
LCPI0_132:
.long 3585072951
LCPI0_133:
.long 3812753285
LCPI0_134:
.long 1602712584
LCPI0_135:
.long 414969326
LCPI0_136:
.long 2056636695
LCPI0_137:
.long 2801412525
LCPI0_138:
.long 1423231007
LCPI0_139:
.long 2913746821
LCPI0_140:
.long 1467431182
LCPI0_141:
.long 2149660875
LCPI0_142:
.long 2048098867
LCPI0_143:
.long 1837755025
LCPI0_144:
.long 2746015601
LCPI0_145:
.long 3575548357
LCPI0_146:
.long 2160046070
LCPI0_147:
.long 3584308228
LCPI0_148:
.long 18030581
LCPI0_149:
.long 3480965696
LCPI0_153:
.long 418520771
LCPI0_154:
.long 4321785
LCPI0_155:
.long 1776238717
LCPI0_156:
.long 1431473893
LCPI0_157:
.long 263115597
LCPI0_158:
.long 3387070532
LCPI0_162:
.long 1040526033
LCPI0_163:
.long 1553473775
LCPI0_164:
.long 1327459965
LCPI0_165:
.long 3310733199
LCPI0_166:
.long 2622801701
LCPI0_167:
.long 830503593
LCPI0_168:
.long 3464463702
LCPI0_169:
.long 243492604
LCPI0_170:
.long 471125121
LCPI0_171:
.long 2382378791
LCPI0_172:
.long 50661614
LCPI0_176:
.long 3661559001
LCPI0_177:
.long 3558070813
LCPI0_178:
.long 899850280
LCPI0_179:
.long 939771122
LCPI0_188:
.long L_OBJC_CLASSLIST_REFERENCES_$_-(LPC0_8+8)
LCPI0_189:
.long L_OBJC_CLASSLIST_REFERENCES_$_3-(LPC0_9+8)
LCPI0_190:
.long L__unnamed_cfstring_-(LPC0_10+8)
LCPI0_191:
.long L_OBJC_CLASSLIST_REFERENCES_$_-(LPC0_11+8)
LCPI0_192:
.long L__unnamed_cfstring_-(LPC0_12+8)
.end_data_region
.section __DATA,__objc_classrefs,regular,no_dead_strip
.align 2
L_OBJC_CLASSLIST_REFERENCES_$_:
.long _OBJC_CLASS_$_NSAutoreleasePool
.section __TEXT,__objc_methname,cstring_literals
L_OBJC_METH_VAR_NAME_:
.asciz "alloc"
.section __DATA,__objc_selrefs,literal_pointers,no_dead_strip
.align 2
L_OBJC_SELECTOR_REFERENCES_:
.long L_OBJC_METH_VAR_NAME_
.section __TEXT,__objc_methname,cstring_literals
L_OBJC_METH_VAR_NAME_1:
.asciz "init"
.section __DATA,__objc_selrefs,literal_pointers,no_dead_strip
.align 2
L_OBJC_SELECTOR_REFERENCES_2:
.long L_OBJC_METH_VAR_NAME_1
.section __TEXT,__cstring,cstring_literals
L_.str:
.asciz "%@"
.section __DATA,__cfstring
.align 2
L__unnamed_cfstring_:
.long ___CFConstantStringClassReference
.long 1992
.long L_.str
.long 2
.section __DATA,__objc_classrefs,regular,no_dead_strip
.align 2
L_OBJC_CLASSLIST_REFERENCES_$_3:
.long _OBJC_CLASS_$_NSString
.section __TEXT,__objc_methname,cstring_literals
L_OBJC_METH_VAR_NAME_5:
.asciz "stringWithUTF8String:"
.section __DATA,__objc_selrefs,literal_pointers,no_dead_strip
.align 2
L_OBJC_SELECTOR_REFERENCES_6:
.long L_OBJC_METH_VAR_NAME_5
.section __TEXT,__objc_methname,cstring_literals
L_OBJC_METH_VAR_NAME_7:
.asciz "drain"
.section __DATA,__objc_selrefs,literal_pointers,no_dead_strip
.align 2
L_OBJC_SELECTOR_REFERENCES_8:
.long L_OBJC_METH_VAR_NAME_7
.section __TEXT,__const
l___unnamed_3:
.asciz "\tjC\355\321\370\244\323\274C}\020\305\245"
.section __DATA,__data
.align 2
l___unnamed_2:
.long 3562049968
.align 2
l___unnamed_1:
.long 782234807
.section __DATA,__objc_imageinfo,regular,no_dead_strip
L_OBJC_IMAGE_INFO:
.long 0
.long 0
.section __DATA,__nl_symbol_ptr,non_lazy_symbol_pointers
.align 2
L___stack_chk_guard$non_lazy_ptr:
.indirect_symbol ___stack_chk_guard
.long 0
.subsections_via_symbols