[*] Binary protection state of getconf
Partial RELRO No Canary found NX disabled No PIE No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of getconf
; 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/bin/getconf @ 0x10cb0 */
| #include <stdint.h>
|
; (fcn) fcn.00010cb0 () | void fcn_00010cb0 () {
0x00010cb0 push {r4, lr} |
0x00010cb4 ldr r5, [pc, 0x28] | r5 = *(0x10ce0);
0x00010cb8 ldr r4, [pc, 0x28] | r4 = __progname;
0x00010cbc ldr r2, [r5] | r2 = *(0x10ce0);
0x00010cc0 ldr r1, [pc, 0x24] | r1 = stderr;
0x00010cc4 ldr r0, [r4] | r0 = __progname;
0x00010cc8 bl 0x106d8 | fprintf (r0, r1, r2, r3, r4, r5)
0x00010ccc ldr r2, [r5] | r2 = *(0x10ce0);
0x00010cd0 ldr r1, [pc, 0x18] | r1 = "Usage:__s___v_specification__variable_name__pathname_";
0x00010cd4 ldr r0, [r4] | r0 = __progname;
0x00010cd8 bl 0x106d8 | fprintf (r0, "Usage:__s___v_specification__variable_name__pathname_", r2)
0x00010cdc mov r0, 2 | r0 = 2;
0x00010ce0 bl 0x10720 | r0 = exit (r0);
| if (? != ?) {
0x00010ce4 andeq r4, r2, r0, ror r0 | r4 = r2 & (r0 >>> r0);
| }
| if (? != ?) {
0x00010ce8 andeq r4, r2, r4, ror r0 | r4 = r2 & (r4 >>> r0);
| }
| if (? != ?) {
0x00010cec muleq r1, r0, sp | r1 = r0 * sp;
| }
| /* Beware that this jump is a conditional jump.
| * r2dec transformed it as a return, due being the
| * last instruction. Please, check 'pdda' output
| * for more hints. */
0x00010cf0 andeq r1, r1, r7, asr 27 | return r1 &= (r7 >> 27);
| }
; 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/bin/getconf @ 0x10cf4 */
| #include <stdint.h>
|
; (fcn) fcn.00010cf4 () | void fcn_00010cf4 (int32_t arg1) {
| r0 = arg1;
0x00010cf4 ldr r4, [pc, 0x10c] | r4 = *(0x10e04);
0x00010cf8 ldr r8, [pc, 0x10c] | r8 = "_POSIX_LINK_MAX";
0x00010cfc ldr sb, [pc, 0x10c] | sb = "%.*s\n";
0x00010d00 ldr r6, [pc, 0x10c] | r6 = "%.*s\n";
0x00010d04 push {r7, lr} |
0x00010d08 mov r7, r0 | r7 = r0;
| do {
0x00010d0c ldr r1, [r4, -0xc] | r1 = *((r4 - 0xc));
0x00010d10 cmp r1, 0 |
| if (r1 != 0) {
0x00010d14 moveq r0, r1 | r0 = r1;
| }
| if (r1 == 0) {
0x00010d18 beq 0x10dcc | goto label_4;
| }
0x00010d1c mov r0, r8 | r0 = r8;
0x00010d20 bl 0x10660 | printf (r0);
0x00010d24 ldr r3, [r4, -4] | r3 = *((r4 - 4));
0x00010d28 cmp r3, 1 |
| if (r3 == 1) {
0x00010d2c beq 0x10d98 | goto label_5;
| }
| if (r3 <= 1) {
0x00010d30 blo 0x10d6c | goto label_6;
| }
0x00010d34 cmp r3, 2 |
| if (r3 == 2) {
0x00010d38 bne 0x10d64 |
0x00010d3c ldr r1, [r4, -8] | r1 = *((r4 - 8));
0x00010d40 mov r0, r7 | r0 = r7;
0x00010d44 bl 0x1066c | r0 = pathconf ();
0x00010d48 cmn r0, 1 |
0x00010d4c mov r1, r0 | r1 = r0;
| if (r0 != 1) {
0x00010d50 beq 0x10d5c |
| label_0:
0x00010d54 mov r0, r6 | r0 = r6;
| label_2:
0x00010d58 bl 0x10660 | printf (r0);
| }
| label_1:
0x00010d5c ldr r0, [pc, 0xb4] | r0 = "_ld";
0x00010d60 bl 0x10660 | printf ("_ld");
| }
| label_3:
0x00010d64 add r4, r4, 0xc | r4 += 0xc;
0x00010d68 b 0x10d0c |
| } while (1);
| label_6:
0x00010d6c ldr r0, [r4, -8] | r0 = *((r4 - 8));
0x00010d70 bl 0x10654 | r0 = sysconf ();
0x00010d74 cmn r0, 1 |
0x00010d78 mov r1, r0 | r1 = r0;
| if (r0 != 1) {
0x00010d7c bne 0x10d54 | goto label_0;
| }
0x00010d80 ldr r3, [r4, -8] | r3 = *((r4 - 8));
0x00010d84 sub r3, r3, 0x74 | r3 -= 0x74;
0x00010d88 cmp r3, 1 |
| if (r3 <= 1) {
0x00010d8c ldrls r0, [pc, 0x88] | r0 = *(0x00010e1c);
| goto label_7;
| }
| if (r3 > 1) {
| label_7:
0x00010d90 bhi 0x10d5c | goto label_1;
| }
0x00010d94 b 0x10d58 | goto label_2;
| label_5:
0x00010d98 mov r2, 0 | r2 = 0;
0x00010d9c mov r1, r2 | r1 = r2;
0x00010da0 ldr r0, [r4, -8] | r0 = *((r4 - 8));
0x00010da4 bl 0x106b4 | r0 = confstr ();
0x00010da8 mov sl, r0 | sl = r0;
0x00010dac bl 0x106a8 | r0 = malloc (r0);
0x00010db0 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00010db4 bne 0x10dd0 | goto label_8;
| }
0x00010db8 ldr r1, [pc, 0x60] | r1 = *(0x10e1c);
| do {
0x00010dbc ldr r3, [pc, 0x60] | r3 = "memory_exhausted";
0x00010dc0 ldr r0, [r3] | r0 = "memory_exhausted";
0x00010dc4 bl 0x106d8 | fprintf ("memory_exhausted", r1, r2, "memory_exhausted")
0x00010dc8 mov r0, 3 | r0 = 3;
| label_4:
0x00010dcc bl 0x10720 | exit (r0);
| label_8:
0x00010dd0 mov r1, r5 | r1 = r5;
0x00010dd4 mov r2, sl | r2 = sl;
0x00010dd8 ldr r0, [r4, -8] | r0 = *((r4 - 8));
0x00010ddc bl 0x106b4 | r0 = confstr ();
0x00010de0 cmp r0, sl |
0x00010de4 mov r1, r0 | r1 = r0;
| if (r0 == sl) {
0x00010de8 ldrne r1, [pc, 0x38] | r1 = "confstr";
| }
0x00010dec bne 0x10dbc |
| } while (r0 != sl);
0x00010df0 mov r2, r5 | r2 = r5;
0x00010df4 mov r0, sb | r0 = sb;
0x00010df8 bl 0x10660 | printf (r0, r1, r2);
0x00010dfc mov r0, r5 | r0 = r5;
0x00010e00 bl 0x10750 | free (r0);
0x00010e04 b 0x10d64 | goto label_3;
| }
; 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/bin/getconf @ 0x1075c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) main () | int32_t main (uint32_t argc, char ** argv) {
| char * s1;
| int32_t var_24h;
| int32_t var_20h_2;
| int32_t var_20h;
| r0 = argc;
| r1 = argv;
| /* [10] -r-x section size 1744 named .text */
0x0001075c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00010760 cmp r0, 1 |
0x00010764 add fp, sp, 0x20 |
0x00010768 sub sp, sp, 0x1c |
0x0001076c mov r4, r0 | r4 = r0;
0x00010770 mov r6, r1 | r6 = r1;
| if (r0 <= 1) {
0x00010774 ble 0x107f4 | goto label_11;
| }
0x00010778 ldr r5, [r1, 4] | r5 = *((r1 + 4));
0x0001077c ldr r1, [pc, 0x394] | r1 = *(0x10b14);
0x00010780 mov r0, r5 | r0 = r5;
0x00010784 bl 0x10708 | r0 = strcmp (r0, r1);
0x00010788 cmp r0, 0 |
| if (r0 != 0) {
0x0001078c bne 0x107c4 | goto label_12;
| }
0x00010790 ldr r2, [pc, 0x384] | r2 = "__version";
0x00010794 ldr r1, [pc, 0x384] | r1 = *(0x10b1c);
0x00010798 ldr r0, [pc, 0x384] | r0 = "getconf_regression_test";
0x0001079c bl 0x10660 | printf ("getconf_regression_test", r1, "__version");
0x000107a0 ldr r1, [pc, 0x380] | r1 = "getconf__GNU__s___s";
0x000107a4 ldr r0, [pc, 0x380] | r0 = "2009";
0x000107a8 bl 0x10660 | printf ("2009", "getconf__GNU__s___s");
0x000107ac ldr r1, [pc, 0x37c] | r1 = "Copyright__C___s_Free_Software_Foundation__Inc.This_is_free_software__see_the_source_for_copying_conditions.__There_is_NOwarranty__not_even_for_MERCHANTABILITY_or_FITNESS_FOR_A_PARTICULAR_PURPOSE.";
0x000107b0 ldr r0, [pc, 0x37c] | r0 = "Roland_McGrath";
0x000107b4 bl 0x10660 | printf ("Roland_McGrath", "Copyright__C___s_Free_Software_Foundation__Inc.This_is_free_software__see_the_source_for_copying_conditions.__There_is_NOwarranty__not_even_for_MERCHANTABILITY_or_FITNESS_FOR_A_PARTICULAR_PURPOSE.");
| do {
0x000107b8 mov r0, 0 | r0 = 0;
0x000107bc sub sp, fp, 0x20 |
0x000107c0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_12:
0x000107c4 ldr r1, [pc, 0x36c] | r1 = "Written by %s.\n";
0x000107c8 mov r0, r5 | r0 = r5;
0x000107cc bl 0x10708 | r0 = strcmp (r0, "Written by %s.\n");
0x000107d0 cmp r0, 0 |
| if (r0 != 0) {
0x000107d4 bne 0x107f4 | goto label_11;
| }
0x000107d8 ldr r0, [pc, 0x35c] | r0 = "--help";
0x000107dc bl 0x10660 | printf ("--help");
0x000107e0 ldr r3, [pc, 0x358] | r3 = "Usage:_getconf___v_SPEC__VAR__or:__getconf___v_SPEC__PATH_VAR_PATHGet_the_configuration_value_for_variable_VAR__or_for_variable_PATH_VARfor_path_PATH.__If_SPEC_is_given__give_values_for_compilationenvironment_SPEC.";
0x000107e4 ldr r0, [pc, 0x358] | r0 = stdout;
0x000107e8 ldr r1, [r3] | r1 = "Usage:_getconf___v_SPEC__VAR__or:__getconf___v_SPEC__PATH_VAR_PATHGet_the_configuration_value_for_variable_VAR__or_for_variable_PATH_VARfor_path_PATH.__If_SPEC_is_given__give_values_for_compilationenvironment_SPEC.";
0x000107ec bl 0x10738 | fputs (r0, "Usage:_getconf___v_SPEC__VAR__or:__getconf___v_SPEC__PATH_VAR_PATHGet_the_configuration_value_for_variable_VAR__or_for_variable_PATH_VARfor_path_PATH.__If_SPEC_is_given__give_values_for_compilationenvironment_SPEC.");
0x000107f0 b 0x107b8 |
| } while (1);
| label_11:
0x000107f4 ldr r0, [pc, 0x34c] | r0 = "For_bug_reporting_instructions__please_see:_http:__www.gnu.org_software_libc_bugs.html_.";
0x000107f8 bl 0x10678 | getenv ("For_bug_reporting_instructions__please_see:_http:__www.gnu.org_software_libc_bugs.html_.");
0x000107fc ldr r7, [pc, 0x348] | r7 = "GETCONF_DIR";
0x00010800 cmp r0, 0 |
| if (r0 == 0) {
0x00010804 movne r7, r0 | r7 = r0;
| }
0x00010808 mov r0, r7 | r0 = r7;
0x0001080c bl 0x1072c | strlen (r0);
0x00010810 cmp r4, 1 |
0x00010814 mov sb, r0 | sb = r0;
| if (r4 <= 1) {
0x00010818 ble 0x1089c | goto label_13;
| }
0x0001081c ldr r5, [r6, 4] | r5 = *((r6 + 4));
0x00010820 mov r2, 2 | r2 = 2;
0x00010824 ldr r1, [pc, 0x324] | r1 = "/sam9x5/buildroot-kt400/output/build/uclibc-1.0.31/utils";
0x00010828 mov r0, r5 | r0 = r5;
0x0001082c bl 0x106f0 | r0 = strncmp (r0, "/sam9x5/buildroot-kt400/output/build/uclibc-1.0.31/utils", r2);
0x00010830 cmp r0, 0 |
| if (r0 != 0) {
0x00010834 bne 0x1089c | goto label_13;
| }
0x00010838 ldrb r3, [r5, 2] | r3 = *((r5 + 2));
0x0001083c cmp r3, 0 |
| if (r3 != 0) {
0x00010840 bne 0x10858 | goto label_14;
| }
0x00010844 cmp r4, 2 |
| if (r4 == 2) {
0x00010848 ldrne r5, [r6, 8]! | r5 = *((r6 += 8));
| }
| if (r4 == 2) {
0x0001084c subne r4, r4, 2 | r4 -= 2;
| }
| if (r4 != 2) {
0x00010850 bne 0x108f4 | goto label_15;
| }
| do {
| label_1:
0x00010854 bl 0x10cb0 | fcn_00010cb0 ();
| label_14:
0x00010858 adds r5, r5, 2 | r5 += 2;
0x0001085c add r6, r6, 4 | r6 += 4;
0x00010860 add r4, r4, 1 | r4++;
| if (r5 != r5) {
0x00010864 bne 0x10ae4 | goto label_16;
| }
| label_0:
0x00010868 ldr r5, [r6, 4] | r5 = *((r6 + 4));
0x0001086c ldr r1, [pc, 0x2e0] | r1 = *(0x10b50);
0x00010870 mov r0, r5 | r0 = r5;
0x00010874 bl 0x10708 | r0 = strcmp (r0, r1);
0x00010878 cmp r0, 0 |
| if (r0 != 0) {
0x0001087c bne 0x1090c | goto label_17;
| }
0x00010880 cmp r4, 2 |
| if (r4 != 2) {
0x00010884 ldreq r0, [pc, 0x2cc] | r0 = *(0x00010b58);
| }
| if (r4 == 2) {
0x00010888 beq 0x10898 | goto label_18;
| }
0x0001088c cmp r4, 3 |
0x00010890 bne 0x10854 |
| } while (r4 != 3);
0x00010894 ldr r0, [r6, 8] | r0 = *((r6 + 8));
| label_18:
0x00010898 bl 0x10cf4 | fcn_00010cf4 (r0);
| label_13:
0x0001089c add r3, sb, 0x10 | r3 = sb + 0x10;
0x000108a0 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x000108a4 mov r8, sp | r8 = sp;
0x000108a8 sub sp, sp, r3 |
0x000108ac mov r2, sb | r2 = sb;
0x000108b0 mov r1, r7 | r1 = r7;
0x000108b4 mov r0, sp | r0 = sp;
0x000108b8 bl 0x106c0 | mempcpy ();
0x000108bc mov r2, 9 | r2 = 9;
0x000108c0 ldr r1, [pc, 0x294] | r1 = *(0x10b58);
0x000108c4 bl 0x10684 | memcpy (r0, r1, r2);
0x000108c8 mov r0, sp | r0 = sp;
0x000108cc mov r2, 0x15 | r2 = 0x15;
0x000108d0 sub r1, fp, 0x3c | r1 -= s1;
0x000108d4 bl 0x10690 | readlink ();
0x000108d8 mov r5, 0 | r5 = 0;
0x000108dc cmp r0, 0 |
| if (r0 <= 0) {
0x000108e0 subgt r3, fp, 0x24 | r3 -= var_24h;
| }
| if (r0 <= 0) {
0x000108e4 addgt r0, r3, r0 | r0 = r3 + r0;
| }
| if (r0 <= 0) {
0x000108e8 strbgt r5, [r0, -0x18] | *((r0 - 0x18)) = r5;
| }
| if (r0 <= 0) {
0x000108ec subgt r5, fp, 0x3c | r5 -= s1;
| }
0x000108f0 mov sp, r8 |
| label_15:
0x000108f4 cmp r5, 0 |
| if (r5 != 0) {
0x000108f8 bne 0x10ae4 | goto label_16;
| }
| label_8:
0x000108fc cmp r4, 1 |
| if (r4 > 1) {
0x00010900 bgt 0x10868 | goto label_0;
| }
0x00010904 mov r3, 1 | r3 = 1;
0x00010908 b 0x10924 | goto label_19;
| label_17:
0x0001090c ldr r1, [pc, 0x24c] | r1 = "_default";
0x00010910 mov r0, r5 | r0 = r5;
0x00010914 bl 0x10708 | r0 = strcmp (r0, "_default");
0x00010918 cmp r0, 0 |
| if (r0 != 0) {
0x0001091c moveq r3, 2 | r3 = 2;
| }
| if (r0 == 0) {
0x00010920 movne r3, 1 | r3 = 1;
| }
| label_19:
0x00010924 sub r4, r4, r3 | r4 -= r3;
0x00010928 sub r2, r4, 1 | r2 = r4 - 1;
0x0001092c cmp r2, 1 |
| if (r2 > 1) {
0x00010930 bhi 0x10854 | goto label_1;
| }
0x00010934 ldr sb, [r6, r3, lsl 2] | offset_0 = r3 << 2;
| sb = *((r6 + offset_0));
0x00010938 ldr r5, [pc, 0x224] | r5 = "__";
0x0001093c ldr sl, [pc, 0x224] | sl = "_POSIX_";
0x00010940 lsl r8, r3, 2 | r8 = r3 << 2;
| label_7:
0x00010944 ldr r7, [r5] | r7 = *(r5);
0x00010948 cmp r7, 0 |
| if (r7 == 0) {
0x0001094c bne 0x1096c |
0x00010950 ldr r1, [pc, 0x214] | r1 = "_POSIX_";
0x00010954 mov r2, sb | r2 = sb;
| label_10:
0x00010958 ldr r3, [pc, 0x210] | r3 = "Unrecognized variable `%s'\n";
0x0001095c ldr r0, [r3] | r0 = "Unrecognized variable `%s'\n";
0x00010960 bl 0x106d8 | fprintf ("Unrecognized variable `%s'\n", "_POSIX_", r2, "Unrecognized variable `%s'\n")
0x00010964 mov r0, 2 | r0 = 2;
0x00010968 b 0x10a20 | goto label_4;
| }
0x0001096c mov r1, sb | r1 = sb;
0x00010970 mov r0, r7 | r0 = r7;
0x00010974 bl 0x10708 | r0 = strcmp (r0, r1);
0x00010978 cmp r0, 0 |
| if (r0 != 0) {
0x0001097c beq 0x109ac |
0x00010980 mov r2, 7 | r2 = 7;
0x00010984 mov r1, sl | r1 = sl;
0x00010988 mov r0, r7 | r0 = r7;
0x0001098c bl 0x106f0 | r0 = strncmp (r0, r1, r2);
0x00010990 cmp r0, 0 |
| if (r0 != 0) {
0x00010994 bne 0x10adc | goto label_20;
| }
0x00010998 mov r1, sb | r1 = sb;
0x0001099c add r0, r7, 7 | r0 = r7 + 7;
0x000109a0 bl 0x10708 | r0 = strcmp (r0, r1);
0x000109a4 cmp r0, 0 |
| if (r0 != 0) {
0x000109a8 bne 0x10adc | goto label_20;
| }
| }
0x000109ac ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x000109b0 cmp r3, 1 |
| if (r3 == 1) {
0x000109b4 beq 0x10a70 | goto label_21;
| }
| if (r3 <= 1) {
0x000109b8 blo 0x10a30 | goto label_22;
| }
0x000109bc cmp r3, 2 |
| if (r3 != 2) {
0x000109c0 bne 0x10adc | goto label_20;
| }
0x000109c4 cmp r4, 1 |
| if (r4 == 1) {
0x000109c8 beq 0x10854 | goto label_1;
| }
0x000109cc bl 0x10714 | errno_location ();
0x000109d0 add r8, r8, 4 | r8 += 4;
0x000109d4 mov r3, 0 | r3 = 0;
0x000109d8 add r7, r6, r8 | r7 = r6 + r8;
0x000109dc str r3, [r0] | *(r0) = r3;
0x000109e0 mov r4, r0 | r4 = r0;
0x000109e4 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x000109e8 ldr r0, [r6, r8] | r0 = *((r6 + r8));
0x000109ec bl 0x1066c | r0 = pathconf ();
0x000109f0 cmn r0, 1 |
0x000109f4 mov r1, r0 | r1 = r0;
| if (r0 == 1) {
0x000109f8 bne 0x10a24 |
0x000109fc ldr r3, [r4] | r3 = *(r4);
0x00010a00 cmp r3, 0 |
| if (r3 == 0) {
0x00010a04 beq 0x10a60 | goto label_23;
| }
0x00010a08 ldr r3, [pc, 0x160] | r3 = "Unrecognized variable `%s'\n";
0x00010a0c ldr r2, [r7] | r2 = *(r7);
0x00010a10 ldr r1, [pc, 0x15c] | r1 = stderr;
0x00010a14 ldr r0, [r3] | r0 = "Unrecognized variable `%s'\n";
0x00010a18 bl 0x106d8 | fprintf ("Unrecognized variable `%s'\n", r1, r2, "Unrecognized variable `%s'\n")
| label_5:
0x00010a1c mov r0, 3 | r0 = 3;
| label_4:
0x00010a20 bl 0x10720 | exit (r0);
| }
| label_2:
0x00010a24 ldr r0, [pc, 0x14c] | r0 = "pathconf: %s\n";
| label_3:
0x00010a28 bl 0x10660 | printf ("pathconf: %s\n");
0x00010a2c b 0x10a68 | goto label_6;
| label_22:
0x00010a30 cmp r4, 2 |
| if (r4 == 2) {
0x00010a34 beq 0x10854 | goto label_1;
| }
0x00010a38 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00010a3c bl 0x10654 | r0 = sysconf ();
0x00010a40 cmn r0, 1 |
0x00010a44 mov r1, r0 | r1 = r0;
| if (r0 != 1) {
0x00010a48 bne 0x10a24 | goto label_2;
| }
0x00010a4c ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00010a50 sub r3, r3, 0x74 | r3 -= 0x74;
0x00010a54 cmp r3, 1 |
| if (r3 <= 1) {
0x00010a58 ldrls r0, [pc, 0x11c] | r0 = "%lu\n";
| goto label_24;
| }
| if (r3 < 1) {
| label_24:
0x00010a5c bls 0x10a28 | goto label_3;
| }
| label_23:
0x00010a60 ldr r0, [pc, 0x118] | r0 = "%lu\n";
0x00010a64 bl 0x1069c | puts ("%lu\n");
| label_6:
0x00010a68 mov r0, 0 | r0 = 0;
0x00010a6c b 0x10a20 | goto label_4;
| label_21:
0x00010a70 cmp r4, 2 |
| if (r4 == 2) {
0x00010a74 beq 0x10854 | goto label_1;
| }
0x00010a78 mov r2, 0 | r2 = 0;
0x00010a7c mov r1, r2 | r1 = r2;
0x00010a80 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00010a84 bl 0x106b4 | confstr ();
0x00010a88 ldr r6, [pc, 0xe0] | r6 = "Unrecognized variable `%s'\n";
0x00010a8c mov r7, r0 | r7 = r0;
0x00010a90 bl 0x106a8 | r0 = malloc (r0);
0x00010a94 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x00010a98 ldreq r1, [pc, 0xe4] | r1 = "memory_exhausted";
| }
| if (r4 != r0) {
0x00010a9c beq 0x10ac0 |
0x00010aa0 mov r1, r4 | r1 = r4;
0x00010aa4 mov r2, r7 | r2 = r7;
0x00010aa8 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00010aac bl 0x106b4 | r0 = confstr ();
0x00010ab0 cmp r0, r7 |
0x00010ab4 mov r1, r0 | r1 = r0;
| if (r0 == r7) {
0x00010ab8 beq 0x10acc | goto label_25;
| }
0x00010abc ldr r1, [pc, 0xc4] | r1 = "memory_exhausted";
| }
0x00010ac0 ldr r0, [r6] | r0 = *(r6);
0x00010ac4 bl 0x106d8 | fprintf (r0, "memory_exhausted")
0x00010ac8 b 0x10a1c | goto label_5;
| label_25:
0x00010acc mov r2, r4 | r2 = r4;
0x00010ad0 ldr r0, [pc, 0xb4] | r0 = "confstr";
0x00010ad4 bl 0x10660 | printf ("confstr", r1, r2);
0x00010ad8 b 0x10a68 | goto label_6;
| label_20:
0x00010adc add r5, r5, 0xc | r5 += 0xc;
0x00010ae0 b 0x10944 | goto label_7;
| label_16:
0x00010ae4 ldr r8, [pc, 0xa4] | r8 = "%.*s\n";
0x00010ae8 mov r7, 0 | r7 = 0;
| label_9:
0x00010aec ldr r1, [r8, r7, lsl 3] | offset_1 = r7 << 3;
| r1 = *((r8 + offset_1));
0x00010af0 mov r0, r5 | r0 = r5;
0x00010af4 bl 0x10708 | r0 = strcmp (r0, r1);
0x00010af8 cmp r0, 0 |
| if (r0 == 0) {
0x00010afc beq 0x108fc | goto label_8;
| }
0x00010b00 add r7, r7, 1 | r7++;
0x00010b04 cmp r7, 0xc |
| if (r7 != 0xc) {
0x00010b08 bne 0x10aec | goto label_9;
| }
0x00010b0c mov r2, r5 | r2 = r5;
0x00010b10 ldr r1, [pc, 0x7c] | r1 = "XBS5_ILP32_OFF32";
0x00010b14 b 0x10958 | goto label_10;
| }
[*] Function fprintf used 7 times getconf