[*] Binary protection state of libcjson.so.1.7.7
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH Symbols
[*] Function sprintf tear down of libcjson.so.1.7.7
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcjson.so.1.7.7 @ 0x27a4 */
| #include <stdint.h>
|
; (fcn) sym.cJSON_Version () | void cJSON_Version () {
| int32_t var_0h;
| int32_t var_8h;
0x000027a4 push {r0, r1, r4, lr} |
0x000027a8 ldr r4, [pc, 0x2c] | r4 = *(0x27d8);
0x000027ac ldr r1, [pc, 0x2c] | r1 = *(0x27dc);
0x000027b0 add r4, pc, r4 | r4 = pc + r4;
0x000027b4 add r4, r4, 8 | r4 += 8;
0x000027b8 mov r3, 7 | r3 = 7;
0x000027bc str r3, [sp] | *(sp) = r3;
0x000027c0 mov r2, 1 | r2 = 1;
0x000027c4 add r1, pc, r1 | r1 = pc + r1;
0x000027c8 mov r0, r4 | r0 = r4;
0x000027cc bl 0x1608 | sprintf (r0, r1, r2)
0x000027d0 mov r0, r4 | r0 = r4;
0x000027d4 add sp, sp, 8 |
0x000027d8 pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcjson.so.1.7.7 @ 0x1fe4 */
| #include <stdint.h>
|
; (fcn) sym.print_value () | void print_value (uint32_t arg1, void * arg2) {
| int32_t var_0h;
| int32_t var_0h_3;
| char * dest;
| int32_t var_1h;
| int32_t var_2ch;
| int8_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
0x00001fe4 cmp r0, 0 |
0x00001fe8 clz r3, r1 | r3 &= r1;
0x00001fec lsr r3, r3, 5 | r3 >>= 5;
0x00001ff0 push {r4, r5, r6, r7, r8, sb, lr} |
| if (r0 == 0) {
0x00001ff4 movne r7, r3 | r7 = r3;
| }
| if (r0 != 0) {
0x00001ff8 moveq r7, 1 | r7 = 1;
| }
0x00001ffc cmp r7, 0 |
0x00002000 sub sp, sp, 0x2c |
0x00002004 beq 0x2010 |
| while (r5 != 1) {
| label_0:
0x00002008 mov r0, 0 | r0 = 0;
0x0000200c b 0x207c | goto label_1;
0x00002010 ldrb r5, [r0, 0xc] | r5 = *((r0 + 0xc));
0x00002014 mov r4, r1 | r4 = r1;
0x00002018 cmp r5, 8 |
0x0000201c mov r6, r0 | r6 = r0;
| if (r5 == 8) {
0x00002020 beq 0x2114 | goto label_12;
| }
| if (r5 > 8) {
0x00002024 bgt 0x2060 | goto label_13;
| }
0x00002028 cmp r5, 2 |
| if (r5 == 2) {
0x0000202c beq 0x20f4 | goto label_14;
| }
0x00002030 cmp r5, 4 |
| if (r5 == 4) {
0x00002034 beq 0x20cc | goto label_15;
| }
0x00002038 cmp r5, 1 |
0x0000203c bne 0x2008 |
| }
0x00002040 mov r1, 6 | r1 = 6;
0x00002044 mov r0, r4 | r0 = r4;
0x00002048 bl 0x1be0 | r0 = ensure ();
0x0000204c cmp r0, 0 |
| if (r0 == 0) {
0x00002050 beq 0x2008 | goto label_0;
| }
0x00002054 ldr r1, [pc, 0x4ac] | r1 = *(0x2504);
0x00002058 add r1, pc, r1 | r1 = pc + r1;
0x0000205c b 0x20e8 | goto label_2;
| label_13:
0x00002060 cmp r5, 0x20 |
| if (r5 == 0x20) {
0x00002064 beq 0x2218 | goto label_16;
| }
| if (r5 > 0x20) {
0x00002068 bgt 0x2084 | goto label_17;
| }
0x0000206c cmp r5, 0x10 |
| if (r5 != 0x10) {
0x00002070 bne 0x2008 | goto label_0;
| }
0x00002074 ldr r0, [r0, 0x10] | r0 = *((r0 + 0x10));
0x00002078 bl 0x1e0c | print_string_ptr ();
| label_1:
0x0000207c add sp, sp, 0x2c |
0x00002080 pop {r4, r5, r6, r7, r8, sb, pc} |
| label_17:
0x00002084 cmp r5, 0x40 |
| if (r5 == 0x40) {
0x00002088 beq 0x2308 | goto label_18;
| }
0x0000208c cmp r5, 0x80 |
| if (r5 != 0x80) {
0x00002090 bne 0x2008 | goto label_0;
| }
0x00002094 ldr r0, [r0, 0x10] | r0 = *((r0 + 0x10));
0x00002098 cmp r0, 0 |
| if (r0 == 0) {
0x0000209c beq 0x2008 | goto label_0;
| }
0x000020a0 bl 0x1638 | r0 = strlen (r0);
0x000020a4 add r5, r0, 1 | r5 = r0 + 1;
0x000020a8 mov r1, r5 | r1 = r5;
0x000020ac mov r0, r4 | r0 = r4;
0x000020b0 bl 0x1be0 | r0 = ensure ();
0x000020b4 cmp r0, 0 |
| if (r0 == 0) {
0x000020b8 beq 0x2008 | goto label_0;
| }
0x000020bc mov r2, r5 | r2 = r5;
0x000020c0 ldr r1, [r6, 0x10] | r1 = *((r6 + 0x10));
0x000020c4 bl 0x1500 | memcpy (r0, r1, r2);
0x000020c8 b 0x20ec | goto label_3;
| label_15:
0x000020cc mov r1, 5 | r1 = 5;
0x000020d0 mov r0, r4 | r0 = r4;
0x000020d4 bl 0x1be0 | r0 = ensure ();
0x000020d8 cmp r0, 0 |
| if (r0 == 0) {
0x000020dc beq 0x2008 | goto label_0;
| }
0x000020e0 ldr r1, [pc, 0x424] | r1 = *(0x2508);
0x000020e4 add r1, pc, r1 | r1 = pc + r1;
| label_2:
0x000020e8 bl 0x14d0 | strcpy (r0, r1);
| label_3:
0x000020ec mov r0, 1 | r0 = 1;
0x000020f0 b 0x207c | goto label_1;
| label_14:
0x000020f4 mov r1, 5 | r1 = 5;
0x000020f8 mov r0, r4 | r0 = r4;
0x000020fc bl 0x1be0 | r0 = ensure ();
0x00002100 cmp r0, 0 |
| if (r0 == 0) {
0x00002104 beq 0x2008 | goto label_0;
| }
0x00002108 ldr r1, [pc, 0x400] | r1 = *(0x250c);
0x0000210c add r1, pc, r1 | r1 = pc + r1;
0x00002110 b 0x20e8 | goto label_2;
| label_12:
0x00002114 ldrd r8, sb, [r0, 0x18] | __asm ("ldrd r8, sb, [r0, 0x18]");
0x00002118 mov r2, 0 | r2 = 0;
0x0000211c mov r3, 0 | r3 = 0;
0x00002120 mov r0, r8 | r0 = r8;
0x00002124 mov r1, sb | r1 = sb;
0x00002128 bl 0x44ac | aeabi_dmul ();
0x0000212c mov r2, 0 | r2 = 0;
0x00002130 mov r3, 0 | r3 = 0;
0x00002134 bl 0x49e4 | aeabi_dcmpeq ();
0x00002138 add r6, sp, 0xc | r6 += dest;
0x0000213c cmp r0, 0 |
| if (r0 != 0) {
0x00002140 bne 0x2190 | goto label_19;
| }
0x00002144 ldr r1, [pc, 0x3c8] | r1 = *(0x2510);
0x00002148 mov r0, r6 | r0 = r6;
0x0000214c add r1, pc, r1 | r1 = pc + r1;
0x00002150 bl 0x14d0 | strcpy (r0, r1);
0x00002154 mov r5, 4 | r5 = 4;
| label_4:
0x00002158 add r1, r5, 1 | r1 += var_1h;
0x0000215c mov r0, r4 | r0 = r4;
0x00002160 bl 0x1be0 | r0 = ensure ();
0x00002164 cmp r0, 0 |
| if (r0 != 0) {
0x00002168 movne r3, 0 | r3 = 0;
| goto label_20;
| }
| if (r0 == 0) {
| label_20:
0x0000216c beq 0x2008 | goto label_0;
| }
| label_5:
0x00002170 cmp r5, r3 |
| if (r5 != r3) {
0x00002174 bne 0x2208 | goto label_21;
| }
0x00002178 mov r3, 0 | r3 = 0;
0x0000217c strb r3, [r0, r5] | *((r0 + r5)) = r3;
0x00002180 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00002184 add r5, r3, r5 | r5 = r3 + r5;
0x00002188 str r5, [r4, 8] | *((r4 + 8)) = r5;
0x0000218c b 0x20ec | goto label_3;
| label_19:
0x00002190 ldr r1, [pc, 0x380] | r1 = *(0x2514);
0x00002194 mov r2, r8 | r2 = r8;
0x00002198 mov r3, sb | r3 = sb;
0x0000219c add r1, pc, r1 | r1 = pc + r1;
0x000021a0 mov r0, r6 | r0 = r6;
0x000021a4 bl 0x1608 | sprintf (r0, r1, r2)
0x000021a8 ldr r1, [pc, 0x36c] | r1 = *(0x2518);
0x000021ac mov r2, sp | r2 = sp;
0x000021b0 add r1, pc, r1 | r1 = pc + r1;
0x000021b4 mov r5, r0 | r5 = r0;
0x000021b8 mov r0, r6 | r0 = r6;
0x000021bc bl 0x15a8 | r0 = sscanf (r0, r1, r2);
0x000021c0 cmp r0, 1 |
| if (r0 == 1) {
0x000021c4 bne 0x21e0 |
0x000021c8 ldrd r2, r3, [sp] | __asm ("ldrd r2, r3, [sp]");
0x000021cc mov r0, r8 | r0 = r8;
0x000021d0 mov r1, sb | r1 = sb;
0x000021d4 bl 0x49e4 | r0 = aeabi_dcmpeq ();
0x000021d8 cmp r0, 0 |
| if (r0 != 0) {
0x000021dc bne 0x21fc | goto label_22;
| }
| }
0x000021e0 ldr r1, [pc, 0x338] | r1 = *(0x251c);
0x000021e4 mov r2, r8 | r2 = r8;
0x000021e8 mov r3, sb | r3 = sb;
0x000021ec add r1, pc, r1 | r1 = pc + r1;
0x000021f0 mov r0, r6 | r0 = r6;
0x000021f4 bl 0x1608 | r0 = sprintf (r0, r1, r2)
0x000021f8 mov r5, r0 | r5 = r0;
| label_22:
0x000021fc cmp r5, 0x19 |
| if (r5 > 0x19) {
0x00002200 bhi 0x2008 | goto label_0;
| }
0x00002204 b 0x2158 | goto label_4;
| label_21:
0x00002208 ldrb r2, [r6, r3] | r2 = *((r6 + r3));
0x0000220c strb r2, [r0, r3] | *((r0 + r3)) = r2;
0x00002210 add r3, r3, 1 | r3++;
0x00002214 b 0x2170 | goto label_5;
| label_16:
0x00002218 ldr r6, [r0, 8] | r6 = *((r0 + 8));
0x0000221c mov r1, 1 | r1 = 1;
0x00002220 mov r0, r4 | r0 = r4;
0x00002224 bl 0x1be0 | r0 = ensure ();
0x00002228 cmp r0, 0 |
| if (r0 == 0) {
0x0000222c beq 0x2008 | goto label_0;
| }
0x00002230 mov r3, 0x5b | r3 = 0x5b;
0x00002234 strb r3, [r0] | *(r0) = r3;
0x00002238 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000223c mov r8, 0x2c | r8 = 0x2c;
0x00002240 add r3, r3, 1 | r3++;
0x00002244 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x00002248 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0000224c add r3, r3, 1 | r3++;
0x00002250 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| label_6:
0x00002254 cmp r6, 0 |
| if (r6 != 0) {
0x00002258 bne 0x228c | goto label_23;
| }
0x0000225c mov r1, 2 | r1 = 2;
0x00002260 mov r0, r4 | r0 = r4;
0x00002264 bl 0x1be0 | r0 = ensure ();
0x00002268 cmp r0, 0 |
| if (r0 == 0) {
0x0000226c movne r3, 0x5d | r3 = 0x5d;
| }
| if (r0 == 0) {
0x00002270 strbne r3, [r0] | *(r0) = r3;
| }
| if (r0 != 0) {
0x00002274 strbne r6, [r0, 1] | *((r0 + 1)) = r6;
| goto label_24;
| }
| if (r0 == 0) {
| label_24:
0x00002278 beq 0x2008 | goto label_0;
| }
| label_7:
0x0000227c ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00002280 sub r3, r3, 1 | r3--;
0x00002284 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x00002288 b 0x20ec | goto label_3;
| label_23:
0x0000228c mov r1, r4 | r1 = r4;
0x00002290 mov r0, r6 | r0 = r6;
0x00002294 bl 0x1fe4 | r0 = print_value ();
0x00002298 cmp r0, 0 |
| if (r0 == 0) {
0x0000229c beq 0x2008 | goto label_0;
| }
0x000022a0 mov r0, r4 | r0 = r4;
0x000022a4 bl 0x1bb0 | update_offset ();
0x000022a8 ldr r3, [r6] | r3 = *(r6);
0x000022ac cmp r3, 0 |
| if (r3 == 0) {
0x000022b0 beq 0x2300 | goto label_25;
| }
0x000022b4 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000022b8 mov r0, r4 | r0 = r4;
0x000022bc cmp r3, 0 |
| if (r3 != 0) {
0x000022c0 moveq sb, 1 | sb = 1;
| }
| if (r3 == 0) {
0x000022c4 movne sb, 2 | sb = 2;
| }
0x000022c8 add r1, sb, 1 | r1 = sb + 1;
0x000022cc bl 0x1be0 | r0 = ensure ();
0x000022d0 cmp r0, 0 |
| if (r0 == 0) {
0x000022d4 beq 0x2008 | goto label_0;
| }
0x000022d8 strb r8, [r0] | *(r0) = r8;
0x000022dc ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000022e0 cmp r3, 0 |
| if (r3 != 0) {
0x000022e4 addeq r3, r0, 1 | r3 = r0 + 1;
| }
| if (r3 == 0) {
0x000022e8 addne r3, r0, 2 | r3 = r0 + 2;
| }
| if (r3 == 0) {
0x000022ec strbne r5, [r0, 1] | *((r0 + 1)) = r5;
| }
0x000022f0 strb r7, [r3] | *(r3) = r7;
0x000022f4 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x000022f8 add r3, r3, sb | r3 += sb;
0x000022fc str r3, [r4, 8] | *((r4 + 8)) = r3;
| label_25:
0x00002300 ldr r6, [r6] | r6 = *(r6);
0x00002304 b 0x2254 | goto label_6;
| label_18:
0x00002308 ldr r3, [r1, 0x14] | r3 = *((r1 + 0x14));
0x0000230c ldr r5, [r0, 8] | r5 = *((r0 + 8));
0x00002310 cmp r3, 0 |
| if (r3 != 0) {
0x00002314 moveq r7, 1 | r7 = 1;
| }
| if (r3 == 0) {
0x00002318 movne r7, 2 | r7 = 2;
| }
0x0000231c add r1, r7, 1 | r1 = r7 + 1;
0x00002320 mov r0, r4 | r0 = r4;
0x00002324 bl 0x1be0 | r0 = ensure ();
0x00002328 cmp r0, 0 |
| if (r0 == 0) {
0x0000232c beq 0x2008 | goto label_0;
| }
0x00002330 mov r3, 0x7b | r3 = 0x7b;
0x00002334 strb r3, [r0] | *(r0) = r3;
0x00002338 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0000233c ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x00002340 cmp r3, 0 |
| if (r3 == 0) {
0x00002344 movne r3, 0xa | r3 = 0xa;
| }
0x00002348 add r2, r2, 1 | r2++;
0x0000234c str r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
| if (r3 == 0) {
0x00002350 strbne r3, [r0, 1] | *((r0 + 1)) = r3;
| }
0x00002354 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00002358 mov r8, 0x3a | r8 = 0x3a;
0x0000235c add r3, r3, r7 | r3 += r7;
0x00002360 mov r7, 9 | r7 = 9;
0x00002364 str r3, [r4, 8] | *((r4 + 8)) = r3;
| label_8:
0x00002368 cmp r5, 0 |
0x0000236c ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
| if (r5 != 0) {
0x00002370 bne 0x23b8 | goto label_26;
| }
0x00002374 cmp r3, 0 |
| if (r3 == 0) {
0x00002378 ldrne r1, [r4, 0xc] | r1 = *((r4 + 0xc));
| }
| if (r3 != 0) {
0x0000237c moveq r1, 2 | r1 = 2;
| }
| if (r3 == 0) {
0x00002380 addne r1, r1, 1 | r1++;
| }
0x00002384 mov r0, r4 | r0 = r4;
0x00002388 bl 0x1be0 | r0 = ensure ();
0x0000238c cmp r0, 0 |
| if (r0 == 0) {
0x00002390 beq 0x2008 | goto label_0;
| }
0x00002394 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00002398 cmp r3, 0 |
0x0000239c mov r3, r0 | r3 = r0;
| if (r3 != 0) {
0x000023a0 bne 0x2500 | goto label_27;
| }
| label_10:
0x000023a4 mov r2, 0x7d | r2 = 0x7d;
0x000023a8 strb r2, [r3] | *(r3) = r2;
0x000023ac mov r2, 0 | r2 = 0;
0x000023b0 strb r2, [r3, 1] | *((r3 + 1)) = r2;
0x000023b4 b 0x227c | goto label_7;
| label_26:
0x000023b8 cmp r3, 0 |
| if (r3 == 0) {
0x000023bc beq 0x23f4 | goto label_28;
| }
0x000023c0 ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x000023c4 mov r0, r4 | r0 = r4;
0x000023c8 bl 0x1be0 | r0 = ensure ();
0x000023cc cmp r0, 0 |
| if (r0 == 0) {
0x000023d0 beq 0x2008 | goto label_0;
| }
0x000023d4 mov r2, r0 | r2 = r0;
| label_9:
0x000023d8 ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x000023dc sub r3, r2, r0 | r3 = r2 - r0;
0x000023e0 cmp r3, r1 |
| if (r3 <= r1) {
0x000023e4 blo 0x24dc | goto label_29;
| }
0x000023e8 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x000023ec add r3, r3, r1 | r3 += r1;
0x000023f0 str r3, [r4, 8] | *((r4 + 8)) = r3;
| label_28:
0x000023f4 mov r1, r4 | r1 = r4;
0x000023f8 ldr r0, [r5, 0x20] | r0 = *((r5 + 0x20));
0x000023fc bl 0x1e0c | r0 = print_string_ptr ();
0x00002400 cmp r0, 0 |
| if (r0 == 0) {
0x00002404 beq 0x2008 | goto label_0;
| }
0x00002408 mov r0, r4 | r0 = r4;
0x0000240c bl 0x1bb0 | update_offset ();
0x00002410 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00002414 mov r0, r4 | r0 = r4;
0x00002418 cmp r3, 0 |
| if (r3 != 0) {
0x0000241c moveq r6, 1 | r6 = 1;
| }
| if (r3 == 0) {
0x00002420 movne r6, 2 | r6 = 2;
| }
0x00002424 mov r1, r6 | r1 = r6;
0x00002428 bl 0x1be0 | r0 = ensure ();
0x0000242c cmp r0, 0 |
| if (r0 == 0) {
0x00002430 beq 0x2008 | goto label_0;
| }
0x00002434 strb r8, [r0] | *(r0) = r8;
0x00002438 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0000243c cmp r3, 0 |
| if (r3 == 0) {
0x00002440 strbne r7, [r0, 1] | *((r0 + 1)) = r7;
| }
0x00002444 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x00002448 mov r0, r5 | r0 = r5;
0x0000244c add r1, r1, r6 | r1 += r6;
0x00002450 str r1, [r4, 8] | *((r4 + 8)) = r1;
0x00002454 mov r1, r4 | r1 = r4;
0x00002458 bl 0x1fe4 | r0 = print_value ();
0x0000245c cmp r0, 0 |
| if (r0 == 0) {
0x00002460 beq 0x2008 | goto label_0;
| }
0x00002464 mov r0, r4 | r0 = r4;
0x00002468 bl 0x1bb0 | update_offset ();
0x0000246c ldr r6, [r5] | r6 = *(r5);
0x00002470 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00002474 adds r6, r6, 0 | r6 += 0;
| if (r6 == r6) {
0x00002478 movne r6, 1 | r6 = 1;
| }
0x0000247c cmp r3, 0 |
| if (r3 == 0) {
0x00002480 addne r6, r6, 1 | r6++;
| }
0x00002484 add r1, r6, 1 | r1 = r6 + 1;
0x00002488 mov r0, r4 | r0 = r4;
0x0000248c bl 0x1be0 | r0 = ensure ();
0x00002490 cmp r0, 0 |
| if (r0 == 0) {
0x00002494 beq 0x2008 | goto label_0;
| }
0x00002498 ldr r3, [r5] | r3 = *(r5);
0x0000249c cmp r3, 0 |
| if (r3 == 0) {
0x000024a0 movne r3, 0x2c | r3 = 0x2c;
| }
| if (r3 == 0) {
0x000024a4 strbne r3, [r0] | *(r0) = r3;
| }
0x000024a8 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
| if (r3 == 0) {
0x000024ac addne r0, r0, 1 | r0++;
| }
0x000024b0 cmp r3, 0 |
| if (r3 == 0) {
0x000024b4 movne r3, 0xa | r3 = 0xa;
| }
| if (r3 == 0) {
0x000024b8 strbne r3, [r0] | *(r0) = r3;
| }
0x000024bc mov r3, 0 | r3 = 0;
| if (r3 == 0) {
0x000024c0 addne r0, r0, 1 | r0++;
| }
0x000024c4 strb r3, [r0] | *(r0) = r3;
0x000024c8 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x000024cc ldr r5, [r5] | r5 = *(r5);
0x000024d0 add r6, r3, r6 | r6 = r3 + r6;
0x000024d4 str r6, [r4, 8] | *((r4 + 8)) = r6;
0x000024d8 b 0x2368 | goto label_8;
| label_29:
0x000024dc strb r7, [r2], 1 | *(r2) = r7;
| r2++;
0x000024e0 b 0x23d8 | goto label_9;
| do {
0x000024e4 strb ip, [r3], 1 | *(r3) = ip;
| r3++;
| label_11:
0x000024e8 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x000024ec sub r1, r3, r0 | r1 = r3 - r0;
0x000024f0 sub r2, r2, 1 | r2--;
0x000024f4 cmp r1, r2 |
0x000024f8 blo 0x24e4 |
| } while (r1 <= r2);
0x000024fc b 0x23a4 | goto label_10;
| label_27:
0x00002500 mov ip, 9 |
0x00002504 b 0x24e8 | goto label_11;
| }
[*] Function sprintf used 4 times libcjson.so.1.7.7