[*] Binary protection state of ldconfig

  
  	Partial RELRO  No Canary found   NX disabled  No PIE       No RPATH     No RUNPATH   No Symbols


[*] Function printf tear down of ldconfig

    ; 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/sbin/ldconfig @ 0x11168 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.00011168 ()                      | void fcn_00011168 (char * arg_1080h, int32_t arg_2080h, char * filename, int32_t arg1, int32_t arg2) {
                                                 |     int32_t var_0h;
                                                 |     int32_t var_ch;
                                                 |     void * buf;
                                                 |     int32_t var_64h;
                                                 |     int32_t var_68h;
                                                 |     char * s;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x00011168 push {r4, r5, r6, r7, r8, lr}     |     
    0x0001116c sub sp, sp, 0x4000                |     
    0x00011170 sub sp, sp, 0xb0                  |     
    0x00011174 mov r4, r0                        |     r4 = r0;
    0x00011178 mov r3, r1                        |     r3 = r1;
    0x0001117c mov r8, r2                        |     r8 = r2;
    0x00011180 mov r5, r1                        |     r5 = r1;
    0x00011184 mov r2, r0                        |     r2 = r0;
    0x00011188 ldr r1, [pc, 0x1d0]               |     r1 = *(0x1135c);
    0x0001118c add r0, sp, 0xb0                  |     r0 += s;
    0x00011190 bl 0x10c74                        |     sprintf (r0, r1, r2)
    0x00011194 mov r2, r4                        |     r2 = r4;
    0x00011198 add r0, sp, 0x1080                |     r0 += arg_1080h;
    0x0001119c ldr r4, [pc, 0x1c0]               |     r4 = "_s__s";
    0x000111a0 mov r3, r8                        |     r3 = r8;
    0x000111a4 ldr r1, [pc, 0x1b4]               |     r1 = *(0x1135c);
    0x000111a8 add r0, r0, 0x30                  |     r0 += 0x30;
    0x000111ac bl 0x10c74                        |     sprintf (r0, r1, r2)
    0x000111b0 add r2, sp, 0x2080                |     r2 += arg_2080h;
    0x000111b4 add r2, r2, 0x30                  |     r2 += 0x30;
    0x000111b8 add r1, sp, 0xb0                  |     r1 += s;
    0x000111bc ldr r0, [r4]                      |     r0 = "_s__s";
    0x000111c0 bl 0x12138                        |     r0 = fcn_00012138 ("_s__s", r1, r2, r3);
    0x000111c4 cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x000111c8 bne 0x111dc                       |         
    0x000111cc ldr r2, [r4]                      |         r2 = *(r4);
    0x000111d0 add r1, sp, 0xb0                  |         r1 += s;
    0x000111d4 ldr r0, [pc, 0x18c]               |         r0 = *(0x11364);
    0x000111d8 bl 0x10cd4                        |         warn (r0);
                                                 |     }
    0x000111dc add r2, sp, 0x3080                |     r2 += filename;
    0x000111e0 add r1, sp, 0x1080                |     r1 += arg_1080h;
    0x000111e4 add r2, r2, 0x30                  |     r2 += 0x30;
    0x000111e8 add r1, r1, 0x30                  |     r1 += 0x30;
    0x000111ec ldr r0, [r4]                      |     r0 = *(r4);
    0x000111f0 bl 0x12138                        |     r0 = fcn_00012138 (r0, r1, r2, r3);
    0x000111f4 cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x000111f8 bne 0x11210                       |         
    0x000111fc add r1, sp, 0x1080                |         r1 += arg_1080h;
    0x00011200 ldr r2, [r4]                      |         r2 = *(r4);
    0x00011204 add r1, r1, 0x30                  |         r1 += 0x30;
    0x00011208 ldr r0, [pc, 0x158]               |         r0 = *(0x11364);
    0x0001120c bl 0x10cd4                        |         warn (r0);
                                                 |     }
    0x00011210 add r0, sp, 0x3080                |     r0 += filename;
    0x00011214 add r1, sp, 0x58                  |     r1 += buf;
    0x00011218 add r0, r0, 0x30                  |     r0 += 0x30;
    0x0001121c bl 0x10c80                        |     r0 = stat ();
    0x00011220 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x00011224 bne 0x1124c                       |         goto label_0;
                                                 |     }
    0x00011228 add r0, sp, 0x2080                |     r0 += arg_2080h;
    0x0001122c mov r1, sp                        |     r1 = sp;
    0x00011230 add r0, r0, 0x30                  |     r0 += 0x30;
    0x00011234 bl 0x10c80                        |     r0 = stat ();
    0x00011238 cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x0001123c beq 0x11260                       |         goto label_3;
                                                 |     }
    0x00011240 add r1, sp, 0xb0                  |     r1 += s;
    0x00011244 ldr r0, [pc, 0x120]               |     r0 = "cant_resolve__s_in_chroot__s";
    0x00011248 bl 0x10cd4                        |     warn ("cant_resolve__s_in_chroot__s");
                                                 |     do {
                                                 | label_0:
    0x0001124c ldr r3, [r4, 4]                   |         r3 = *((r4 + 4));
    0x00011250 cmp r3, 0                         |         
                                                 |         if (r3 == 0) {
    0x00011254 beq 0x112c8                       |             goto label_4;
                                                 |         }
                                                 | label_2:
    0x00011258 mov r0, 1                         |         r0 = 1;
    0x0001125c b 0x11284                         |         goto label_5;
                                                 | label_3:
    0x00011260 ldrd r6, r7, [sp]                 |         __asm ("ldrd r6, r7, [sp]");
    0x00011264 ldrd r2, r3, [sp, 0x58]           |         __asm ("ldrd r2, r3, [buf]");
    0x00011268 cmp r7, r3                        |         
    0x0001126c cmpeq r6, r2                      |         __asm ("cmpeq r6, r2");
    0x00011270 bne 0x1124c                       |         
                                                 |     } while (r7 != r3);
    0x00011274 ldr r2, [sp, 0xc]                 |     r2 = var_ch;
    0x00011278 ldr r3, [sp, 0x64]                |     r3 = var_64h;
    0x0001127c cmp r2, r3                        |     
                                                 |     if (r2 != r3) {
    0x00011280 bne 0x1124c                       |         goto label_0;
                                                 |     }
                                                 |     do {
                                                 | label_5:
    0x00011284 ldr r3, [r4, 8]                   |         r3 = *((r4 + 8));
    0x00011288 cmp r3, 0                         |         
                                                 |         if (r3 > 0) {
    0x0001128c ble 0x112bc                       |             
    0x00011290 cmn r0, 1                         |             
                                                 |             if (r0 != 1) {
    0x00011294 ldreq r3, [pc, 0xd4]              |                 r3 = "_SKIPPED_";
                                                 |             }
                                                 |             if (r0 != 1) {
    0x00011298 beq 0x112ac                       |                 
    0x0001129c ldr r2, [pc, 0xd0]                |                 r2 = "_SKIPPED_";
    0x000112a0 cmp r0, 1                         |                 
    0x000112a4 ldr r3, [pc, 0xcc]                |                 r3 = *(0x11374);
                                                 |                 if (r0 != 1) {
    0x000112a8 movne r3, r2                      |                     r3 = r2;
                                                 |                     goto label_6;
                                                 |                 }
                                                 |             }
                                                 | label_6:
    0x000112ac mov r2, r5                        |             r2 = r5;
    0x000112b0 mov r1, r8                        |             r1 = r8;
    0x000112b4 ldr r0, [pc, 0xc0]                |             r0 = " (changed)";
    0x000112b8 bl 0x10af4                        |             printf (r0, r1, "_SKIPPED_", r3)
                                                 |         }
    0x000112bc add sp, sp, 0x4000                |         
    0x000112c0 add sp, sp, 0xb0                  |         
    0x000112c4 pop {r4, r5, r6, r7, r8, pc}      |         
                                                 | label_4:
    0x000112c8 add r0, sp, 0x3080                |         r0 += filename;
    0x000112cc add r1, sp, 0x58                  |         r1 += buf;
    0x000112d0 add r0, r0, 0x30                  |         r0 += 0x30;
    0x000112d4 bl 0x10bcc                        |         r0 = lstat (r0, r1);
    0x000112d8 cmp r0, 0                         |         
                                                 |         if (r0 != 0) {
    0x000112dc bne 0x11330                       |             goto label_7;
                                                 |         }
    0x000112e0 ldr r3, [sp, 0x68]                |         r3 = var_68h;
    0x000112e4 and r3, r3, 0xf000                |         r3 &= 0xf000;
    0x000112e8 cmp r3, 0xa000                    |         
                                                 |         if (r3 == 0xa000) {
    0x000112ec beq 0x11308                       |             goto label_8;
                                                 |         }
    0x000112f0 add r1, sp, 0x1080                |         r1 += arg_1080h;
    0x000112f4 add r1, r1, 0x30                  |         r1 += 0x30;
    0x000112f8 ldr r0, [pc, 0x80]                |         r0 = "_s____s_s";
    0x000112fc bl 0x10ae8                        |         warnx ("_s____s_s");
                                                 | label_1:
    0x00011300 mvn r0, 0                         |         r0 = ~0;
    0x00011304 b 0x11284                         |         
                                                 |     } while (1);
                                                 | label_8:
    0x00011308 add r0, sp, 0x3080                |     r0 += filename;
    0x0001130c add r0, r0, 0x30                  |     r0 += 0x30;
    0x00011310 bl 0x10b48                        |     r0 = remove (r0);
    0x00011314 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x00011318 beq 0x11330                       |         
    0x0001131c add r1, sp, 0x1080                |         r1 += arg_1080h;
    0x00011320 add r1, r1, 0x30                  |         r1 += 0x30;
    0x00011324 ldr r0, [pc, 0x58]                |         r0 = "_s_is_not_a_symlink";
    0x00011328 bl 0x10cd4                        |         warn ("_s_is_not_a_symlink");
    0x0001132c b 0x11300                         |         goto label_1;
                                                 |     }
                                                 | label_7:
    0x00011330 add r1, sp, 0x3080                |     r1 += filename;
    0x00011334 add r1, r1, 0x30                  |     r1 += 0x30;
    0x00011338 mov r0, r5                        |     r0 = r5;
    0x0001133c bl 0x10c20                        |     r0 = symlink (r0, r1);
    0x00011340 cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x00011344 beq 0x11258                       |         goto label_2;
                                                 |     }
    0x00011348 add r1, sp, 0x1080                |     r1 += arg_1080h;
    0x0001134c mov r2, r5                        |     r2 = r5;
    0x00011350 add r1, r1, 0x30                  |     r1 += 0x30;
    0x00011354 ldr r0, [pc, 0x2c]                |     r0 = "cant_unlink__s";
    0x00011358 bl 0x10cd4                        |     warn ("cant_unlink__s");
    0x0001135c b 0x11300                         |     goto label_1;
                                                 | }
    ; 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/sbin/ldconfig @ 0x11e00 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00011e00 ()                                  | void fcn_00011e00 (int32_t arg_0h, const char * src) {
                                                             |     int32_t var_4h;
                                                             |     char * * endptr;
                                                             |     int32_t var_ch;
                                                             |     int32_t var_10h;
                                                             |     int32_t var_ch_2;
                                                             |     int32_t var_8h_2;
                                                             |     char * str;
                                                             |     int32_t var_20h;
                                                             |     int32_t var_bh;
                                                             |     int32_t var_1000h;
                                                             |     int32_t var_24h;
                                                             |     r0 = src;
    0x00011e00 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x00011e04 sub sp, sp, 0x1000                            |     
    0x00011e08 sub sp, sp, 0x24                              |     
    0x00011e0c bl 0x10c14                                    |     r0 = strdup (r0);
    0x00011e10 subs r7, r0, 0                                |     r7 = r0 - 0;
                                                             |     if (r7 != r0) {
    0x00011e14 bne 0x11edc                                   |         goto label_9;
                                                             |     }
    0x00011e18 ldr r1, [pc, 0x2e8]                           |     r1 = *(0x12104);
    0x00011e1c mov r0, 1                                     |     r0 = 1;
    0x00011e20 bl 0x10c44                                    |     err ();
                                                             |     do {
    0x00011e24 bl 0x10cb0                                    |         strlen (r0);
    0x00011e28 add r1, r4, 1                                 |         r1 = r4 + 1;
    0x00011e2c mov r5, r0                                    |         r5 = r0;
    0x00011e30 sub r2, r0, 1                                 |         r2 = r0 - 1;
    0x00011e34 add r5, r4, r5                                |         r5 = r4 + r5;
    0x00011e38 mov r0, r4                                    |         r0 = r4;
    0x00011e3c bl 0x10b0c                                    |         memmove (r0, r1, r2);
    0x00011e40 strb r8, [r5, -1]                             |         *((r5 - 1)) = r8;
                                                             | label_0:
    0x00011e44 mov r0, r4                                    |         r0 = r4;
    0x00011e48 mov r1, r6                                    |         r1 = r6;
    0x00011e4c bl 0x10bd8                                    |         r0 = strstr (r0, r1);
    0x00011e50 subs r4, r0, 0                                |         r4 = r0 - 0;
    0x00011e54 bne 0x11e24                                   |         
                                                             |     } while (r4 != r0);
    0x00011e58 ldr r5, [pc, 0x2ac]                           |     r5 = "Out of memory!\n";
    0x00011e5c ldr r3, [r5, 8]                               |     r3 = "_s:";
    0x00011e60 cmp r3, 0                                     |     
                                                             |     if (r3 > 0) {
    0x00011e64 ble 0x11e74                                   |         
    0x00011e68 mov r1, r7                                    |         r1 = r7;
    0x00011e6c ldr r0, [pc, 0x29c]                           |         r0 = *(0x1210c);
    0x00011e70 bl 0x10af4                                    |         printf (r0, r1)
                                                             |     }
    0x00011e74 add r4, sp, 0x20                              |     r4 += var_20h;
    0x00011e78 mov r2, r4                                    |     r2 = r4;
    0x00011e7c mov r1, r7                                    |     r1 = r7;
    0x00011e80 ldr r0, [r5]                                  |     r0 = *(r5);
    0x00011e84 bl 0x12138                                    |     r0 = fcn_00012138 (r0, r1, r2, r3);
    0x00011e88 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00011e8c bne 0x11ea0                                   |         
    0x00011e90 ldr r2, [r5]                                  |         r2 = *(r5);
    0x00011e94 mov r1, r7                                    |         r1 = r7;
    0x00011e98 ldr r0, [pc, 0x274]                           |         r0 = "_s:";
    0x00011e9c bl 0x10cd4                                    |         warn ("_s:");
                                                             |     }
    0x00011ea0 mov r0, r4                                    |     r0 = r4;
    0x00011ea4 bl 0x10c5c                                    |     opendir ();
    0x00011ea8 subs sl, r0, 0                                |     sl -= var_20h;
                                                             |     if (sl == var_20h) {
    0x00011eac subne r3, r4, 0xc                             |         r3 -= var_ch_2;
                                                             |     }
                                                             |     if (sl == var_20h) {
    0x00011eb0 movne r5, 0                                   |         r5 = 0;
                                                             |     }
                                                             |     if (sl == var_20h) {
    0x00011eb4 strne r3, [sp, 0xc]                           |         var_ch = r3;
                                                             |     }
                                                             |     if (sl != var_20h) {
    0x00011eb8 bne 0x11f84                                   |         goto label_10;
                                                             |     }
    0x00011ebc mov r1, r7                                    |     r1 = r7;
    0x00011ec0 ldr r0, [pc, 0x250]                           |     r0 = "cant_resolve__s_in_chroot__s";
    0x00011ec4 bl 0x10cd4                                    |     warn ("cant_resolve__s_in_chroot__s");
                                                             | label_1:
    0x00011ec8 mov r0, r7                                    |     r0 = r7;
    0x00011ecc bl 0x10cec                                    |     free (r0);
    0x00011ed0 add sp, sp, 0x1000                            |     
    0x00011ed4 add sp, sp, 0x24                              |     
    0x00011ed8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |     
                                                             | label_9:
    0x00011edc mov r4, r7                                    |     r4 = r7;
    0x00011ee0 ldr r6, [pc, 0x234]                           |     r6 = "skipping__s";
    0x00011ee4 mov r8, 0                                     |     r8 = 0;
    0x00011ee8 b 0x11e44                                     |     goto label_0;
                                                             |     do {
    0x00011eec add r8, r0, 0xb                               |         r8 += var_bh;
    0x00011ef0 ldr r3, [sp, 0xc]                             |         r3 = var_ch;
    0x00011ef4 mov r2, r6                                    |         r2 = r6;
    0x00011ef8 mov r1, r8                                    |         r1 = r8;
    0x00011efc mov r0, r7                                    |         r0 = r7;
    0x00011f00 bl 0x113a0                                    |         r0 = fcn_000113a0 (r0, r1, r2, r3, r4, r5, r6);
    0x00011f04 subs sb, r0, 0                                |         sb = r0 - 0;
                                                             |         if (sb != r0) {
    0x00011f08 beq 0x11f88                                   |             
    0x00011f0c mov r6, r5                                    |             r6 = r5;
                                                             | label_7:
    0x00011f10 cmp r6, 0                                     |             
                                                             |             if (r6 == 0) {
    0x00011f14 bne 0x11f2c                                   |                 
    0x00011f18 mov r0, 0x14                                  |                 r0 = 0x14;
    0x00011f1c bl 0x10b3c                                    |                 r0 = malloc (r0);
    0x00011f20 subs r6, r0, 0                                |                 r6 = r0 - 0;
                                                             |                 if (r6 != r0) {
    0x00011f24 bne 0x120b0                                   |                     goto label_11;
                                                             |                 }
    0x00011f28 bl 0x10cf8                                    |                 fcn_00010cf8 ();
                                                             |             }
    0x00011f2c ldr r1, [r6]                                  |             r1 = *(r6);
    0x00011f30 mov r0, sb                                    |             r0 = sb;
    0x00011f34 bl 0x10c68                                    |             r0 = strcmp (r0, r1);
    0x00011f38 cmp r0, 0                                     |             
                                                             |             if (r0 != 0) {
    0x00011f3c bne 0x120a8                                   |                 goto label_12;
                                                             |             }
    0x00011f40 ldr r2, [r4, -0xc]                            |             r2 = var_ch_2;
    0x00011f44 ldr r3, [r6, 0xc]                             |             r3 = *((r6 + 0xc));
    0x00011f48 cmp r2, 0                                     |             
                                                             |             if (r2 != 0) {
    0x00011f4c bne 0x11fd8                                   |                 goto label_13;
                                                             |             }
    0x00011f50 cmp r3, 0                                     |             
                                                             |             if (r3 == 0) {
    0x00011f54 beq 0x11fe0                                   |                 goto label_14;
                                                             |             }
                                                             | label_4:
    0x00011f58 ldr r0, [r6, 4]                               |             r0 = *((r6 + 4));
    0x00011f5c bl 0x10cec                                    |             free (r0);
    0x00011f60 mov r0, r8                                    |             r0 = r8;
    0x00011f64 bl 0x1138c                                    |             fcn_0001138c (r0);
    0x00011f68 ldr r3, [r4, -0x10]                           |             r3 = var_10h;
    0x00011f6c str r3, [r6, 8]                               |             *((r6 + 8)) = r3;
    0x00011f70 ldr r3, [r4, -0xc]                            |             r3 = var_ch_2;
    0x00011f74 str r3, [r6, 0xc]                             |             *((r6 + 0xc)) = r3;
    0x00011f78 str r0, [r6, 4]                               |             *((r6 + 4)) = r0;
                                                             | label_3:
    0x00011f7c mov r0, sb                                    |             r0 = sb;
    0x00011f80 bl 0x10cec                                    |             free (r0);
                                                             | label_10:
    0x00011f84 sub r6, r4, 0x10                              |             r6 -= var_10h;
                                                             |         }
    0x00011f88 mov r0, sl                                    |         r0 = sl;
    0x00011f8c bl 0x10b60                                    |         r0 = readdir ();
    0x00011f90 cmp r0, 0                                     |         
    0x00011f94 bne 0x11eec                                   |         
                                                             |     } while (r0 != 0);
    0x00011f98 mov r0, sl                                    |     r0 = sl;
    0x00011f9c bl 0x10cc8                                    |     closedir ();
    0x00011fa0 mov r4, r5                                    |     r4 = r5;
                                                             | label_8:
    0x00011fa4 cmp r4, 0                                     |     
                                                             |     if (r4 != 0) {
    0x00011fa8 bne 0x120e4                                   |         goto label_15;
                                                             |     }
                                                             | label_2:
    0x00011fac cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x00011fb0 beq 0x11ec8                                   |         goto label_1;
                                                             |     }
    0x00011fb4 ldr r0, [r5]                                  |     r0 = *(r5);
    0x00011fb8 ldr r4, [r5, 0x10]                            |     r4 = *((r5 + 0x10));
    0x00011fbc bl 0x10cec                                    |     free (r0);
    0x00011fc0 ldr r0, [r5, 4]                               |     r0 = *((r5 + 4));
    0x00011fc4 bl 0x10cec                                    |     free (r0);
    0x00011fc8 mov r0, r5                                    |     r0 = r5;
    0x00011fcc bl 0x10cec                                    |     free (r0);
    0x00011fd0 mov r5, r4                                    |     r5 = r4;
    0x00011fd4 b 0x11fac                                     |     goto label_2;
                                                             | label_13:
    0x00011fd8 cmp r2, r3                                    |     
                                                             |     if (r2 != r3) {
    0x00011fdc bne 0x11f7c                                   |         goto label_3;
                                                             |     }
                                                             | label_14:
    0x00011fe0 ldr r3, [r6, 4]                               |     r3 = *((r6 + 4));
    0x00011fe4 ldr fp, [pc, 0x134]                           |     fp = obj.__ctype_b;
    0x00011fe8 str r3, [r4, -4]                              |     str = r3;
    0x00011fec sub r3, r4, 8                                 |     r3 -= var_8h_2;
    0x00011ff0 str r8, [r4, -8]                              |     var_8h_2 = r8;
    0x00011ff4 str r3, [sp, 8]                               |     endptr = r3;
                                                             | label_5:
    0x00011ff8 ldr r0, [r4, -8]                              |     r0 = var_8h_2;
    0x00011ffc ldrb r3, [r0]                                 |     r3 = *(r0);
    0x00012000 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00012004 beq 0x11f7c                                   |         goto label_3;
                                                             |     }
    0x00012008 ldr r2, [r4, -4]                              |     r2 = str;
    0x0001200c ldr lr, [fp]                                  |     
    0x00012010 ldrb ip, [r2]                                 |     ip = *(r2);
    0x00012014 str r2, [sp, 4]                               |     var_4h = r2;
    0x00012018 ldr r2, [fp]                                  |     r2 = *(fp);
    0x0001201c lsl r1, ip, 1                                 |     r1 = ip << 1;
    0x00012020 ldrh r1, [lr, r1]                             |     r1 = *((lr + r1));
    0x00012024 lsl lr, r3, 1                                 |     lr = r3 << 1;
    0x00012028 ldrh lr, [r2, lr]                             |     
    0x0001202c and r1, r1, 8                                 |     r1 &= 8;
    0x00012030 tst lr, 8                                     |     
                                                             |     if ((lr & 8) == 0) {
    0x00012034 beq 0x1207c                                   |         goto label_16;
                                                             |     }
    0x00012038 cmp r1, 0                                     |     
                                                             |     if (r1 == 0) {
    0x0001203c beq 0x11f58                                   |         goto label_4;
                                                             |     }
    0x00012040 mov r2, 0xa                                   |     r2 = 0xa;
    0x00012044 ldr r1, [sp, 8]                               |     r1 = endptr;
    0x00012048 bl 0x10b54                                    |     strtoul (r0, r1, r2);
    0x0001204c mov r2, 0xa                                   |     r2 = 0xa;
    0x00012050 sub r1, r4, 4                                 |     r1 -= str;
    0x00012054 str r0, [sp, 4]                               |     var_4h = r0;
    0x00012058 ldr r0, [r4, -4]                              |     r0 = str;
    0x0001205c bl 0x10b54                                    |     strtoul (r0, r1, r2);
    0x00012060 ldr r3, [sp, 4]                               |     r3 = var_4h;
    0x00012064 cmp r3, r0                                    |     
                                                             |     if (r3 == r0) {
    0x00012068 beq 0x11ff8                                   |         goto label_5;
                                                             |     }
    0x0001206c sub r3, r3, r0                                |     r3 -= r0;
                                                             | label_6:
    0x00012070 cmp r3, 0                                     |     
                                                             |     if (r3 > 0) {
    0x00012074 bgt 0x11f58                                   |         goto label_4;
                                                             |     }
    0x00012078 b 0x11f7c                                     |     goto label_3;
                                                             | label_16:
    0x0001207c cmp r1, 0                                     |     
                                                             |     if (r1 != 0) {
    0x00012080 bne 0x11f7c                                   |         goto label_3;
                                                             |     }
    0x00012084 cmp r3, ip                                    |     
                                                             |     if (r3 != ip) {
    0x00012088 subne r3, r3, ip                              |         r3 -= ip;
                                                             |         goto label_17;
                                                             |     }
                                                             |     if (r3 != ip) {
                                                             | label_17:
    0x0001208c bne 0x12070                                   |         goto label_6;
                                                             |     }
    0x00012090 ldr r3, [sp, 4]                               |     r3 = var_4h;
    0x00012094 add r0, r0, 1                                 |     r0++;
    0x00012098 add r2, r3, 1                                 |     r2 = r3 + 1;
    0x0001209c str r0, [r4, -8]                              |     var_8h_2 = r0;
    0x000120a0 str r2, [r4, -4]                              |     str = r2;
    0x000120a4 b 0x11ff8                                     |     goto label_5;
                                                             | label_12:
    0x000120a8 ldr r6, [r6, 0x10]                            |     r6 = *((r6 + 0x10));
    0x000120ac b 0x11f10                                     |     goto label_7;
                                                             | label_11:
    0x000120b0 mov r0, sb                                    |     r0 = sb;
    0x000120b4 bl 0x1138c                                    |     fcn_0001138c (r0);
    0x000120b8 str r0, [r6]                                  |     *(r6) = r0;
    0x000120bc mov r0, r8                                    |     r0 = r8;
    0x000120c0 bl 0x1138c                                    |     fcn_0001138c (r0);
    0x000120c4 ldr r3, [r4, -0x10]                           |     r3 = var_10h;
    0x000120c8 str r5, [r6, 0x10]                            |     *((r6 + 0x10)) = r5;
    0x000120cc str r3, [r6, 8]                               |     *((r6 + 8)) = r3;
    0x000120d0 ldr r3, [r4, -0xc]                            |     r3 = var_ch_2;
    0x000120d4 mov r5, r6                                    |     r5 = r6;
    0x000120d8 str r3, [r6, 0xc]                             |     *((r6 + 0xc)) = r3;
    0x000120dc str r0, [r6, 4]                               |     *((r6 + 4)) = r0;
    0x000120e0 b 0x11f7c                                     |     goto label_3;
                                                             | label_15:
    0x000120e4 ldr r3, [r4, 0xc]                             |     r3 = *((r4 + 0xc));
    0x000120e8 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000120ec bne 0x12100                                   |         
    0x000120f0 ldr r2, [r4]                                  |         r2 = *(r4);
    0x000120f4 ldr r1, [r4, 4]                               |         r1 = *((r4 + 4));
    0x000120f8 mov r0, r7                                    |         r0 = r7;
    0x000120fc bl 0x11168                                    |         fcn_00011168 (r0, r1, r2, r3, r4);
                                                             |     }
    0x00012100 ldr r4, [r4, 0x10]                            |     r4 = *((r4 + 0x10));
    0x00012104 b 0x11fa4                                     |     goto label_8;
                                                             | }
    ; 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/sbin/ldconfig @ 0x12124 */
                                 | #include <stdint.h>
                                 |  
    ; (fcn) fcn.00012124 ()      | void fcn_00012124 () {
    0x00012124 ldr r0, [pc]      |     r0 = *(0x12124);
    0x00012128 b 0x10af4         |     return void (*0x10af4)() ();
                                 | }

[*] Function printf used 5 times ldconfig