考察
逆アセンブルの結果をここで少し見てみたいと思います。
0: ea000007 b 0x24
4: ea000007 b 0x28
8: 4e4f4765 cdpmi 7, 4, cr4, cr15, cr5, {3}
c: 4d52422e lfmmi f4, 2, [r2,
10: 00000024 andeq r0, r0, r4, lsr
14: 30303131 eorscc r3, r0, r1, lsr r1
18: 30303131 eorscc r3, r0, r1, lsr r1
1c: 33333631 teqcc r3,
20: 00000000 andeq r0, r0, r0
24: ea000000 b 0x2c
28: ea000001 b 0x34
2c: e3a06000 mov r6,
30: ea000003 b 0x44
34: e3a0605c mov r6,
38: ea00000e b 0x78
3c: e59f01e8 ldr r0, [pc,
40: e590f000 ldr pc, [r0]
44: ee100fb0 mrc 15, 0, r0, cr0, cr0, {5}
48: e2001003 and r1, r0,
4c: e3510000 cmp r1,
50: 1afffff9 bne 0x3c
54: e2001cff and r1, r0,
58: e3510000 cmp r1,
5c: 1afffff6 bne 0x3c
60: e59f11c8 ldr r1, [pc,
64: e59f21c8 ldr r2, [pc,
68: e5913000 ldr r3, [r1]
6c: e1520003 cmp r2, r3
70: 1a000000 bne 0x78
74: eafffff0 b 0x3c
78: e3a00050 mov r0,
7c: e2500001 subs r0, r0,
80: 1afffffd bne 0x7c
84: e10f0000 mrs r0, CPSR
88: e3c0001f bic r0, r0,
8c: e3800013 orr r0, r0,
90: e38000c0 orr r0, r0,
94: e3c00c02 bic r0, r0,
98: e121f000 msr CPSR_c, r0
9c: ee110f10 mrc 15, 0, r0, cr1, cr0, {0}
a0: e3c00005 bic r0, r0,
a4: e3c00b06 bic r0, r0,
a8: ee010f10 mcr 15, 0, r0, cr1, cr0, {0}
ac: e59f1184 ldr r1, [pc,
b0: e5912000 ldr r2, [r1]
b4: e3c22001 bic r2, r2,
b8: e5812000 str r2, [r1]
bc: e59f1178 ldr r1, [pc,
c0: e3a02801 mov r2,
c4: e5913050 ldr r3, [r1,
c8: e3c33803 bic r3, r3,
cc: e1834002 orr r4, r3, r2
d0: e5814050 str r4, [r1,
d4: e3a02000 mov r2,
d8: e5913050 ldr r3, [r1,
dc: e3c33003 bic r3, r3,
e0: e1834002 orr r4, r3, r2
e4: e5814050 str r4, [r1,
e8: e3a02c01 mov r2,
ec: e5913054 ldr r3, [r1,
f0: e3c330f0 bic r3, r3,
f4: e3c33c03 bic r3, r3,
f8: e1834002 orr r4, r3, r2
fc: e5814054 str r4, [r1,
100: e3a02a01 mov r2,
104: e5913054 ldr r3, [r1,
108: e3c33a03 bic r3, r3,
10c: e1834002 orr r4, r3, r2
110: e5814054 str r4, [r1,
114: e59f1120 ldr r1, [pc,
118: e59122c0 ldr r2, [r1,
11c: e3a03040 mov r3,
120: e1822003 orr r2, r2, r3
124: e58122c0 str r2, [r1,
128: e5912060 ldr r2, [r1,
12c: e3a03040 mov r3,
130: e1822003 orr r2, r2, r3
134: e5812060 str r2, [r1,
138: e5912068 ldr r2, [r1,
13c: e3a03020 mov r3,
140: e1822003 orr r2, r2, r3
144: e5812068 str r2, [r1,
148: e59fd0f0 ldr sp, [pc,
14c: e59f30f0 ldr r3, [pc,
150: e5932000 ldr r2, [r3]
154: e30f1fff movw r1,
158: e0010002 and r0, r1, r2
15c: e30e1fe8 movw r1,
160: e1500001 cmp r0, r1
164: 0a00009e beq 0x3e4
168: e3a00e7d mov r0,
16c: e2500001 subs r0, r0,
170: 1afffffd bne 0x16c
174: e59fd0cc ldr sp, [pc,
178: e3a01507 mov r1,
17c: e3a02000 mov r2,
180: e5812000 str r2, [r1]
184: e59f10c0 ldr r1, [pc,
188: e5912000 ldr r2, [r1]
18c: e3a03001 mov r3,
190: e1822003 orr r2, r2, r3
194: e5812000 str r2, [r1]
198: e59f10b0 ldr r1, [pc,
19c: e5912000 ldr r2, [r1]
1a0: e3a03001 mov r3,
1a4: e1822003 orr r2, r2, r3
1a8: e5812000 str r2, [r1]
1ac: e356005c cmp r6,
1b0: 0a000042 beq 0x2c0
1b4: e3a0006f mov r0,
1b8: eb000047 bl 0x2dc
1bc: eafffffe b 0x1bc
ぱっと見た感じでは、24:の
24: ea000000 b 0x2c
からが実行コードのように見えるけど、いきなりb命令(無条件分岐)で始まり、しかもb命令が2回続けてでるとかは普通に考えるとありえない気がする。
あと、4c:と50:にはcmpからのbneがあるのでここは間違いなく実行コードだろう。
4c: e3510000 cmp r1,
50: 1afffff9 bne 0x3c
そう考えると、開始は24:で、何か理由があってb命令で始まっているのかもしれない。
いずれにせよ、気合入れて見てみないとどこで何しているか分からんなこれは。