- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
.text:00018584 EXPORT get_msg_sequence
.text:00018584 get_msg_sequence ; CODE XREF: IPC_send_singleIPC+6p
.text:00018584 ; __IPC_send_singleIPC+6p
.text:00018584 LDR R0, =0x7800C
.text:00018586 PUSH {R4,LR}
.text:00018588 ADD R0, PC
.text:0001858A LDR R0, [R0]
.text:0001858C LDRB R3, [R0]
.text:0001858E CBZ R3, loc_185A2
.text:00018590 LDR R1, =(aRil - 0x1859C)
.text:00018592 MOVS R0, #6
.text:00018594 LDR R2, =(aS_0 - 0x1859E)
.text:00018596 LDR R3, =(aGet_msg_sequen - 0x185A0)
.text:00018598 ADD R1, PC ; "RIL"
.text:0001859A ADD R2, PC ; "%s()"
.text:0001859C ADD R3, PC ; "get_msg_sequence"
.text:0001859E BLX __android_log_print
.text:000185A2
.text:000185A2 loc_185A2 ; CODE XREF: get_msg_sequence+Aj
.text:000185A2 LDR R3, =(unk_98E7E - 0x185A8)
.text:000185A4 ADD R3, PC
.text:000185A6 LDRB R2, [R3]
.text:000185A8 CMP R2, #0xFD
.text:000185AA BLS loc_185B0
.text:000185AC MOVS R2, #0
.text:000185AE B loc_185B2
.text:000185B0 ; ---------------------------------------------------------------------------
.text:000185B0
.text:000185B0 loc_185B0 ; CODE XREF: get_msg_sequence+26j
.text:000185B0 ADDS R2, #1
.text:000185B2
.text:000185B2 loc_185B2 ; CODE XREF: get_msg_sequence+2Aj
.text:000185B2 LDR R1, =(unk_98E7E - 0x185BA)
.text:000185B4 STRB R2, [R3]
.text:000185B6 ADD R1, PC
.text:000185B8 LDRB R0, [R1]
.text:000185BA POP {R4,PC}
.text:000185BA ; End of function get_msg_sequence
Потрясающе эффективный выхлоп GCC. Компилировалось, вероятно, все-таки с включенной оптимизацией.
Например, последовательность LDR R1/ADD R1,PC/LDRB R0, [R1] в конце вообще лишняя: достаточно было использовать R0 вместо R2.