[*] Binary protection state of libaxcgijson.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libaxcgijson.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libaxcgijson.so @ 0xef0 */
| #include <stdint.h>
|
; (fcn) sym.axcgi_handle_request () | void axcgi_handle_request (int16_t arg_0h, int16_t arg_4h, void * arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| void * s2;
| int16_t var_2ch;
| size_t n;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| r0 = arg1;
| r1 = arg2;
0x00000ef0 ldmdahs ip!, {r0, r1, r2, r3, r4, r6, r7, fp, ip, sp, lr, pc} ^ | __asm ("ldmdahs ip!, {r0, r1, r2, r3, r4, r6, r7, fp, ip, sp, lr, pc} ^");
0x00000ef4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00000ef8 sub sp, 0x6c |
0x00000efa ldr.w r3, [pc, 0x878] |
0x00000efe add r2, pc | r2 += pc;
0x00000f00 strd r1, r2, [sp, 0x1c] | __asm ("strd r1, r2, [var_20h]");
0x00000f04 ldr.w r2, [pc, 0x870] | r2 = *(0x00001778);
0x00000f08 str r0, [sp, 0x28] | s2 = r0;
0x00000f0a add r2, pc | r2 += pc;
0x00000f0c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00000f0e ldr r3, [r3] | r3 = *(0x1776);
0x00000f10 str r3, [sp, 0x64] | var_64h = r3;
0x00000f12 mov.w r3, 0 | r3 = 0;
0x00000f16 cmp r0, 0 |
| if (arg_0h == ) {
0x00000f18 beq.w 0x1554 | goto label_43;
| }
0x00000f1c ldr.w fp, [r0] | fp = *(r0);
0x00000f20 cmp.w fp, 0 |
| if (fp == 0) {
0x00000f24 beq 0xf40 | goto label_30;
| }
0x00000f26 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00000f28 adds r2, r0, 4 | r2 = r0 + 4;
| if (r3 == 0) {
0x00000f2a cbz r3, 0xf40 | goto label_30;
| }
| do {
0x00000f2c ldr r0, [r3] | r0 = *(r3);
0x00000f2e ldr.w r1, [fp] | r1 = *(fp);
0x00000f32 cmp r0, r1 |
0x00000f34 it hi |
| if (r0 <= r1) {
0x00000f36 movhi fp, r3 |
| }
0x00000f38 ldr r3, [r2, 4]! | r3 = *((r2 += 4));
0x00000f3c cmp r3, 0 |
0x00000f3e bne 0xf2c |
| } while (r3 != 0);
| label_30:
0x00000f40 movs r4, 0 | r4 = 0;
0x00000f42 movs r5, 1 | r5 = 1;
0x00000f44 strd r4, r4, [sp, 0x44] | __asm ("strd r4, r4, [var_48h]");
0x00000f48 str r5, [sp, 0x4c] | var_4ch = r5;
0x00000f4a blx 0xaac | ax_log_syslog ();
0x00000f4e add r3, sp, 0x4c | r3 += var_4ch;
0x00000f50 add r2, sp, 0x48 | r2 += var_48h;
0x00000f52 add r1, sp, 0x44 | r1 += var_44h;
0x00000f54 mov r0, fp | r0 = fp;
0x00000f56 bl 0xcdc | r0 = fcn_00000cdc (r0, r1, r2, r3, r4);
0x00000f5a cmp r0, 0 |
| if (r0 == 0) {
0x00000f5c beq 0x105e | goto label_9;
| }
0x00000f5e ldr r3, [sp, 0x44] | r3 = var_44h;
0x00000f60 str r3, [sp, 0xc] | var_ch = r3;
0x00000f62 cmp r3, 0 |
| if (r3 == 0) {
0x00000f64 beq.w 0x1428 | goto label_44;
| }
0x00000f68 ldr r6, [r3] | r6 = *(r3);
0x00000f6a cmp r6, r5 |
0x00000f6c itt ne |
| if (r6 == r5) {
0x00000f6e strne r4, [sp, 8] | var_8h = r4;
| }
| if (r6 == r5) {
0x00000f70 strne r5, [sp, 0x10] | var_10h = r5;
| }
| if (r6 == r5) {
0x00000f72 beq.w 0x156c | goto label_45;
| }
| label_21:
0x00000f76 ldr.w r3, [pc, 0x804] |
0x00000f7a mov.w sb, 0 | sb = 0;
0x00000f7e ldr.w r2, [pc, 0x800] |
0x00000f82 add r3, pc |
0x00000f84 adds r3, 0x44 | r3 += 0x44;
0x00000f86 add r2, pc | r2 = 0x270c;
0x00000f88 str r3, [sp, 0x3c] | var_3ch = r3;
0x00000f8a mov r7, r2 | r7 = r2;
0x00000f8c ldr.w r3, [pc, 0x7f4] | r3 = sym.imp.json_integer;
0x00000f90 add r3, pc | r3 = 0x3698;
0x00000f92 str r3, [sp, 0x24] | var_24h = r3;
0x00000f94 ldr.w r3, [pc, 0x7f0] |
0x00000f98 add r3, pc | r3 = 0x2724;
0x00000f9a str r3, [sp, 0x34] | var_34h = r3;
0x00000f9c add.w r3, r2, 0x14 | r3 = r2 + 0x14;
0x00000fa0 strd r3, fp, [sp, 0x14] | __asm ("strd r3, fp, [var_0hx14]");
| do {
0x00000fa4 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00000fa6 cmp r3, 0 |
| if (r3 == 0) {
0x00000fa8 beq.w 0x122c | goto label_46;
| }
| label_10:
0x00000fac ldr r3, [sp, 8] | r3 = var_8h;
0x00000fae ldr.w sl, [sp, 0xc] | sl = var_ch;
0x00000fb2 cmp r3, 0 |
| if (r3 != 0) {
0x00000fb4 bne.w 0x1170 | goto label_47;
| }
| label_5:
0x00000fb8 movs r3, 0 | r3 = 0;
0x00000fba ldr r1, [sp, 0x14] | r1 = var_14h;
0x00000fbc mov r0, sl | r0 = sl;
0x00000fbe strd r3, r3, [sp, 0x50] | __asm ("strd r3, r3, [var_50h]");
0x00000fc2 str r3, [sp, 0x58] | var_58h = r3;
0x00000fc4 blx 0xaf4 | json_object_get ();
0x00000fc8 mov r1, r7 | r1 = r7;
0x00000fca mov r6, r0 | r6 = r0;
0x00000fcc mov r0, sl | r0 = sl;
0x00000fce blx 0xaf4 | json_object_get ();
0x00000fd2 add.w r1, r7, 0xc | r1 = r7 + 0xc;
0x00000fd6 mov r4, r0 | r4 = r0;
0x00000fd8 mov r0, sl | r0 = sl;
0x00000fda blx 0xaf4 | r0 = json_object_get ();
0x00000fde mov r5, r0 | r5 = r0;
0x00000fe0 cmp r6, 0 |
| if (r6 == 0) {
0x00000fe2 beq.w 0x123a | goto label_48;
| }
0x00000fe6 ldr r3, [r6] | r3 = *(r6);
0x00000fe8 cmp r3, 2 |
| if (r3 == 2) {
0x00000fea beq.w 0x117c | goto label_49;
| }
0x00000fee ldr.w r1, [pc, 0x79c] |
0x00000ff2 movw r0, 0xfa2 | r0 = 0xfa2;
0x00000ff6 add r1, pc | r1 = 0x2788;
0x00000ff8 blx 0xab8 | fcn_00000ab8 ();
0x00000ffc str r0, [sp, 0x50] | var_50h = r0;
0x00000ffe cmp r4, 0 |
| if (r4 == 0) {
0x00001000 beq.w 0x1250 | goto label_50;
| }
| label_13:
0x00001004 movs r6, 0 | r6 = 0;
0x00001006 mov fp, r6 |
| label_6:
0x00001008 ldr r3, [r4] | r3 = *(r4);
0x0000100a cmp r3, 2 |
| if (r3 == 2) {
0x0000100c beq.w 0x1516 | goto label_51;
| }
0x00001010 ldr.w r1, [pc, 0x77c] |
0x00001014 movw r0, 0xfa2 | r0 = 0xfa2;
0x00001016 strb r2, [r4, 2] | *((r4 + 2)) = r2;
0x00001018 add r1, pc | r1 = 0x27ac;
0x0000101a blx 0xab8 | fcn_00000ab8 ();
| label_34:
0x0000101e cmp.w fp, 0 |
| if (fp != 0) {
0x00001022 bne.w 0x140e | goto label_52;
| }
0x00001026 cmp r5, 0 |
| if (r5 == 0) {
0x00001028 beq.w 0x1462 | goto label_25;
| }
0x0000102c ldr r3, [r5] | r3 = *(r5);
0x0000102e cmp r3, 2 |
| if (r3 == 2) {
0x00001030 beq.w 0x145a | goto label_53;
| }
0x00001034 ldr r0, [sp, 0x50] | r0 = var_50h;
0x00001036 mov r5, fp | r5 = fp;
0x00001038 mov r4, fp | r4 = fp;
0x0000103a mov.w r8, 0 | r8 = 0;
0x0000103e cmp r0, 0 |
| if (r0 != 0) {
0x00001040 bne.w 0x11c6 | goto label_24;
| }
| label_7:
0x00001044 movs r5, 0 | r5 = 0;
| label_19:
0x00001046 movs r3, 0 | r3 = 0;
0x00001048 str r3, [sp, 0x4c] | var_4ch = r3;
0x0000104a ldr r3, [sp, 8] | r3 = var_8h;
0x0000104c cmp r3, 0 |
| if (r3 != 0) {
0x0000104e bne.w 0x1212 | goto label_54;
| }
| label_8:
0x00001052 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00001054 add.w sb, sb, 1 | sb++;
0x00001058 str r5, [sp, 0x48] | var_48h = r5;
0x0000105a cmp sb, r3 |
0x0000105c blo 0xfa4 |
| } while (sb <= r3);
| label_9:
0x0000105e ldr r3, [sp, 0x44] | r3 = var_44h;
0x00001060 str r3, [sp, 0xc] | var_ch = r3;
| if (r3 != 0) {
0x00001062 cbz r3, 0x106c |
| label_11:
0x00001064 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00001066 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00001068 adds r3, 1 | r3++;
| if (r3 != 1) {
0x0000106a bne 0x1110 | goto label_55;
| }
| }
| label_0:
0x0000106c ldrd r5, r3, [sp, 0x48] | __asm ("ldrd r5, r3, [var_4ch]");
0x00001070 cmp r3, 0 |
| if (r3 == 0) {
0x00001072 beq 0x1136 | goto label_12;
| }
| label_1:
0x00001074 cmp r5, 0 |
| if (r5 == 0) {
0x00001076 beq 0x116c | goto label_56;
| }
0x00001078 mov.w r1, 0x100 | r1 = 0x100;
0x0000107c mov r0, r5 | r0 = r5;
0x0000107e blx 0xad0 | r0 = json_dumps ();
0x00001082 mov r6, r0 | r6 = r0;
0x00001084 cmp r0, 0 |
| if (r0 == 0) {
0x00001086 beq 0x114a | goto label_57;
| }
0x00001088 ldr.w r1, [pc, 0x708] |
0x0000108c mov r2, r0 | r2 = r0;
0x0000108e ldr.w r0, [pc, 0x708] |
0x00001092 add r1, pc | r1 = 0x282a;
0x00001094 add.w r3, r1, 0x7c | r3 = r1 + 0x7c;
0x00001098 add r0, pc | r0 = 0x2836;
0x0000109a adds r1, 0x80 | r1 += 0x80;
0x0000109c blx 0xa40 | r0 = g_strdup_printf ()
0x000010a0 mov r4, r0 | r4 = r0;
0x000010a2 mov r0, r6 | r0 = r6;
0x000010a4 blx 0x980 | g_free ();
| label_2:
0x000010a8 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x000010aa adds r3, 1 | r3++;
| if (r3 == 1) {
0x000010ac beq 0x10c8 | goto label_3;
| }
0x000010ae adds r3, r5, 4 | r3 = r5 + 4;
0x000010b0 dmb ish | __asm ("dmb ish");
| do {
0x000010b4 ldrex r2, [r3] | __asm ("ldrex r2, [r3]");
0x000010b8 subs r2, 1 | r2--;
0x000010ba strex r1, r2, [r3] | __asm ("strex r1, r2, [r3]");
0x000010be cmp r1, 0 |
0x000010c0 bne 0x10b4 |
| } while (r1 != 0);
0x000010c2 cmp r2, 0 |
| if (r2 == 0) {
0x000010c4 beq.w 0x15a4 | goto label_58;
| }
| label_3:
0x000010c8 cmp r4, 0 |
| if (r4 == 0) {
0x000010ca beq 0x116c | goto label_56;
| }
0x000010cc ldr.w r1, [pc, 0x6cc] |
0x000010d0 mov r2, r4 | r2 = r4;
0x000010d2 movs r0, 1 | r0 = 1;
0x000010d4 add r1, pc | r1 = 0x2874;
0x000010d6 blx 0xa88 | printf_chk ()
0x000010da ldr r2, [sp, 0x20] | r2 = var_20h;
0x000010dc ldr.w r3, [pc, 0x6c0] | r3 = *(0x17a0);
0x000010e0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000010e2 ldr r0, [r3] | r0 = *(0x17a0);
0x000010e4 blx 0x998 | fflush (r0);
0x000010e8 mov r0, r4 | r0 = r4;
0x000010ea blx 0x980 | g_free ();
0x000010ee movs r0, 0 | r0 = 0;
| label_4:
0x000010f0 ldr.w r2, [pc, 0x6b0] | r2 = *(0x000017a4);
0x000010f4 ldr.w r3, [pc, 0x67c] | r3 = *(0x1774);
0x000010f8 add r2, pc | r2 += pc;
0x000010fa ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000010fc ldr r2, [r3] | r2 = *(0x1774);
0x000010fe ldr r3, [sp, 0x64] | r3 = var_64h;
0x00001100 eors r2, r3 | r2 ^= r3;
0x00001102 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00001106 bne.w 0x176a | goto label_59;
| }
0x0000110a add sp, 0x6c |
0x0000110c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_55:
0x00001110 adds r3, r2, 4 | r3 = r2 + 4;
0x00001112 dmb ish | __asm ("dmb ish");
| do {
0x00001116 ldrex r2, [r3] | __asm ("ldrex r2, [r3]");
0x0000111a subs r2, 1 | r2--;
0x0000111c strex r1, r2, [r3] | __asm ("strex r1, r2, [r3]");
0x00001120 cmp r1, 0 |
0x00001122 bne 0x1116 |
| } while (r1 != 0);
0x00001124 cmp r2, 0 |
| if (r2 != 0) {
0x00001126 bne 0x106c | goto label_0;
| }
0x00001128 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0000112a blx 0x9e0 | json_delete ();
0x0000112e ldrd r5, r3, [sp, 0x48] | __asm ("ldrd r5, r3, [var_4ch]");
0x00001132 cmp r3, 0 |
| if (r3 != 0) {
0x00001134 bne 0x1074 | goto label_1;
| }
| label_12:
0x00001136 ldr.w r0, [pc, 0x670] |
0x0000113a add r0, pc | r0 = 0x28e8;
0x0000113c adds r0, 0xb4 | r0 += 0xb4;
0x0000113e blx 0xac4 | r0 = g_strdup ();
0x00001142 mov r4, r0 | r4 = r0;
0x00001144 cmp r5, 0 |
| if (r5 != 0) {
0x00001146 bne 0x10a8 | goto label_2;
| }
0x00001148 b 0x10c8 | goto label_3;
| label_57:
0x0000114a ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0000114c adds r3, 1 | r3++;
| if (r3 == 1) {
0x0000114e beq 0x116c | goto label_56;
| }
0x00001150 adds r3, r5, 4 | r3 = r5 + 4;
0x00001152 dmb ish | __asm ("dmb ish");
| do {
0x00001156 ldrex r2, [r3] | __asm ("ldrex r2, [r3]");
0x0000115a subs r2, 1 | r2--;
0x0000115c strex r1, r2, [r3] | __asm ("strex r1, r2, [r3]");
0x00001160 cmp r1, 0 |
0x00001162 bne 0x1156 |
| } while (r1 != 0);
| if (r2 == 0) {
0x00001164 cbnz r2, 0x116c |
0x00001166 mov r0, r5 | r0 = r5;
0x00001168 blx 0x9e0 | json_delete ();
| }
| label_56:
0x0000116c movs r0, 1 | r0 = 1;
0x0000116e b 0x10f0 | goto label_4;
| label_47:
0x00001170 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00001172 mov r1, sb | r1 = sb;
0x00001174 blx 0xa10 | r0 = json_array_get ();
0x00001178 mov sl, r0 | sl = r0;
0x0000117a b 0xfb8 | goto label_5;
| label_49:
0x0000117c mov r0, r6 | r0 = r6;
0x0000117e blx 0x9f8 | json_string_value ();
0x00001182 add.w r1, r7, 0x44 | r1 = r7 + 0x44;
0x00001186 mov r6, r0 | r6 = r0;
0x00001188 blx 0x950 | r0 = strcmp (r0, r1);
0x0000118c mov r3, r0 | r3 = r0;
0x0000118e cmp r0, 0 |
| if (r0 == 0) {
0x00001190 beq.w 0x1312 | goto label_60;
| }
0x00001194 mov.w fp, 1 |
0x00001198 cmp r4, 0 |
| if (r4 != 0) {
0x0000119a bne.w 0x1008 | goto label_6;
| }
0x0000119e ldr.w r1, [pc, 0x60c] |
0x000011a2 movw r0, 0xfa1 | r0 = 0xfa1;
0x000011a6 add r1, pc | r1 = 0x2958;
0x000011a8 blx 0xab8 | fcn_00000ab8 ();
0x000011ac str r0, [sp, 0x50] | var_50h = r0;
| if (r5 != 0) {
0x000011ae cbz r5, 0x11bc |
0x000011b0 ldr r3, [r5] | r3 = *(r5);
0x000011b2 cmp r3, 2 |
0x000011b4 it ne |
| if (r3 == 2) {
0x000011b6 movne r5, r4 | r5 = r4;
| }
| if (r3 == 2) {
0x000011b8 beq.w 0x145a | goto label_53;
| }
| }
| label_14:
0x000011bc mov.w r8, 0 | r8 = 0;
0x000011c0 cmp r0, 0 |
| if (r0 == 0) {
0x000011c2 beq.w 0x1044 | goto label_7;
| }
| label_24:
0x000011c6 ldr r2, [sp, 0x54] | r2 = var_54h;
0x000011c8 cmp r2, 0 |
| if (r2 != 0) {
0x000011ca bne.w 0x13be | goto label_61;
| }
0x000011ce ldr r2, [sp, 0x18] | r2 = var_18h;
0x000011d0 add r3, sp, 0x54 | r3 += var_54h;
0x000011d2 ldm.w r2, {r0, r1} | r0 = *(r2);
| r1 = *((r2 + 4));
0x000011d6 stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
| label_20:
0x000011da mov r2, r5 | r2 = r5;
0x000011dc mov r1, r3 | r1 = r3;
0x000011de mov r0, r6 | r0 = r6;
0x000011e0 bl 0xbc8 | r0 = fcn_00000bc8 (r0, r1, r2);
0x000011e4 mov r5, r0 | r5 = r0;
0x000011e6 cmp r0, 0 |
| if (r0 == 0) {
0x000011e8 beq.w 0x1044 | goto label_7;
| }
0x000011ec cmp.w r8, 0 |
| if (r8 != 0) {
0x000011f0 bne 0x126c | goto label_62;
| }
0x000011f2 ldr r2, [sp, 0x50] | r2 = var_50h;
0x000011f4 cmp r2, 0 |
| if (r2 == 0) {
0x000011f6 beq.w 0x1400 | goto label_63;
| }
| label_18:
0x000011fa ldr r1, [sp, 0x24] | r1 = var_24h;
0x000011fc mov r0, r5 | r0 = r5;
0x000011fe blx 0x9b0 | r0 = json_object_set_new_nocheck ();
0x00001202 clz r0, r0 | r0 &= r0;
0x00001206 lsrs r0, r0, 5 | r0 >>= 5;
| label_22:
0x00001208 ldr r3, [sp, 8] | r3 = var_8h;
0x0000120a str r0, [sp, 0x4c] | var_4ch = r0;
0x0000120c cmp r3, 0 |
| if (r3 == 0) {
0x0000120e beq.w 0x1052 | goto label_8;
| }
| label_54:
0x00001212 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00001214 cmp r3, 0 |
| if (r3 != 0) {
0x00001216 bne 0x1300 | goto label_64;
| }
| label_17:
0x00001218 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000121a add.w sb, sb, 1 | sb++;
0x0000121e cmp sb, r3 |
| if (sb >= r3) {
0x00001220 bhs.w 0x105e | goto label_9;
| }
0x00001224 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00001226 cmp r3, 0 |
| if (r3 != 0) {
0x00001228 bne.w 0xfac | goto label_10;
| }
| label_46:
0x0000122c ldr r3, [sp, 0x44] | r3 = var_44h;
0x0000122e str r3, [sp, 0xc] | var_ch = r3;
0x00001230 cmp r3, 0 |
| if (r3 != 0) {
0x00001232 bne.w 0x1064 | goto label_11;
| }
0x00001236 ldr r5, [sp, 0x48] | r5 = var_48h;
0x00001238 b 0x1136 | goto label_12;
| label_48:
0x0000123a ldr.w r1, [pc, 0x574] |
0x0000123e movw r0, 0xfa1 | r0 = 0xfa1;
0x00001242 add r1, pc | r1 = 0x29f8;
0x00001244 blx 0xab8 | fcn_00000ab8 ();
0x00001248 str r0, [sp, 0x50] | var_50h = r0;
0x0000124a cmp r4, 0 |
| if (r4 != 0) {
0x0000124c bne.w 0x1004 | goto label_13;
| }
| label_50:
0x00001250 mov r6, r5 | r6 = r5;
0x00001252 cmp r5, 0 |
| if (r5 == 0) {
0x00001254 beq.w 0x1462 | goto label_25;
| }
0x00001258 ldr r3, [r5] | r3 = *(r5);
0x0000125a cmp r3, 2 |
0x0000125c it ne |
| if (r3 == 2) {
0x0000125e movne r6, 0 | r6 = 0;
| }
| if (r3 == 2) {
0x00001260 beq.w 0x149c | goto label_65;
| }
| label_29:
0x00001264 movs r4, 0 | r4 = 0;
0x00001266 ldr r0, [sp, 0x50] | r0 = var_50h;
0x00001268 mov r5, r4 | r5 = r4;
0x0000126a b 0x11bc | goto label_14;
| label_62:
0x0000126c blx 0xa04 | geteuid ();
0x00001270 blx 0x974 | r0 = getpwuid ();
0x00001274 cmp r0, 0 |
| if (r0 == 0) {
0x00001276 beq 0x1340 | goto label_66;
| }
0x00001278 ldr.w r1, [pc, 0x538] |
0x0000127c str r0, [sp, 0x2c] | var_2ch = r0;
0x0000127e ldr r0, [r0] | r0 = *(r0);
0x00001280 add r1, pc | r1 = 0x2a38;
0x00001282 adds r1, 0x64 | r1 += 0x64;
0x00001284 blx 0xa34 | r0 = g_strcmp0 ();
0x00001288 cmp r0, 0 |
| if (r0 == 0) {
0x0000128a beq.w 0x155a | goto label_67;
| }
0x0000128e ldr.w r2, [pc, 0x528] | r2 = *(0x000017b8);
0x00001292 ldr.w r0, [pc, 0x528] |
0x00001296 ldr.w sl, [sp, 0x2c] | sl = var_2ch;
0x0000129a add r2, pc | r2 += pc;
0x0000129c str r5, [sp, 0x30] | n = r5;
0x0000129e str r2, [sp, 0x38] | var_38h = r2;
0x000012a0 add r0, pc | r0 = 0x2a62;
0x000012a2 movs r2, 0 | r2 = 0;
0x000012a4 str r4, [sp, 0x2c] | var_2ch = r4;
0x000012a6 mov fp, r2 |
0x000012a8 blx 0xae8 | r0 = getgrnam ();
0x000012ac mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x000012ae cbnz r0, 0x12ca | goto label_68;
| }
| do {
| label_15:
0x000012b0 add.w fp, fp, 1 |
0x000012b4 cmp.w fp, 3 |
| if (fp == 3) {
0x000012b8 beq 0x133c | goto label_69;
| }
0x000012ba ldr r3, [sp, 0x38] | r3 = var_38h;
0x000012bc ldr.w r0, [r3, fp, lsl 3] | offset_0 = fp << 3;
| r0 = *((r3 + offset_0));
0x000012c0 blx 0xae8 | r0 = getgrnam ();
0x000012c4 mov r5, r0 | r5 = r0;
0x000012c6 cmp r0, 0 |
0x000012c8 beq 0x12b0 |
| } while (r0 == 0);
| label_68:
0x000012ca ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x000012cc ldr r0, [r3] | r0 = *(r3);
0x000012ce cmp r0, 0 |
| if (r0 == 0) {
0x000012d0 beq 0x12b0 | goto label_15;
| }
0x000012d2 movs r4, 4 | r4 = 4;
0x000012d4 b 0x12e0 | goto label_70;
| label_16:
0x000012d6 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x000012d8 ldr r0, [r3, r4] | r0 = *((r3 + r4));
0x000012da adds r4, 4 | r4 += 4;
0x000012dc cmp r0, 0 |
| if (r0 == 0) {
0x000012de beq 0x12b0 | goto label_15;
| }
| label_70:
0x000012e0 ldr.w r1, [sl] | r1 = *(sl);
0x000012e4 blx 0xa34 | r0 = g_strcmp0 ();
0x000012e8 cmp r0, 0 |
| if (r0 != 0) {
0x000012ea bne 0x12d6 | goto label_16;
| }
0x000012ec ldr.w r3, [pc, 0x4d0] | r3 = *(0x000017c0);
0x000012f0 ldr r4, [sp, 0x2c] | r4 = var_2ch;
0x000012f2 ldr r5, [sp, 0x30] | r5 = n;
0x000012f4 add r3, pc | r3 += pc;
0x000012f6 add.w r3, r3, fp, lsl 3 | r3 += (fp << 3);
0x000012fa ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000012fc str r3, [sp, 0x2c] | var_2ch = r3;
0x000012fe b 0x1344 | goto label_31;
| label_64:
0x00001300 ldr r0, [sp, 0x48] | r0 = var_48h;
0x00001302 mov r1, r5 | r1 = r5;
0x00001304 blx 0x9a4 | r0 = json_array_append_new ();
0x00001308 cmp r0, 0 |
| if (r0 == 0) {
0x0000130a beq 0x1218 | goto label_17;
| }
0x0000130c movs r3, 0 | r3 = 0;
0x0000130e str r3, [sp, 0x4c] | var_4ch = r3;
0x00001310 b 0x1218 | goto label_17;
| label_60:
0x00001312 cmp r4, 0 |
| if (r4 == 0) {
0x00001314 beq.w 0x14f2 | goto label_71;
| }
0x00001316 strh r5, [r5, 6] | *((r5 + 6)) = r5;
0x00001318 cmp r5, 0 |
| if (r5 == 0) {
0x0000131a beq.w 0x1568 | goto label_72;
| }
0x0000131e ldr r2, [r5] | r2 = *(r5);
0x00001320 cmp r2, 2 |
| if (r2 == 2) {
0x00001322 beq.w 0x1594 | goto label_73;
| }
| label_28:
0x00001326 ldr.w r1, [pc, 0x49c] |
0x0000132a movw r0, 0xfa2 | r0 = 0xfa2;
0x0000132e movs r4, 0 | r4 = 0;
0x00001330 mov r5, r4 | r5 = r4;
0x00001332 add r1, pc | r1 = 0x2afc;
0x00001334 blx 0xab8 | fcn_00000ab8 ();
0x00001338 str r0, [sp, 0x50] | var_50h = r0;
0x0000133a b 0x11bc | goto label_14;
| label_69:
0x0000133c ldrd r4, r5, [sp, 0x2c] | __asm ("ldrd r4, r5, [var_2ch]");
| label_66:
0x00001340 movs r3, 0 | r3 = 0;
0x00001342 str r3, [sp, 0x2c] | var_2ch = r3;
| label_31:
0x00001344 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00001346 ldr.w sl, [sp, 0x54] | sl = var_54h;
0x0000134a ldr.w fp, [sp, 0x1c] | fp = var_1ch;
0x0000134e ldr r3, [r3] | r3 = *(r3);
| if (r3 != 0) {
0x00001350 cbnz r3, 0x135a | goto label_74;
| }
0x00001352 b 0x13a4 | goto label_75;
| do {
0x00001354 ldr r3, [fp, 4]! | r3 = *(arg_4h);
| if (r3 == 0) {
0x00001358 cbz r3, 0x13a4 | goto label_75;
| }
| label_74:
0x0000135a ldr r1, [r3] | r1 = *(r3);
0x0000135c mov r0, r6 | r0 = r6;
0x0000135e blx 0xa34 | r0 = g_strcmp0 ();
0x00001362 cmp r0, 0 |
0x00001364 bne 0x1354 |
| } while (r0 != 0);
0x00001366 ldr.w r2, [fp] | r2 = *(fp);
0x0000136a str r0, [sp, 0x30] | n = r0;
0x0000136c ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x0000136e cmp r2, 0 |
| if (r2 == 0) {
0x00001370 beq.w 0x14fe | goto label_76;
| }
0x00001374 mov r0, sl | r0 = sl;
0x00001376 blx r2 | r0 = uint32_t (*r2)(uint32_t) (r0);
0x00001378 cmp r0, 0 |
| if (r0 == 0) {
0x0000137a beq.w 0x14fe | goto label_76;
| }
0x0000137e ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00001380 ldr r2, [r0] | r2 = *(r0);
0x00001382 cmp r2, r3 |
0x00001384 ldr r3, [sp, 0x30] | r3 = n;
| if (r2 > r3) {
0x00001386 bhi 0x1430 | goto label_77;
| }
0x00001388 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0000138a cmp r3, 0 |
| if (r3 == 0) {
0x0000138c beq.w 0x15ac | goto label_78;
| }
0x00001390 mov r0, r4 | r0 = r4;
0x00001392 add r1, sp, 0x50 | r1 += var_50h;
0x00001394 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
0x00001396 cmp r0, 0 |
| if (r0 != 0) {
0x00001398 bne 0x1468 | goto label_37;
| }
| label_35:
0x0000139a ldr r2, [sp, 0x50] | r2 = var_50h;
0x0000139c cmp r2, 0 |
| if (r2 != 0) {
0x0000139e bne.w 0x11fa | goto label_18;
| }
0x000013a2 b 0x1046 | goto label_19;
| label_75:
0x000013a4 ldr.w r1, [pc, 0x420] |
0x000013a8 movw r0, 0x7d4 | r0 = 0x7d4;
0x000013ac add r1, pc | r1 = 0x2b78;
0x000013ae blx 0xab8 | r0 = fcn_00000ab8 ();
0x000013b2 mov r2, r0 | r2 = r0;
0x000013b4 str r0, [sp, 0x50] | var_50h = r0;
0x000013b6 cmp r2, 0 |
| if (r2 != 0) {
0x000013b8 bne.w 0x11fa | goto label_18;
| }
0x000013bc b 0x1046 | goto label_19;
| label_61:
0x000013be ldr r1, [sp, 0x28] | r1 = s2;
| if (r1 == 0) {
0x000013c0 cbz r1, 0x13d4 | goto label_79;
| }
0x000013c2 ldr r3, [r1] | r3 = *(r1);
| if (r3 == 0) {
0x000013c4 cbz r3, 0x13d4 | goto label_79;
| }
| do {
0x000013c6 ldr r0, [r3] | r0 = *(r3);
0x000013c8 cmp r2, r0 |
| if (r2 == r0) {
0x000013ca beq 0x1420 | goto label_80;
| }
0x000013cc ldr r3, [r1, 4]! | r3 = *((r1 += 4));
0x000013d0 cmp r3, 0 |
0x000013d2 bne 0x13c6 |
| } while (r3 != 0);
| label_79:
0x000013d4 ldr r2, [sp, 0x18] | r2 = var_18h;
0x000013d6 add r3, sp, 0x54 | r3 += var_54h;
0x000013d8 ldm.w r2, {r0, r1} | r0 = *(r2);
| r1 = *((r2 + 4));
0x000013dc mov r2, r5 | r2 = r5;
0x000013de stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x000013e2 cmp.w r8, 0 |
| if (r8 != 0) {
0x000013e6 bne 0x1480 | goto label_81;
| }
| label_23:
0x000013e8 mov r1, r3 | r1 = r3;
0x000013ea mov r0, r6 | r0 = r6;
0x000013ec bl 0xbc8 | r0 = fcn_00000bc8 (r0, r1, r2);
0x000013f0 mov r5, r0 | r5 = r0;
0x000013f2 cmp r0, 0 |
| if (r0 == 0) {
0x000013f4 beq.w 0x1044 | goto label_7;
| }
0x000013f8 ldr r2, [sp, 0x50] | r2 = var_50h;
0x000013fa cmp r2, 0 |
| if (r2 != 0) {
0x000013fc bne.w 0x11fa | goto label_18;
| }
| label_63:
0x00001400 ldr r1, [sp, 0x34] | r1 = var_34h;
0x00001402 mov.w r0, 0x1f40 | r0 = 0x1f40;
0x00001406 blx 0xab8 | r0 = fcn_00000ab8 ();
0x0000140a mov r2, r0 | r2 = r0;
0x0000140c b 0x11fa | goto label_18;
| label_52:
0x0000140e str r0, [sp, 0x50] | var_50h = r0;
| if (r5 != 0) {
0x00001410 cbz r5, 0x141c |
0x00001412 ldr r3, [r5] | r3 = *(r5);
0x00001414 cmp r3, 2 |
0x00001416 it ne |
| if (r3 == 2) {
0x00001418 movne r5, 0 | r5 = 0;
| }
| if (r3 == 2) {
0x0000141a beq 0x145a | goto label_53;
| }
| }
0x0000141c mov r4, r5 | r4 = r5;
0x0000141e b 0x11bc | goto label_14;
| label_80:
0x00001420 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00001422 str r3, [sp, 0x58] | var_58h = r3;
0x00001424 add r3, sp, 0x54 | r3 += var_54h;
0x00001426 b 0x11da | goto label_20;
| label_44:
0x00001428 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000142a str r5, [sp, 0x10] | var_10h = r5;
0x0000142c str r3, [sp, 8] | var_8h = r3;
0x0000142e b 0xf76 | goto label_21;
| label_77:
0x00001430 mov r0, r3 | r0 = r3;
0x00001432 str r2, [sp] | *(sp) = r2;
0x00001434 ldr r3, [pc, 0x394] |
0x00001436 movs r1, 0x10 | r1 = 0x10;
0x00001438 ldr r2, [pc, 0x394] |
0x0000143a add r3, pc | r3 = 0x2c0a;
0x0000143c add r2, pc | r2 = 0x2c10;
0x0000143e blx 0xa94 | g_log ();
0x00001442 ldr r1, [pc, 0x390] |
0x00001444 movw r0, 0x7d1 | r0 = 0x7d1;
0x00001448 add r1, pc | r1 = 0x2c22;
0x0000144a blx 0xab8 | r0 = fcn_00000ab8 ();
0x0000144e mov r2, r0 | r2 = r0;
0x00001450 str r0, [sp, 0x50] | var_50h = r0;
0x00001452 cmp r2, 0 |
| if (r2 != 0) {
0x00001454 bne.w 0x11fa | goto label_18;
| }
0x00001458 b 0x1046 | goto label_19;
| label_53:
0x0000145a mov r0, r5 | r0 = r5;
0x0000145c blx 0x9f8 | r0 = json_string_value ();
0x00001460 mov r5, r0 | r5 = r0;
| label_25:
0x00001462 ldr r0, [sp, 0x50] | r0 = var_50h;
0x00001464 movs r4, 0 | r4 = 0;
0x00001466 b 0x11bc | goto label_14;
| label_37:
0x00001468 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0000146a cmp r2, 0 |
| if (r2 == 0) {
0x0000146c beq 0x1560 | goto label_82;
| }
| label_32:
0x0000146e ldr r1, [pc, 0x368] |
0x00001470 mov r0, r5 | r0 = r5;
0x00001472 add r1, pc | r1 = 0x2c50;
0x00001474 blx 0x9b0 | r0 = json_object_set_new_nocheck ();
0x00001478 clz r0, r0 | r0 &= r0;
0x0000147c lsrs r0, r0, 5 | r0 >>= 5;
0x0000147e b 0x1208 | goto label_22;
| label_81:
0x00001480 ldr r1, [pc, 0x358] |
0x00001482 movw r0, 0x7d3 | r0 = 0x7d3;
0x00001486 str r3, [sp, 0x2c] | var_2ch = r3;
0x00001488 add r1, pc | r1 = 0x2c68;
0x0000148a blx 0xab8 | fcn_00000ab8 ();
0x0000148e str r0, [sp, 0x50] | var_50h = r0;
0x00001490 cmp r0, 0 |
| if (r0 == 0) {
0x00001492 beq.w 0x1044 | goto label_7;
| }
0x00001496 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00001498 mov r2, r5 | r2 = r5;
0x0000149a b 0x13e8 | goto label_23;
| label_65:
0x0000149c movs r4, 0 | r4 = 0;
0x0000149e mov r6, r4 | r6 = r4;
0x000014a0 mov fp, r4 |
| label_27:
0x000014a2 mov r0, r5 | r0 = r5;
0x000014a4 eor r4, r4, 1 | r4 ^= 1;
0x000014a8 blx 0x9f8 | json_string_value ();
0x000014ac and.w r8, r4, fp | r8 = r4 & fp;
0x000014b0 mov r5, r0 | r5 = r0;
| label_26:
0x000014b2 cmp.w r8, 0 |
| if (r8 == 0) {
0x000014b6 beq 0x14e4 | goto label_83;
| }
0x000014b8 ldr r1, [pc, 0x324] |
0x000014ba mov r0, sl | r0 = sl;
0x000014bc add r1, pc | r1 = 0x2ca0;
0x000014be adds r1, 0x5c | r1 += 0x5c;
0x000014c0 blx 0xaf4 | r0 = json_object_get ();
0x000014c4 mov r4, r0 | r4 = r0;
0x000014c6 cmp r0, 0 |
| if (r0 == 0) {
0x000014c8 beq.w 0x11c6 | goto label_24;
| }
0x000014cc ldr r3, [r0] | r3 = *(r0);
0x000014ce cmp r3, 1 |
| if (r3 < 1) {
0x000014d0 bls.w 0x11c6 | goto label_24;
| }
0x000014d4 ldr r1, [pc, 0x30c] |
0x000014d6 movw r0, 0xfa2 | r0 = 0xfa2;
0x000014da add r1, pc | r1 = 0x2cc2;
0x000014dc blx 0xab8 | fcn_00000ab8 ();
0x000014e0 str r0, [sp, 0x50] | var_50h = r0;
0x000014e2 b 0x11bc | goto label_14;
| label_83:
0x000014e4 mov r8, fp | r8 = fp;
0x000014e6 movs r4, 0 | r4 = 0;
0x000014e8 cmp.w fp, 0 |
| if (fp != 0) {
0x000014ec bne.w 0x11c6 | goto label_24;
| }
0x000014f0 b 0x1462 | goto label_25;
| label_71:
0x000014f2 cmp r5, 0 |
| if (r5 != 0) {
0x000014f4 bne.w 0x175c | goto label_84;
| }
| label_33:
0x000014f8 mov.w r8, 1 | r8 = 1;
0x000014fc b 0x11c6 | goto label_24;
| label_76:
0x000014fe ldr r1, [pc, 0x2e8] |
0x00001500 mov.w r0, 0x1f40 | r0 = 0x1f40;
0x00001504 add r1, pc | r1 = 0x2cf2;
0x00001506 blx 0xab8 | r0 = fcn_00000ab8 ();
0x0000150a mov r2, r0 | r2 = r0;
0x0000150c str r0, [sp, 0x50] | var_50h = r0;
0x0000150e cmp r2, 0 |
| if (r2 != 0) {
0x00001510 bne.w 0x11fa | goto label_18;
| }
0x00001514 b 0x1046 | goto label_19;
| label_51:
0x00001516 mov r0, r4 | r0 = r4;
0x00001518 add.w r8, sp, 0x5c | r8 += var_5ch;
0x0000151c blx 0x9f8 | json_string_value ();
0x00001520 ldr r1, [pc, 0x2c8] |
0x00001522 movs r4, 0 | r4 = 0;
0x00001524 add r3, sp, 0x60 | r3 += var_60h;
0x00001526 mov r2, r8 | r2 = r8;
0x00001528 str r4, [sp, 0x60] | var_60h = r4;
0x0000152a add r1, pc | r1 = 0x2d1a;
0x0000152c blx 0xa7c | r0 = isoc99_sscanf ();
0x00001530 cmp r0, r4 |
| if (r0 <= r4) {
0x00001532 ble 0x1586 | goto label_85;
| }
0x00001534 ldm.w r8, {r0, r1} | r0 = *(r8);
| r1 = *((r8 + 4));
0x00001538 add r3, sp, 0x54 | r3 += var_54h;
0x0000153a mov r8, fp | r8 = fp;
0x0000153c stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x00001540 cmp r5, 0 |
| if (r5 == 0) {
0x00001542 beq 0x14b2 | goto label_26;
| }
0x00001544 ldr r3, [r5] | r3 = *(r5);
0x00001546 cmp r3, 2 |
| if (r3 == 2) {
0x00001548 beq 0x14a2 | goto label_27;
| }
0x0000154a cmp.w fp, 0 |
| if (fp != 0) {
0x0000154e bne.w 0x1326 | goto label_28;
| }
0x00001552 b 0x1264 | goto label_29;
| label_43:
0x00001554 ldr.w fp, [sp, 0x28] | fp = s2;
0x00001558 b 0xf40 | goto label_30;
| label_67:
0x0000155a movs r3, 1 | r3 = 1;
0x0000155c str r3, [sp, 0x2c] | var_2ch = r3;
0x0000155e b 0x1344 | goto label_31;
| label_82:
0x00001560 blx 0x9d4 | r0 = json_object ();
0x00001564 mov r2, r0 | r2 = r0;
0x00001566 b 0x146e | goto label_32;
| label_72:
0x00001568 mov r4, r5 | r4 = r5;
0x0000156a b 0x14f8 | goto label_33;
| label_45:
0x0000156c mov r0, r3 | r0 = r3;
0x0000156e blx 0xaa0 | r0 = json_array_size ();
0x00001572 mov r4, r0 | r4 = r0;
0x00001574 str r0, [sp, 0x10] | var_10h = r0;
0x00001576 blx 0x98c | json_array ();
0x0000157a str r0, [sp, 0x48] | var_48h = r0;
0x0000157c cmp r4, 0 |
| if (r4 == 0) {
0x0000157e beq.w 0x1064 | goto label_11;
| }
0x00001582 str r6, [sp, 8] | var_8h = r6;
0x00001584 b 0xf76 | goto label_21;
| label_85:
0x00001586 ldr r1, [pc, 0x268] |
0x00001588 movw r0, 0x7d3 | r0 = 0x7d3;
0x0000158c add r1, pc | r1 = 0x2d82;
0x0000158e blx 0xab8 | fcn_00000ab8 ();
0x00001592 b 0x101e | goto label_34;
| label_73:
0x00001594 mov r0, r5 | r0 = r5;
0x00001596 mov r4, r3 | r4 = r3;
0x00001598 mov.w r8, 1 | r8 = 1;
0x0000159c blx 0x9f8 | r0 = json_string_value ();
0x000015a0 mov r5, r0 | r5 = r0;
0x000015a2 b 0x11c6 | goto label_24;
| label_58:
0x000015a4 mov r0, r5 | r0 = r5;
0x000015a6 blx 0x9e0 | json_delete ();
0x000015aa b 0x10c8 | goto label_3;
| label_78:
0x000015ac ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x000015ae mov r0, r6 | r0 = r6;
0x000015b0 blx 0xa34 | r0 = g_strcmp0 ();
0x000015b4 mov r4, r0 | r4 = r0;
0x000015b6 cmp r0, 0 |
| if (r0 != 0) {
0x000015b8 bne.w 0x139a | goto label_35;
| }
0x000015bc blx 0x98c | json_array ();
0x000015c0 str r0, [sp, 0x2c] | var_2ch = r0;
0x000015c2 cmp r0, 0 |
| if (r0 == 0) {
0x000015c4 beq.w 0x139a | goto label_35;
| }
0x000015c8 ldr r2, [sp, 0x28] | r2 = s2;
0x000015ca ldr r0, [r2] | r0 = *(r2);
0x000015cc cmp r0, 0 |
| if (r0 == 0) {
0x000015ce beq.w 0x1722 | goto label_86;
| }
0x000015d2 mov r3, r4 | r3 = r4;
| do {
0x000015d4 ldr r4, [r2, 4]! | r4 = *((r2 += 4));
0x000015d8 mov fp, r3 |
0x000015da adds r3, 1 | r3++;
0x000015dc cmp r4, 0 |
0x000015de bne 0x15d4 |
| } while (r4 != 0);
0x000015e0 lsls r3, r3, 2 | r3 <<= 2;
0x000015e2 mov r0, r3 | r0 = r3;
0x000015e4 str r3, [sp, 0x30] | n = r3;
0x000015e6 blx 0x968 | r0 = g_malloc ();
0x000015ea mov sl, r0 | sl = r0;
0x000015ec cmp r0, 0 |
| if (r0 == 0) {
0x000015ee beq.w 0x1732 | goto label_87;
| }
0x000015f2 ldr r6, [sp, 0x30] | r6 = n;
0x000015f4 ldr r1, [sp, 0x28] | r1 = s2;
0x000015f6 mov r2, r6 | r2 = r6;
0x000015f8 subs r6, 4 | r6 -= 4;
0x000015fa blx 0x9c8 | memcpy (r0, r1, r2);
0x000015fe add r6, sl | r6 += sl;
0x00001600 mov lr, r4 | lr = r4;
| label_36:
0x00001602 cmp r6, sl |
| if (r6 < sl) {
0x00001604 bls 0x163c | goto label_88;
| }
0x00001606 mov ip, r8 |
0x00001608 mov r3, sl | r3 = sl;
| do {
0x0000160a ldr r2, [r3], 4 | r2 = *(r3);
| r3 += 4;
0x0000160e ldr r1, [r3] | r1 = *(r3);
0x00001610 ldr r4, [r2] | r4 = *(r2);
0x00001612 ldr r0, [r1] | r0 = *(r1);
0x00001614 cmp r4, r0 |
0x00001616 itt hi |
| if (r4 <= r0) {
0x00001618 movhi ip, 0 |
| }
| if (r4 > r0) {
0x0000161c strd r1, r2, [r3, -0x4] | __asm ("strd r1, r2, [r3, -0x4]");
| }
0x00001620 cmp r3, r6 |
0x00001622 blo 0x160a |
| } while (r3 <= r6);
0x00001624 eor r3, ip, 1 | r3 = ip ^ 1;
0x00001628 subs r6, 4 | r6 -= 4;
0x0000162a cmp lr, fp |
0x0000162c ite ge |
| if (lr < fp) {
0x0000162e movge r3, 0 | r3 = 0;
| }
| if (lr >= fp) {
0x00001630 andlt r3, r3, 1 | r3 &= 1;
| }
0x00001634 add.w lr, lr, 1 | lr++;
0x00001638 cmp r3, 0 |
| if (r3 != 0) {
0x0000163a bne 0x1602 | goto label_36;
| }
| label_88:
0x0000163c ldr r3, [sp, 0x30] | r3 = n;
0x0000163e add r3, sl | r3 += sl;
0x00001640 cmp sl, r3 |
0x00001642 mov fp, r3 |
| if (sl >= r3) {
0x00001644 bhs 0x172a | goto label_89;
| }
0x00001646 ldr.w r8, [pc, 0x1ac] |
0x0000164a mov r6, sl | r6 = sl;
0x0000164c ldr r4, [sp, 0x2c] | r4 = var_2ch;
0x0000164e str r5, [sp, 0x30] | n = r5;
0x00001650 add r8, pc | r8 = 0x2e4a;
0x00001652 str r7, [sp, 0x38] | var_38h = r7;
0x00001654 b 0x165a |
| while (fp > r6) {
0x00001656 cmp r5, 0 |
| if (r5 != 0) {
0x00001658 bne 0x170c | goto label_90;
| }
0x0000165a ldr r3, [r6], 4 | r3 = *(r6);
| r6 += 4;
0x0000165e mov r0, r8 | r0 = r8;
0x00001660 ldrd r1, r2, [r3] | __asm ("ldrd r1, r2, [r3]");
0x00001664 blx 0xa40 | r0 = g_strdup_printf ()
0x00001668 mov r7, r0 | r7 = r0;
0x0000166a cmp r0, 0 |
| if (r0 == 0) {
0x0000166c beq 0x1742 | goto label_91;
| }
0x0000166e blx 0xa64 | r0 = json_string ();
0x00001672 mov r1, r0 | r1 = r0;
0x00001674 mov r0, r4 | r0 = r4;
0x00001676 blx 0x9a4 | r0 = json_array_append_new ();
0x0000167a mov r5, r0 | r5 = r0;
0x0000167c mov r0, r7 | r0 = r7;
0x0000167e blx 0x980 | g_free ();
0x00001682 cmp fp, r6 |
0x00001684 bhi 0x1656 |
| }
0x00001686 mov r4, r5 | r4 = r5;
0x00001688 mov r0, sl | r0 = sl;
0x0000168a ldr r5, [sp, 0x30] | r5 = n;
0x0000168c ldr r7, [sp, 0x38] | r7 = var_38h;
0x0000168e blx 0x980 | g_free ();
0x00001692 cmp r4, 0 |
| if (r4 != 0) {
0x00001694 bne 0x1716 | goto label_40;
| }
| label_39:
0x00001696 blx 0x9d4 | json_object ();
0x0000169a str r0, [sp, 0x50] | var_50h = r0;
| if (r0 == 0) {
0x0000169c cbz r0, 0x16d2 | goto label_42;
| }
0x0000169e ldr r1, [pc, 0x158] |
0x000016a0 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000016a2 add r1, pc | r1 = 0x2ea0;
0x000016a4 adds r1, 0x70 | r1 += 0x70;
0x000016a6 blx 0x9b0 | r0 = json_object_set_new_nocheck ();
0x000016aa cmp r0, 0 |
| if (r0 == 0) {
0x000016ac beq.w 0x1468 | goto label_37;
| }
0x000016b0 ldr r0, [sp, 0x50] | r0 = var_50h;
| if (r0 == 0) {
0x000016b2 cbz r0, 0x16d2 | goto label_42;
| }
0x000016b4 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000016b6 adds r3, 1 | r3++;
| if (r3 == 1) {
0x000016b8 beq 0x16d2 | goto label_42;
| }
0x000016ba adds r3, r0, 4 | r3 = r0 + 4;
0x000016bc dmb ish | __asm ("dmb ish");
| do {
0x000016c0 ldrex r2, [r3] | __asm ("ldrex r2, [r3]");
0x000016c4 subs r2, 1 | r2--;
0x000016c6 strex r1, r2, [r3] | __asm ("strex r1, r2, [r3]");
0x000016ca cmp r1, 0 |
0x000016cc bne 0x16c0 |
| } while (r1 != 0);
0x000016ce cmp r2, 0 |
| if (r2 == 0) {
0x000016d0 beq 0x1756 | goto label_92;
| }
| label_42:
0x000016d2 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000016d4 movs r2, 0 | r2 = 0;
0x000016d6 str r2, [sp, 0x50] | var_50h = r2;
0x000016d8 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000016da adds r3, 1 | r3++;
| if (r3 == 1) {
0x000016dc beq.w 0x1046 | goto label_19;
| }
| label_38:
0x000016e0 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000016e2 dmb ish | __asm ("dmb ish");
0x000016e6 adds r3, 4 | r3 += 4;
| do {
0x000016e8 ldrex r2, [r3] | __asm ("ldrex r2, [r3]");
0x000016ec subs r2, 1 | r2--;
0x000016ee strex r1, r2, [r3] | __asm ("strex r1, r2, [r3]");
0x000016f2 cmp r1, 0 |
0x000016f4 bne 0x16e8 |
| } while (r1 != 0);
0x000016f6 cmp r2, 0 |
| if (r2 != 0) {
0x000016f8 bne.w 0x139a | goto label_35;
| }
0x000016fc ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000016fe blx 0x9e0 | json_delete ();
0x00001702 ldr r2, [sp, 0x50] | r2 = var_50h;
0x00001704 cmp r2, 0 |
| if (r2 != 0) {
0x00001706 bne.w 0x11fa | goto label_18;
| }
0x0000170a b 0x1046 | goto label_19;
| label_90:
0x0000170c ldr r5, [sp, 0x30] | r5 = n;
0x0000170e ldr r7, [sp, 0x38] | r7 = var_38h;
| label_41:
0x00001710 mov r0, sl | r0 = sl;
0x00001712 blx 0x980 | g_free ();
| label_40:
0x00001716 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00001718 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0000171a adds r3, 1 | r3++;
| if (r3 == 1) {
0x0000171c beq.w 0x139a | goto label_35;
| }
0x00001720 b 0x16e0 | goto label_38;
| label_86:
0x00001722 blx 0x968 | r0 = g_malloc ();
0x00001726 mov sl, r0 | sl = r0;
| if (r0 != 0) {
0x00001728 cbz r0, 0x1732 |
| label_89:
0x0000172a mov r0, sl | r0 = sl;
0x0000172c blx 0x980 | g_free ();
0x00001730 b 0x1696 | goto label_39;
| }
| label_87:
0x00001732 ldr r1, [pc, 0xc8] |
0x00001734 mov.w r0, 0x7d0 | r0 = 0x7d0;
0x00001738 add r1, pc | r1 = 0x2f3a;
0x0000173a blx 0xab8 | fcn_00000ab8 ();
0x0000173e str r0, [sp, 0x50] | var_50h = r0;
0x00001740 b 0x1716 | goto label_40;
| label_91:
0x00001742 ldr r1, [pc, 0xbc] |
0x00001744 mov.w r0, 0x7d0 | r0 = 0x7d0;
0x00001748 ldr r5, [sp, 0x30] | r5 = n;
0x0000174a ldr r7, [sp, 0x38] | r7 = var_38h;
0x0000174c add r1, pc | r1 = 0x2f52;
0x0000174e blx 0xab8 | fcn_00000ab8 ();
0x00001752 str r0, [sp, 0x50] | var_50h = r0;
0x00001754 b 0x1710 | goto label_41;
| label_92:
0x00001756 blx 0x9e0 | json_delete ();
0x0000175a b 0x16d2 | goto label_42;
| label_84:
0x0000175c ldr r3, [r5] | r3 = *(r5);
0x0000175e cmp r3, 2 |
| if (r3 != 2) {
0x00001760 bne.w 0x1326 | goto label_28;
| }
0x00001764 movs r4, 1 | r4 = 1;
0x00001766 mov fp, r4 |
0x00001768 b 0x14a2 | goto label_27;
| label_59:
0x0000176a blx 0x9ec | stack_chk_fail ();
0x0000176e nop |
0x00001770 asrs r6, r0, 1 | r6 = r0 >> 1;
0x00001772 movs r1, r0 | r1 = r0;
0x00001774 lsls r4, r4, 2 | r4 <<= 2;
0x00001776 movs r0, r0 |
0x00001778 asrs r2, r7, 0x20 | r2 = r7 >> 0x20;
0x0000177a movs r1, r0 | r1 = r0;
0x0000177c lsrs r2, r1, 0xe | r2 = r1 >> 0xe;
0x0000177e movs r0, r0 |
0x00001780 lsrs r6, r0, 0xe | r6 = r0 >> 0xe;
0x00001782 movs r0, r0 |
0x00001784 lsrs r4, r7, 6 | r4 = r7 >> 6;
0x00001786 movs r0, r0 |
0x00001788 lsrs r0, r1, 6 | r0 = r1 >> 6;
0x0000178a movs r0, r0 |
0x0000178c lsrs r2, r6, 6 | r2 = r6 >> 6;
0x0000178e movs r0, r0 |
0x00001790 lsrs r0, r2, 6 | r0 = r2 >> 6;
0x00001792 movs r0, r0 |
0x00001794 lsrs r2, r7, 9 | r2 = r7 >> 9;
0x00001796 movs r0, r0 |
0x00001798 lsrs r4, r5, 8 | r4 = r5 >> 8;
0x0000179a movs r0, r0 |
0x0000179c lsrs r4, r6, 7 | r4 = r6 >> 7;
0x0000179e movs r0, r0 |
0x000017a0 lsls r0, r6, 2 | r0 = r6 << 2;
0x000017a2 movs r0, r0 |
0x000017a4 lsrs r4, r1, 0x19 | r4 = r1 >> 0x19;
0x000017a6 movs r1, r0 | r1 = r0;
0x000017a8 lsrs r2, r2, 7 | r2 >>= 7;
0x000017aa movs r0, r0 |
0x000017ac lsrs r2, r7, 0x20 | r2 = r7 >> 0x20;
0x000017ae movs r0, r0 |
0x000017b0 lsls r6, r3, 0x1e | r6 = r3 << 0x1e;
0x000017b2 movs r0, r0 |
0x000017b4 lsrs r4, r1, 2 | r4 = r1 >> 2;
0x000017b6 movs r0, r0 |
0x000017b8 lsrs r2, r2, 0xd | r2 >>= 0xd;
0x000017ba movs r1, r0 | r1 = r0;
0x000017bc lsls r0, r0, 0x1c | r0 <<= 0x1c;
0x000017be movs r0, r0 |
0x000017c0 lsrs r0, r7, 0xb | r0 = r7 >> 0xb;
0x000017c2 movs r1, r0 | r1 = r0;
0x000017c4 lsls r6, r6, 0x19 | r6 <<= 0x19;
0x000017c6 movs r0, r0 |
0x000017c8 lsls r0, r4, 0x1a | r0 = r4 << 0x1a;
0x000017ca movs r0, r0 |
0x000017cc lsls r2, r4, 0x15 | r2 = r4 << 0x15;
0x000017ce movs r0, r0 |
0x000017d0 lsls r4, r0, 0x19 | r4 = r0 << 0x19;
0x000017d2 movs r0, r0 |
0x000017d4 lsls r0, r4, 0x19 | r0 = r4 << 0x19;
0x000017d6 movs r0, r0 |
0x000017d8 lsls r2, r1, 0x19 | r2 = r1 << 0x19;
0x000017da movs r0, r0 |
0x000017dc lsls r0, r3, 0x16 | r0 = r3 << 0x16;
0x000017de movs r0, r0 |
0x000017e0 lsls r0, r2, 0x19 | r0 = r2 << 0x19;
0x000017e2 movs r0, r0 |
0x000017e4 lsls r6, r1, 0x13 | r6 = r1 << 0x13;
0x000017e6 movs r0, r0 |
0x000017e8 lsls r4, r3, 0x10 | r4 = r3 << 0x10;
0x000017ea movs r0, r0 |
0x000017ec lsls r6, r5, 0x13 | r6 = r5 << 0x13;
0x000017ee movs r0, r0 |
0x000017f0 lsls r4, r2, 0x12 | r4 = r2 << 0x12;
0x000017f2 movs r0, r0 |
0x000017f4 lsls r0, r2, 9 | r0 = r2 << 9;
0x000017f6 movs r0, r0 |
0x000017f8 lsls r2, r5, 0x11 | r2 = r5 << 0x11;
0x000017fa movs r0, r0 |
0x000017fc lsls r4, r5, 0xc | r4 = r5 << 0xc;
0x000017fe movs r0, r0 |
0x00001800 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x00001802 movs r0, r0 |
| /* [12] -r-x section size 8 named .fini */
0x00001804 ands r0, r1 | r0 &= r1;
0x00001806 invalid |
| }
[*] Function printf used 4 times libaxcgijson.so