[*] Binary protection state of libuClibc-1.0.31.so
Full RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of libuClibc-1.0.31.so
; 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/lib/libuClibc-1.0.31.so @ 0x11c1c */
| #include <stdint.h>
|
; (fcn) fcn.00011c1c () | void fcn_00011c1c () {
0x00011c1c add ip, pc, 0, 12 |
0x00011c20 add ip, ip, 0x76000 |
0x00011c24 ldr pc, [ip, 0x158]! | pc = *((ip += 0x158));
| }
; 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/lib/libuClibc-1.0.31.so @ 0x122ec */
| #include <stdint.h>
|
; (fcn) fcn.000122ec () | void fcn_000122ec () {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_104h;
| char * s2;
| int32_t var_110h;
| int32_t var_114h;
0x000122ec push {r4, r5, r6, r7, r8, sb, lr} |
0x000122f0 ldr r6, [pc, 0x218] | r6 = *(0x1250c);
0x000122f4 ldr r5, [pc, 0x218] | r5 = *(0x12510);
0x000122f8 sub sp, sp, 0x114 |
0x000122fc add r4, sp, 0x110 | r4 += var_110h;
0x00012300 mov r3, 4 | r3 = 4;
0x00012304 str r3, [r4, -0x104]! | *((r4 -= 0x104)) = r3;
0x00012308 add r6, pc, r6 | r6 = pc + r6;
0x0001230c mov r3, 0 | r3 = 0;
0x00012310 add r5, pc, r5 | r5 = pc + r5;
0x00012314 str r3, [sp, 4] | var_4h = r3;
0x00012318 str r3, [sp] | *(sp) = r3;
0x0001231c add r2, r6, 4 | r2 = r6 + 4;
0x00012320 mov r3, r4 | r3 = r4;
0x00012324 mov r1, 3 | r1 = 3;
0x00012328 mov r0, r5 | r0 = r5;
0x0001232c bl 0x11c04 | fcn_00011c04 ();
0x00012330 ldr r7, [pc, 0x1e0] | r7 = "=5-%";
0x00012334 add r7, pc, r7 | r7 = pc + r7;
0x00012338 cmp r0, 0 |
| if (r0 != 0) {
0x0001233c bne 0x12384 | goto label_4;
| }
0x00012340 str r0, [sp, 4] | var_4h = r0;
0x00012344 str r0, [sp] | *(sp) = r0;
0x00012348 mov r3, r4 | r3 = r4;
0x0001234c add r2, r6, 8 | r2 = r6 + 8;
0x00012350 mov r1, 3 | r1 = 3;
0x00012354 add r0, r5, 0xc | r0 = r5 + 0xc;
0x00012358 bl 0x11c04 | r0 = fcn_00011c04 ();
0x0001235c cmp r0, 0 |
0x00012360 bne 0x12384 |
| while (r0 == 2) {
0x00012364 ldr r3, [pc, 0x1b0] | r3 = "7|(@";
0x00012368 mov r2, 1 | r2 = 1;
0x0001236c add r3, pc, r3 | r3 = pc + r3;
0x00012370 mov r4, 0 | r4 = 0;
0x00012374 str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
| label_0:
0x00012378 mov r0, r4 | r0 = r4;
0x0001237c add sp, sp, 0x114 |
0x00012380 pop {r4, r5, r6, r7, r8, sb, pc} |
| label_4:
0x00012384 ldr r0, [pc, 0x194] | r0 = *(0x1251c);
0x00012388 add r5, sp, 0x10 | r5 += s2;
0x0001238c mov r2, 0xff | r2 = 0xff;
0x00012390 mov r1, r5 | r1 = r5;
0x00012394 add r0, pc, r0 | r0 = pc + r0;
0x00012398 bl 0x14404 | r0 = readlink ();
0x0001239c cmp r0, 0 |
| if (r0 <= 0) {
0x000123a0 ble 0x1244c | goto label_5;
| }
0x000123a4 ldr r2, [pc, 0x178] |
0x000123a8 add r3, sp, 0x110 | r3 += var_110h;
0x000123ac add r0, r3, r0 | r0 = r3 + r0;
0x000123b0 mov r3, 0 | r3 = 0;
0x000123b4 strb r3, [r0, -0x100] | *((r0 - 0x100)) = r3;
0x000123b8 add r2, pc, r2 | r2 = pc + r2;
0x000123bc ldrb r3, [sp, 0x10] | r3 = s2;
0x000123c0 ldr r2, [r2] | r2 = *(0x12520);
0x000123c4 lsl r3, r3, 1 | r3 <<= 1;
0x000123c8 ldrh r3, [r2, r3] | r3 = *((r2 + r3));
0x000123cc tst r3, 8 |
| if ((r3 & 8) == 0) {
0x000123d0 beq 0x123fc | goto label_6;
| }
0x000123d4 ldr r2, [pc, 0x14c] | r2 = *(0x12524);
0x000123d8 ldr r1, [pc, 0x14c] | r1 = *(0x12528);
0x000123dc add r2, pc, r2 | r2 = pc + r2;
0x000123e0 add r3, r2, 8 | r3 = r2 + 8;
0x000123e4 add r1, pc, r1 | r1 = pc + r1;
0x000123e8 add r2, r2, 4 | r2 += 4;
0x000123ec mov r0, r5 | r0 = r5;
0x000123f0 bl 0x3a164 | r0 = sscanf ();
0x000123f4 cmp r0, 2 |
0x000123f8 beq 0x12364 |
| }
| do {
| label_6:
0x000123fc ldr r6, [pc, 0x12c] | r6 = *(0x1252c);
0x00012400 mov r7, 0 | r7 = 0;
0x00012404 add r6, pc, r6 | r6 = pc + r6;
0x00012408 mov sb, 0xc | sb = 0xc;
| label_3:
0x0001240c mul r8, sb, r7 | r8 = sb * r7;
0x00012410 mov r1, r5 | r1 = r5;
0x00012414 ldr r0, [r8, r6] | r0 = *((r8 + r6));
0x00012418 bl 0x3e430 | r0 = strcoll ();
0x0001241c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x00012420 bne 0x124e8 | goto label_7;
| }
0x00012424 add r6, r6, r8 | r6 += r8;
0x00012428 ldr r3, [pc, 0x104] | r3 = *(0x12530);
0x0001242c ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x00012430 add r3, pc, r3 | r3 = pc + r3;
0x00012434 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00012438 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x0001243c str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00012440 mov r2, 1 | r2 = 1;
0x00012444 str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
0x00012448 b 0x12378 | goto label_0;
| label_5:
0x0001244c ldr r1, [pc, 0xe4] | r1 = *(0x12534);
0x00012450 ldr r0, [pc, 0xe4] | r0 = *(0x12538);
0x00012454 add r1, pc, r1 | r1 = pc + r1;
0x00012458 add r0, pc, r0 | r0 = pc + r0;
0x0001245c bl 0x33c58 | r0 = fopen (r0, r1);
0x00012460 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x00012464 beq 0x12508 | goto label_8;
| }
0x00012468 ldr r8, [pc, 0xd0] | r8 = *(0x1253c);
0x0001246c add r8, pc, r8 | r8 = pc + r8;
| label_2:
0x00012470 mov r2, r5 | r2 = r5;
0x00012474 mov r1, r8 | r1 = r8;
0x00012478 mov r0, r6 | r0 = r6;
0x0001247c bl 0x3a18c | r0 = fscanf (r0, r1, r2);
0x00012480 cmn r0, 1 |
0x00012484 mov r4, r0 | r4 = r0;
| if (r0 != 1) {
0x00012488 bne 0x124cc | goto label_9;
| }
| label_1:
0x0001248c mov r0, r6 | r0 = r6;
0x00012490 bl 0x334ac | fclose (r0);
0x00012494 cmn r4, 1 |
0x00012498 bne 0x123fc |
| } while (r4 != 1);
0x0001249c ldr r3, [pc, 0xa0] | r3 = *(0x12540);
0x000124a0 ldr r1, [pc, 0xa0] | r1 = *(0x12544);
0x000124a4 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x000124a8 add r1, pc, r1 | r1 = pc + r1;
0x000124ac ldr r0, [r3] | r0 = *(0x12540);
0x000124b0 bl 0x34c9c | fprintf (r0, r1, r2, r3)
0x000124b4 ldr r3, [pc, 0x90] | r3 = *(0x12548);
0x000124b8 bl 0x11934 | fcn_00011934 ();
0x000124bc mov r2, 0x13 | r2 = 0x13;
0x000124c0 ldr r3, [pc, r3] | r3 = *(0x000124c8);
0x000124c4 str r2, [r0, r3] | *((r0 + r3)) = r2;
0x000124c8 b 0x12378 | goto label_0;
| label_9:
0x000124cc cmp r4, 1 |
| if (r4 == 1) {
0x000124d0 beq 0x1248c | goto label_1;
| }
0x000124d4 mov r2, r6 | r2 = r6;
0x000124d8 mov r1, 0x100 | r1 = 0x100;
0x000124dc mov r0, r5 | r0 = r5;
0x000124e0 bl 0x3c144 | fgets (r0, r1, r2);
0x000124e4 b 0x12470 | goto label_2;
| label_7:
0x000124e8 add r7, r7, 1 | r7++;
0x000124ec cmp r7, 4 |
| if (r7 != 4) {
0x000124f0 bne 0x1240c | goto label_3;
| }
0x000124f4 ldr r3, [pc, 0x54] | r3 = *(0x1254c);
0x000124f8 bl 0x11934 | fcn_00011934 ();
0x000124fc mov r2, 0x16 | r2 = 0x16;
0x00012500 ldr r3, [pc, r3] | r3 = *(0x00012508);
0x00012504 str r2, [r0, r3] | *((r0 + r3)) = r2;
| label_8:
0x00012508 mvn r4, 0 | r4 = ~0;
0x0001250c b 0x12378 | goto label_0;
| }
; 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/lib/libuClibc-1.0.31.so @ 0x2fad0 */
| #include <stdint.h>
|
; (fcn) fcn.0002fad0 () | void fcn_0002fad0 (int32_t arg_b8h, int32_t arg_bch, int32_t arg_c0h, char * arg_c4h, char * s2, int32_t arg_cch, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_3ch;
| int32_t var_44h;
| int32_t var_48h;
| int32_t var_4ch;
| int32_t var_50h;
| int32_t var_54h;
| int32_t var_58h;
| int32_t var_5ch;
| char * s;
| int32_t var_74h;
| char * var_78h;
| int32_t var_8ch;
| int32_t var_94h;
| r0 = arg1;
| r1 = arg2;
0x0002fad0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002fad4 ldr ip, [pc, 0xfb4] | ip = *(0x30a8c);
0x0002fad8 sub sp, sp, 0x94 |
0x0002fadc ldr r4, [sp, 0xb8] | r4 = *(arg_b8h);
0x0002fae0 add ip, pc, ip |
0x0002fae4 str ip, [sp, 0x34] | var_34h = ip;
0x0002fae8 ldr ip, [r4] | ip = *(r4);
0x0002faec str r0, [sp, 0x1c] | var_1ch = r0;
0x0002faf0 str ip, [sp, 0x28] | var_28h = ip;
0x0002faf4 add ip, ip, 1 |
0x0002faf8 str ip, [sp, 0x30] | var_30h = ip;
0x0002fafc ldrb ip, [r3, ip] | ip = *((r3 + ip));
0x0002fb00 str r1, [sp, 0x20] | var_20h = r1;
0x0002fb04 cmp ip, 0x27 |
0x0002fb08 str r2, [sp, 0x24] | var_24h = r2;
| if (ip != 0x27) {
0x0002fb0c beq 0x2fb28 |
0x0002fb10 mov sb, r3 | sb = r3;
| if (ip > 0x27) {
0x0002fb14 bhi 0x2fb50 | goto label_56;
| }
0x0002fb18 cmp ip, 0 |
| if (ip == 0) {
0x0002fb1c beq 0x2fb28 | goto label_12;
| }
0x0002fb20 cmp ip, 0x22 |
| if (ip != 0x22) {
0x0002fb24 bne 0x2fb60 | goto label_57;
| }
| }
| label_12:
0x0002fb28 add r0, sp, 0x1c | r0 += var_1ch;
0x0002fb2c ldm r0, {r0, r1, r2} | r0 = *(r0);
| r1 = *((r0 + 4));
| r2 = *((r0 + 8));
0x0002fb30 mov r3, 0x24 | r3 = 0x24;
0x0002fb34 ldr r0, [r0] | r0 = *(r0);
0x0002fb38 bl 0x2e9cc | fcn_0002e9cc (r0, r1);
0x0002fb3c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0002fb40 str r0, [r3] | *(r3) = r0;
| label_13:
0x0002fb44 clz fp, r0 |
0x0002fb48 lsr fp, fp, 5 |
0x0002fb4c b 0x2fda8 | goto label_15;
| label_56:
0x0002fb50 cmp ip, 0x28 |
| if (ip != 0x28) {
0x0002fb54 beq 0x2fbd4 |
0x0002fb58 cmp ip, 0x5b |
| if (ip == 0x5b) {
0x0002fb5c beq 0x2fdc8 | goto label_58;
| }
| label_57:
0x0002fb60 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0002fb64 str r3, [r4] | *(r4) = r3;
0x0002fb68 ldrb r6, [sb, r3] | r6 = *((sb + r3));
0x0002fb6c mov r3, 0 | r3 = 0;
0x0002fb70 cmp r6, 0x7b |
0x0002fb74 str r3, [sp, 0x48] | var_48h = r3;
0x0002fb78 str r3, [sp, 0x44] | var_44h = r3;
0x0002fb7c str r3, [sp, 0x50] | var_50h = r3;
0x0002fb80 str r3, [sp, 0x4c] | var_4ch = r3;
| if (r6 != 0x7b) {
0x0002fb84 ldreq r3, [sp, 0x28] | r3 = var_28h;
| }
| if (r6 != 0x7b) {
0x0002fb88 addeq r3, r3, 2 | r3 += 2;
| }
| if (r6 != 0x7b) {
0x0002fb8c streq r3, [r4] | *(r4) = r3;
| }
0x0002fb90 ldr r3, [r4] | r3 = *(r4);
0x0002fb94 ldrb r2, [sb, r3] | r2 = *((sb + r3));
0x0002fb98 cmp r2, 0x23 |
| if (r2 == 0x23) {
0x0002fb9c movne fp, 0 |
| }
| if (r2 != 0x23) {
0x0002fba0 bne 0x2fde8 | goto label_59;
| }
0x0002fba4 cmp r6, 0x7b |
| if (r6 != 0x7b) {
0x0002fba8 addeq r3, r3, 1 | r3++;
| }
| if (r6 != 0x7b) {
0x0002fbac streq r3, [r4] | *(r4) = r3;
| }
| if (r6 != 0x7b) {
0x0002fbb0 moveq fp, 1 |
| }
| if (r6 == 0x7b) {
0x0002fbb4 beq 0x2fde8 | goto label_59;
| }
0x0002fbb8 mov r5, 0 | r5 = 0;
0x0002fbbc mov fp, 1 |
0x0002fbc0 str r5, [sp, 0x18] | var_18h = r5;
0x0002fbc4 mov r6, r5 | r6 = r5;
0x0002fbc8 mov r7, r5 | r7 = r5;
0x0002fbcc mov r8, r5 | r8 = r5;
0x0002fbd0 b 0x2ffa0 | goto label_5;
| }
0x0002fbd4 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002fbd8 add r0, r3, 2 | r0 = r3 + 2;
0x0002fbdc ldrb r3, [sb, r0] | r3 = *((sb + r0));
0x0002fbe0 cmp r3, 0x28 |
| if (r3 != 0x28) {
0x0002fbe4 bne 0x2fc70 | goto label_60;
| }
0x0002fbe8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002fbec add ip, r3, 3 |
0x0002fbf0 mov r2, ip | r2 = ip;
0x0002fbf4 mov r3, 0 | r3 = 0;
| do {
0x0002fbf8 ldrb r1, [sb, r2] | r1 = *((sb + r2));
0x0002fbfc cmp r1, 0 |
| if (r1 == 0) {
0x0002fc00 beq 0x2fc70 | goto label_60;
| }
0x0002fc04 cmp r3, 0 |
| if (r3 == 0) {
0x0002fc08 bne 0x2fc50 |
0x0002fc0c cmp r1, 0x29 |
| if (r1 != 0x29) {
0x0002fc10 bne 0x30e10 | goto label_61;
| }
0x0002fc14 add r2, sb, r2 | r2 = sb + r2;
0x0002fc18 ldrb r2, [r2, 1] | r2 = *((r2 + 1));
0x0002fc1c cmp r2, 0x29 |
| if (r2 != 0x29) {
0x0002fc20 bne 0x2fc70 | goto label_60;
| }
0x0002fc24 str ip, [r4] | *(r4) = ip;
0x0002fc28 str r3, [sp, 8] | var_8h = r3;
0x0002fc2c ldr r3, [sp, 0xbc] | r3 = *(arg_bch);
0x0002fc30 add r0, sp, 0x1c | r0 += var_1ch;
0x0002fc34 str r3, [sp, 4] | var_4h = r3;
0x0002fc38 str r4, [sp] | *(sp) = r4;
0x0002fc3c ldm r0, {r0, r1, r2} | r0 = *(r0);
| r1 = *((r0 + 4));
| r2 = *((r0 + 8));
0x0002fc40 mov r3, sb | r3 = sb;
| label_2:
0x0002fc44 bl 0x2f7a4 | r0 = fcn_0002f7a4 (r0, r1, r2, r3, r4);
0x0002fc48 mov fp, r0 |
0x0002fc4c b 0x2fda8 | goto label_15;
| }
0x0002fc50 cmp r1, 0x28 |
| if (r1 != 0x28) {
0x0002fc54 bne 0x2fc64 | goto label_62;
| }
| label_43:
0x0002fc58 add r3, r3, 1 | r3++;
| label_0:
0x0002fc5c add r2, r2, 1 | r2++;
0x0002fc60 b 0x2fbf8 |
| } while (1);
| label_62:
0x0002fc64 cmp r1, 0x29 |
| if (r1 != 0x29) {
0x0002fc68 subeq r3, r3, 1 | r3--;
| }
0x0002fc6c b 0x2fc5c | goto label_0;
| label_60:
0x0002fc70 ldr r3, [sp, 0xbc] | r3 = *(arg_bch);
0x0002fc74 ands r5, r3, 4 | r5 = r3 & 4;
| if (r5 == r3) {
0x0002fc78 movne fp, 4 |
| }
| if (r5 != r3) {
0x0002fc7c bne 0x2fda8 | goto label_15;
| }
0x0002fc80 ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x0002fc84 mov r6, r5 | r6 = r5;
0x0002fc88 cmp r3, 0 |
0x0002fc8c ldr r3, [sp, 0xc0] | r3 = *(arg_c0h);
0x0002fc90 mov fp, 1 |
| if (r3 == 0) {
0x0002fc94 movne r3, 0 | r3 = 0;
| }
0x0002fc98 add r7, sp, 0x78 | r7 += var_78h;
0x0002fc9c str r0, [r4] | *(r4) = r0;
0x0002fca0 str r3, [sp, 0xc0] | *(arg_c0h) = r3;
0x0002fca4 str r5, [sp, 0x78] | var_78h = r5;
0x0002fca8 str r5, [sp, 0x60] | s = r5;
| do {
0x0002fcac ldr r3, [r4] | r3 = *(r4);
0x0002fcb0 ldrb r3, [sb, r3] | r3 = *((sb + r3));
0x0002fcb4 cmp r3, 0 |
| if (r3 == 0) {
0x0002fcb8 bne 0x2fccc |
0x0002fcbc mov r0, r6 | r0 = r6;
0x0002fcc0 bl 0x120a8 | fcn_000120a8 ();
0x0002fcc4 mov fp, 5 |
0x0002fcc8 b 0x2fda8 | goto label_15;
| }
0x0002fccc sub r2, r3, 0x22 | r2 = r3 - 0x22;
0x0002fcd0 cmp r2, 7 |
| if (r2 > 7) {
| /* switch table (8 cases) at 0x2fcdc */
0x0002fcd4 addls pc, pc, r2, lsl 2 | pc += (r2 << 2);
| }
0x0002fcd8 b 0x2fd14 | goto label_1;
0x0002fcdc b 0x2fd3c | goto label_63;
0x0002fce0 b 0x2fd14 | goto label_1;
0x0002fce4 b 0x2fd14 | goto label_1;
0x0002fce8 b 0x2fd14 | goto label_1;
0x0002fcec b 0x2fd14 | goto label_1;
0x0002fcf0 b 0x2fcfc | goto label_64;
0x0002fcf4 b 0x2fdb4 | goto label_65;
0x0002fcf8 b 0x2fd54 | goto label_66;
| label_64:
0x0002fcfc cmp r5, 0 |
| if (r5 != 0) {
0x0002fd00 moveq r5, 1 | r5 = 1;
| }
| if (r5 != 0) {
0x0002fd04 beq 0x2fd14 |
0x0002fd08 cmp r5, 1 |
| if (r5 != 1) {
0x0002fd0c moveq r5, 0 | r5 = 0;
| }
| if (r5 != 1) {
0x0002fd10 movne r5, 2 | r5 = 2;
| goto label_1;
| }
| }
| label_1:
0x0002fd14 mov r0, r6 | r0 = r6;
0x0002fd18 mov r2, r7 | r2 = r7;
0x0002fd1c add r1, sp, 0x60 | r1 += s;
0x0002fd20 bl 0x2e9cc | r0 = fcn_0002e9cc (r0, r1);
0x0002fd24 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x0002fd28 beq 0x2fdc0 | goto label_67;
| }
0x0002fd2c ldr r3, [r4] | r3 = *(r4);
0x0002fd30 add r3, r3, 1 | r3++;
0x0002fd34 str r3, [r4] | *(r4) = r3;
0x0002fd38 b 0x2fcac |
| } while (1);
| label_63:
0x0002fd3c cmp r5, 0 |
| if (r5 == 0) {
0x0002fd40 moveq r5, 2 | r5 = 2;
| goto label_68;
| }
| if (r5 == 0) {
| label_68:
0x0002fd44 beq 0x2fd14 | goto label_1;
| }
0x0002fd48 subs r5, r5, 2 | r5 -= 2;
| if (r5 == r5) {
0x0002fd4c movne r5, 1 | r5 = 1;
| }
0x0002fd50 b 0x2fd14 | goto label_1;
| label_66:
0x0002fd54 cmp r5, 0 |
| if (r5 != 0) {
0x0002fd58 bne 0x2fd14 | goto label_1;
| }
0x0002fd5c subs fp, fp, 1 |
| if (fp != fp) {
0x0002fd60 bne 0x2fd14 | goto label_1;
| }
0x0002fd64 cmp r6, 0 |
| if (r6 == 0) {
0x0002fd68 beq 0x2fda8 | goto label_15;
| }
0x0002fd6c ldr r3, [sp, 0xc8] | r3 = *(s2);
0x0002fd70 add r1, sp, 0x1c | r1 += var_1ch;
0x0002fd74 str r3, [sp, 0xc] | var_ch = r3;
0x0002fd78 ldr r3, [sp, 0xc4] | r3 = *(arg_c4h);
0x0002fd7c mov r0, r6 | r0 = r6;
0x0002fd80 str r3, [sp, 8] | var_8h = r3;
0x0002fd84 ldr r3, [sp, 0xc0] | r3 = *(arg_c0h);
0x0002fd88 str r3, [sp, 4] | var_4h = r3;
0x0002fd8c ldr r3, [sp, 0xbc] | r3 = *(arg_bch);
0x0002fd90 str r3, [sp] | *(sp) = r3;
0x0002fd94 ldm r1, {r1, r2, r3} | r1 = *(r1);
| r2 = *((r1 + 4));
| r3 = *((r1 + 8));
0x0002fd98 bl 0x2ece0 | r0 = fcn_0002ece0 (r0, r1, r2, r3, r4, r5);
0x0002fd9c mov fp, r0 |
0x0002fda0 mov r0, r6 | r0 = r6;
0x0002fda4 bl 0x120a8 | fcn_000120a8 ();
| do {
| label_15:
0x0002fda8 mov r0, fp | r0 = fp;
0x0002fdac add sp, sp, 0x94 |
0x0002fdb0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_65:
0x0002fdb4 cmp r5, 0 |
| if (r5 != 0) {
0x0002fdb8 addeq fp, fp, 1 |
| }
0x0002fdbc b 0x2fd14 | goto label_1;
| label_67:
0x0002fdc0 mov fp, 1 |
0x0002fdc4 b 0x2fda8 |
| } while (1);
| label_58:
0x0002fdc8 ldr ip, [sp, 0x28] | ip = var_28h;
0x0002fdcc add ip, ip, 2 |
0x0002fdd0 str ip, [r4] | *(r4) = ip;
0x0002fdd4 mov ip, 1 |
0x0002fdd8 str ip, [sp, 8] | var_8h = ip;
0x0002fddc ldr ip, [sp, 0xbc] | ip = *(arg_bch);
0x0002fde0 stm sp, {r4, ip} | *(sp) = r4;
| *((sp + 4)) = ip;
0x0002fde4 b 0x2fc44 | goto label_2;
| label_59:
0x0002fde8 ldr r3, [r4] | r3 = *(r4);
0x0002fdec ldr r2, [pc, 0xca0] |
0x0002fdf0 ldrb r7, [sb, r3] | r7 = *((sb + r3));
0x0002fdf4 add r2, pc, r2 | r2 = pc + r2;
0x0002fdf8 ldr r2, [r2] | r2 = *(0x30a90);
0x0002fdfc lsl r3, r7, 1 | r3 = r7 << 1;
0x0002fe00 ldrh r5, [r2, r3] | r5 = *((r2 + r3));
0x0002fe04 lsr r8, r5, 2 | r8 = r5 >> 2;
0x0002fe08 and r8, r8, 1 | r8 &= 1;
0x0002fe0c cmp r7, 0x5f |
| if (r7 != 0x5f) {
0x0002fe10 orreq r8, r8, 1 | r8 |= 1;
| }
0x0002fe14 cmp r8, 0 |
| if (r8 == 0) {
0x0002fe18 beq 0x2fe90 | goto label_69;
| }
0x0002fe1c ldr r7, [pc, 0xc74] | r7 = *(0x30a94);
0x0002fe20 mov r0, 0 | r0 = 0;
0x0002fe24 add r8, sp, 0x48 | r8 += var_48h;
0x0002fe28 add sl, sp, 0x44 | sl += var_44h;
0x0002fe2c add r7, pc, r7 | r7 = pc + r7;
| do {
0x0002fe30 ldr r3, [r4] | r3 = *(r4);
0x0002fe34 mov r2, r8 | r2 = r8;
0x0002fe38 ldrb r3, [sb, r3] | r3 = *((sb + r3));
0x0002fe3c mov r1, sl | r1 = sl;
0x0002fe40 bl 0x2e9cc | r0 = fcn_0002e9cc (r0, r1);
0x0002fe44 cmp r0, 0 |
| if (r0 == 0) {
0x0002fe48 beq 0x30df8 | goto label_70;
| }
0x0002fe4c ldr r3, [r4] | r3 = *(r4);
0x0002fe50 ldr r1, [r7] | r1 = *(r7);
0x0002fe54 add r3, r3, 1 | r3++;
0x0002fe58 str r3, [r4] | *(r4) = r3;
0x0002fe5c ldrb r3, [sb, r3] | r3 = *((sb + r3));
0x0002fe60 lsl r2, r3, 1 | r2 = r3 << 1;
0x0002fe64 ldrh r5, [r1, r2] | r5 = *((r1 + r2));
0x0002fe68 lsr r5, r5, 0xb | r5 >>= 0xb;
0x0002fe6c and r5, r5, 1 | r5 &= 1;
0x0002fe70 cmp r3, 0x5f |
| if (r3 != 0x5f) {
0x0002fe74 orreq r5, r5, 1 | r5 |= 1;
| }
0x0002fe78 cmp r5, 0 |
0x0002fe7c bne 0x2fe30 |
| } while (r5 != 0);
| label_3:
0x0002fe80 cmp r6, 0x7b |
| if (r6 != 0x7b) {
0x0002fe84 bne 0x30210 | goto label_71;
| }
0x0002fe88 mov r8, r0 | r8 = r0;
0x0002fe8c b 0x2fef8 | goto label_72;
| label_69:
0x0002fe90 ands r5, r5, 8 | r5 &= 8;
| if (r5 == r5) {
0x0002fe94 beq 0x2ff2c | goto label_73;
| }
0x0002fe98 ldr r5, [pc, 0xbfc] | r5 = *(0x30a98);
0x0002fe9c add r7, sp, 0x48 | r7 += var_48h;
0x0002fea0 add sl, sp, 0x44 | sl += var_44h;
0x0002fea4 add r5, pc, r5 | r5 = pc + r5;
| do {
0x0002fea8 ldr r3, [r4] | r3 = *(r4);
0x0002feac mov r0, r8 | r0 = r8;
0x0002feb0 ldrb r3, [sb, r3] | r3 = *((sb + r3));
0x0002feb4 mov r2, r7 | r2 = r7;
0x0002feb8 mov r1, sl | r1 = sl;
0x0002febc bl 0x2e9cc | r0 = fcn_0002e9cc (r0, r1);
0x0002fec0 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x0002fec4 beq 0x30df8 | goto label_70;
| }
0x0002fec8 cmp r6, 0x7b |
| if (r6 != 0x7b) {
0x0002fecc bne 0x30224 | goto label_74;
| }
0x0002fed0 ldr r3, [r4] | r3 = *(r4);
0x0002fed4 ldr r2, [r5] | r2 = *(r5);
0x0002fed8 add r3, r3, 1 | r3++;
0x0002fedc str r3, [r4] | *(r4) = r3;
0x0002fee0 ldrb r3, [sb, r3] | r3 = *((sb + r3));
0x0002fee4 lsl r3, r3, 1 | r3 <<= 1;
0x0002fee8 ldrh r3, [r2, r3] | r3 = *((r2 + r3));
0x0002feec tst r3, 8 |
0x0002fef0 bne 0x2fea8 |
| } while ((r3 & 8) != 0);
0x0002fef4 mov r5, 1 | r5 = 1;
| label_72:
0x0002fef8 ldr r3, [r4] | r3 = *(r4);
0x0002fefc ldrb r6, [sb, r3] | r6 = *((sb + r3));
0x0002ff00 cmp r6, 0x2d |
| if (r6 == 0x2d) {
0x0002ff04 beq 0x30104 | goto label_75;
| }
| if (r6 > 0x2d) {
0x0002ff08 bhi 0x30018 | goto label_76;
| }
0x0002ff0c cmp r6, 0x25 |
| if (r6 == 0x25) {
0x0002ff10 beq 0x300e4 | goto label_77;
| }
0x0002ff14 cmp r6, 0x2b |
| if (r6 == 0x2b) {
0x0002ff18 beq 0x30104 | goto label_75;
| }
0x0002ff1c cmp r6, 0x23 |
| if (r6 == 0x23) {
0x0002ff20 beq 0x30080 | goto label_78;
| }
| do {
| label_4:
0x0002ff24 mov r5, 5 | r5 = 5;
0x0002ff28 b 0x30df0 | goto label_79;
| label_73:
0x0002ff2c ldr r0, [pc, 0xb6c] | r0 = *(0x30a9c);
0x0002ff30 mov r1, r7 | r1 = r7;
0x0002ff34 add r0, pc, r0 | r0 = pc + r0;
0x0002ff38 bl 0x3ef3c | r0 = index ();
0x0002ff3c subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 != r0) {
0x0002ff40 beq 0x2ff74 |
0x0002ff44 mov r3, r7 | r3 = r7;
0x0002ff48 add r2, sp, 0x48 | r2 += var_48h;
0x0002ff4c add r1, sp, 0x44 | r1 += var_44h;
0x0002ff50 mov r0, r5 | r0 = r5;
0x0002ff54 bl 0x2e9cc | r0 = fcn_0002e9cc (r0, r1);
0x0002ff58 cmp r0, 0 |
| if (r0 == 0) {
0x0002ff5c beq 0x30df8 | goto label_70;
| }
0x0002ff60 ldr r3, [r4] | r3 = *(r4);
0x0002ff64 mov r5, 1 | r5 = 1;
0x0002ff68 add r3, r3, 1 | r3++;
0x0002ff6c str r3, [r4] | *(r4) = r3;
0x0002ff70 b 0x2fe80 | goto label_3;
| }
0x0002ff74 cmp r6, 0x7b |
| if (r6 == 0x7b) {
0x0002ff78 beq 0x30e08 | goto label_80;
| }
0x0002ff7c mov r0, r8 | r0 = r8;
0x0002ff80 mov r5, r8 | r5 = r8;
0x0002ff84 mov r6, r8 | r6 = r8;
0x0002ff88 str r8, [sp, 0x18] | var_18h = r8;
| label_6:
0x0002ff8c ldr r3, [r4] | r3 = *(r4);
0x0002ff90 mov r7, r8 | r7 = r8;
0x0002ff94 sub r3, r3, 1 | r3--;
0x0002ff98 mov r8, r0 | r8 = r0;
0x0002ff9c str r3, [r4] | *(r4) = r3;
| label_5:
0x0002ffa0 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0002ffa4 ldrb r3, [sb, r3] | r3 = *((sb + r3));
0x0002ffa8 cmp r3, 0x7b |
| if (r3 == 0x7b) {
0x0002ffac bne 0x2ffc0 |
0x0002ffb0 ldr r3, [r4] | r3 = *(r4);
0x0002ffb4 ldrb r3, [sb, r3] | r3 = *((sb + r3));
0x0002ffb8 cmp r3, 0x7d |
| if (r3 != 0x7d) {
0x0002ffbc bne 0x30054 | goto label_10;
| }
| }
0x0002ffc0 cmp r8, 0 |
| if (r8 != 0) {
0x0002ffc4 bne 0x30238 | goto label_81;
| }
0x0002ffc8 cmp fp, 0 |
| if (fp == 0) {
0x0002ffcc beq 0x3022c | goto label_82;
| }
0x0002ffd0 ldr r3, [pc, 0xacc] | r3 = *(0x30aa0);
0x0002ffd4 strb r8, [sp, 0x74] | var_74h = r8;
0x0002ffd8 ldr r2, [pc, r3] | r2 = *(0x0002ffe0);
0x0002ffdc ldr r1, [pc, 0xac4] | r1 = *(0x30aa4);
0x0002ffe0 sub r2, r2, 1 | r2--;
0x0002ffe4 add r4, sp, 0x60 | r4 += s;
0x0002ffe8 asr r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0002ffec add r1, pc, r1 | r1 = pc + r1;
0x0002fff0 mov r0, r4 | r0 = r4;
0x0002fff4 bl 0x34d3c | sprintf ();
0x0002fff8 cmp r6, 0 |
| if (r6 != 0) {
0x0002fffc bne 0x30e28 | goto label_83;
| }
| label_50:
0x00030000 mov r0, 0 | r0 = 0;
0x00030004 bl 0x120a8 | fcn_000120a8 ();
0x00030008 mov r0, r7 | r0 = r7;
0x0003000c bl 0x120a8 | fcn_000120a8 ();
0x00030010 mov r5, 0 | r5 = 0;
0x00030014 b 0x30c78 | goto label_84;
| label_76:
0x00030018 cmp r6, 0x3d |
| if (r6 == 0x3d) {
0x0003001c beq 0x30104 | goto label_75;
| }
| if (r6 > 0x3d) {
0x00030020 bhi 0x3005c | goto label_85;
| }
0x00030024 cmp r6, 0x3a |
0x00030028 bne 0x2ff24 |
| } while (r6 != 0x3a);
0x0003002c ldr r0, [pc, 0xa78] | r0 = *(0x30aa8);
0x00030030 add r6, r3, 1 | r6 = r3 + 1;
0x00030034 ldrb r1, [sb, r6] | r1 = *((sb + r6));
0x00030038 add r0, pc, r0 | r0 = pc + r0;
0x0003003c bl 0x3ef3c | r0 = index ();
0x00030040 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x00030044 strne r6, [r4] | *(r4) = r6;
| }
| if (r7 == r0) {
0x00030048 movne r3, 1 | r3 = 1;
| }
| if (r7 == r0) {
0x0003004c ldrbne r6, [sb, r6] | r6 = *((sb + r6));
| }
| if (r7 != r0) {
0x00030050 bne 0x30108 | goto label_86;
| }
| label_10:
0x00030054 mov r5, 5 | r5 = 5;
0x00030058 b 0x30550 | goto label_18;
| label_85:
0x0003005c cmp r6, 0x3f |
| if (r6 == 0x3f) {
0x00030060 beq 0x30104 | goto label_75;
| }
0x00030064 cmp r6, 0x7d |
| if (r6 != 0x7d) {
0x00030068 bne 0x2ff24 | goto label_4;
| }
| label_11:
0x0003006c mov r3, 0 | r3 = 0;
0x00030070 str r3, [sp, 0x18] | var_18h = r3;
0x00030074 mov r6, r3 | r6 = r3;
0x00030078 mov r7, r3 | r7 = r3;
0x0003007c b 0x2ffa0 | goto label_5;
| label_78:
0x00030080 add r3, r3, 1 | r3++;
0x00030084 ldrb r2, [sb, r3] | r2 = *((sb + r3));
0x00030088 cmp r2, 0x23 |
| if (r2 != 0x23) {
0x0003008c bne 0x30104 | goto label_75;
| }
0x00030090 str r3, [r4] | *(r4) = r3;
0x00030094 mov r6, 0x4c | r6 = 0x4c;
0x00030098 mov r3, 0 | r3 = 0;
0x0003009c str r3, [sp, 0x18] | var_18h = r3;
| do {
| label_7:
0x000300a0 ldr r3, [r4] | r3 = *(r4);
0x000300a4 mov sl, 0 | sl = 0;
0x000300a8 add r3, r3, 1 | r3++;
0x000300ac str r3, [r4] | *(r4) = r3;
0x000300b0 add r3, sp, 0x50 | r3 += var_50h;
0x000300b4 str r3, [sp, 0x38] | var_38h = r3;
0x000300b8 mov r7, sl | r7 = sl;
0x000300bc add r3, sp, 0x4c | r3 += var_4ch;
0x000300c0 str sl, [sp, 0x2c] | var_2ch = sl;
0x000300c4 str r3, [sp, 0x3c] | var_3ch = r3;
| label_8:
0x000300c8 ldr r2, [r4] | r2 = *(r4);
0x000300cc ldrb r3, [sb, r2] | r3 = *((sb + r2));
0x000300d0 cmp r3, 0 |
| if (r3 != 0) {
0x000300d4 bne 0x30110 | goto label_87;
| }
0x000300d8 mov r0, r8 | r0 = r8;
0x000300dc mov r8, r7 | r8 = r7;
0x000300e0 b 0x2ff8c | goto label_6;
| label_77:
0x000300e4 add r3, r3, 1 | r3++;
0x000300e8 ldrb r2, [sb, r3] | r2 = *((sb + r3));
0x000300ec cmp r2, 0x25 |
| if (r2 != 0x25) {
0x000300f0 streq r3, [r4] | *(r4) = r3;
| }
| if (r2 != 0x25) {
0x000300f4 moveq r3, 0 | r3 = 0;
| }
| if (r2 != 0x25) {
0x000300f8 streq r3, [sp, 0x18] | var_18h = r3;
| }
| if (r2 != 0x25) {
0x000300fc moveq r6, 0x52 | r6 = 0x52;
| }
0x00030100 beq 0x300a0 |
| } while (r2 == 0x25);
| label_75:
0x00030104 mov r3, 0 | r3 = 0;
| label_86:
0x00030108 str r3, [sp, 0x18] | var_18h = r3;
0x0003010c b 0x300a0 | goto label_7;
| label_87:
0x00030110 cmp r3, 0x5c |
| if (r3 == 0x5c) {
0x00030114 beq 0x301a0 | goto label_88;
| }
| if (r3 > 0x5c) {
0x00030118 bhi 0x3015c | goto label_89;
| }
0x0003011c cmp r3, 0x22 |
| if (r3 == 0x22) {
0x00030120 beq 0x301f8 | goto label_90;
| }
0x00030124 cmp r3, 0x27 |
| if (r3 == 0x27) {
0x00030128 beq 0x301dc | goto label_91;
| }
| do {
| label_9:
0x0003012c ldr r3, [r4] | r3 = *(r4);
0x00030130 mov r0, r7 | r0 = r7;
0x00030134 ldrb r3, [sb, r3] | r3 = *((sb + r3));
0x00030138 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0003013c ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x00030140 bl 0x2e9cc | r0 = fcn_0002e9cc (r0, r1);
0x00030144 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x00030148 beq 0x301d4 | goto label_20;
| }
0x0003014c ldr r3, [r4] | r3 = *(r4);
0x00030150 add r3, r3, 1 | r3++;
0x00030154 str r3, [r4] | *(r4) = r3;
0x00030158 b 0x300c8 | goto label_8;
| label_89:
0x0003015c cmp r3, 0x7b |
| if (r3 == 0x7b) {
0x00030160 beq 0x30188 | goto label_92;
| }
0x00030164 cmp r3, 0x7d |
0x00030168 bne 0x3012c |
| } while (r3 != 0x7d);
0x0003016c cmp sl, 0 |
| if (sl != 0) {
0x00030170 bne 0x3012c | goto label_9;
| }
0x00030174 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00030178 cmp r3, 0 |
| if (r3 == 0) {
0x0003017c beq 0x2ffa0 | goto label_5;
| }
0x00030180 sub r3, r3, 1 | r3--;
0x00030184 b 0x30198 | goto label_93;
| label_92:
0x00030188 cmp sl, 0 |
| if (sl != 0) {
0x0003018c ldreq r3, [sp, 0x2c] | r3 = var_2ch;
| }
| if (sl == 0) {
0x00030190 addeq r3, r3, 1 | r3++;
| goto label_94;
| }
| if (sl != 0) {
| label_94:
0x00030194 bne 0x3012c | goto label_9;
| }
| label_93:
0x00030198 str r3, [sp, 0x2c] | var_2ch = r3;
0x0003019c b 0x3012c | goto label_9;
| label_88:
0x000301a0 cmp sl, 0 |
| if (sl != 0) {
0x000301a4 bne 0x3012c | goto label_9;
| }
0x000301a8 add r2, r2, 1 | r2++;
0x000301ac str r2, [r4] | *(r4) = r2;
0x000301b0 ldrb r2, [sb, r2] | r2 = *((sb + r2));
0x000301b4 cmp r2, 0 |
| if (r2 == 0) {
0x000301b8 beq 0x30054 | goto label_10;
| }
0x000301bc mov r0, r7 | r0 = r7;
0x000301c0 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000301c4 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x000301c8 bl 0x2e9cc | r0 = fcn_0002e9cc (r0, r1);
0x000301cc subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 != r0) {
0x000301d0 bne 0x3012c | goto label_9;
| }
| label_20:
0x000301d4 mov r5, 1 | r5 = 1;
0x000301d8 b 0x30550 | goto label_18;
| label_91:
0x000301dc cmp sl, 0 |
| if (sl == 0) {
0x000301e0 moveq sl, 1 | sl = 1;
| goto label_95;
| }
| if (sl == 0) {
| label_95:
0x000301e4 beq 0x3012c | goto label_9;
| }
0x000301e8 cmp sl, 1 |
| if (sl != 1) {
0x000301ec moveq sl, 0 | sl = 0;
| }
| if (sl == 1) {
0x000301f0 movne sl, 2 | sl = 2;
| }
0x000301f4 b 0x3012c | goto label_9;
| label_90:
0x000301f8 cmp sl, 0 |
| if (sl == 0) {
0x000301fc moveq sl, 2 | sl = 2;
| goto label_96;
| }
| if (sl == 0) {
| label_96:
0x00030200 beq 0x3012c | goto label_9;
| }
0x00030204 subs sl, sl, 2 | sl -= 2;
| if (sl == sl) {
0x00030208 movne sl, 1 | sl = 1;
| }
0x0003020c b 0x3012c | goto label_9;
| label_71:
0x00030210 mov r3, 0 | r3 = 0;
0x00030214 str r3, [sp, 0x18] | var_18h = r3;
0x00030218 mov r6, r3 | r6 = r3;
0x0003021c mov r8, r3 | r8 = r3;
0x00030220 b 0x2ff8c | goto label_6;
| label_74:
0x00030224 mov r5, 1 | r5 = 1;
0x00030228 b 0x3006c | goto label_11;
| label_82:
0x0003022c ldr r3, [sp, 0x28] | r3 = var_28h;
0x00030230 str r3, [r4] | *(r4) = r3;
0x00030234 b 0x2fb28 | goto label_12;
| label_81:
0x00030238 ldr r1, [pc, 0x870] |
0x0003023c ldrb r3, [r8] | r3 = *(r8);
0x00030240 add r1, pc, r1 | r1 = pc + r1;
0x00030244 ldr r1, [r1] | r1 = *(0x30aac);
0x00030248 lsl r2, r3, 1 | r2 = r3 << 1;
0x0003024c ldrh sb, [r1, r2] | sb = *((r1 + r2));
0x00030250 ands sb, sb, 8 | sb &= 8;
| if (sb == sb) {
0x00030254 beq 0x302a8 | goto label_97;
| }
0x00030258 mov r0, r8 | r0 = r8;
0x0003025c bl 0x4d01c | atoi ();
0x00030260 ldr r3, [pc, 0x84c] |
0x00030264 add r3, pc, r3 | r3 = pc + r3;
0x00030268 ldr r3, [r3] | r3 = *(0x30ab0);
0x0003026c cmp r0, r3 |
0x00030270 blt 0x3028c |
| while (1) {
0x00030274 ldr r3, [sp, 0xbc] | r3 = *(arg_bch);
0x00030278 ands r5, r3, 0x20 | r5 = r3 & 0x20;
| if (r5 != r3) {
0x0003027c moveq r4, r5 | r4 = r5;
| }
| if (r5 == r3) {
0x00030280 beq 0x303e8 | goto label_98;
| }
0x00030284 mov r5, 3 | r5 = 3;
0x00030288 b 0x30550 | goto label_18;
0x0003028c ldr r3, [pc, 0x824] |
0x00030290 add r3, pc, r3 | r3 = pc + r3;
0x00030294 ldr r3, [r3] | r3 = *(0x30ab4);
0x00030298 ldr r4, [r3, r0, lsl 2] | r4 = *(0x30ab4);
| label_14:
0x0003029c cmp r4, 0 |
| if (r4 != 0) {
0x000302a0 bne 0x302dc | goto label_99;
| }
0x000302a4 b 0x30274 |
| }
| label_97:
0x000302a8 cmp r5, 0 |
| if (r5 == 0) {
0x000302ac beq 0x30580 | goto label_100;
| }
0x000302b0 cmp r3, 0x24 |
| if (r3 == 0x24) {
0x000302b4 bne 0x302e4 |
0x000302b8 strb sb, [sp, 0x74] | var_74h = sb;
0x000302bc bl 0x513cc | getpid ();
0x000302c0 ldr r1, [pc, 0x7f4] | r1 = *(0x30ab8);
0x000302c4 add r4, sp, 0x60 | r4 += s;
0x000302c8 add r1, pc, r1 | r1 = pc + r1;
0x000302cc mov r2, r0 | r2 = r0;
0x000302d0 asr r3, r0, 0x1f | r3 = r0 >> 0x1f;
0x000302d4 mov r0, r4 | r0 = r4;
0x000302d8 bl 0x34d3c | sprintf ();
| label_99:
0x000302dc mov r5, 0 | r5 = 0;
0x000302e0 b 0x303e8 | goto label_98;
| }
0x000302e4 cmp r3, 0x40 |
0x000302e8 cmpne r3, 0x2a | __asm ("cmpne r3, 0x2a");
| if (r3 != 0x40) {
0x000302ec moveq r4, 1 | r4 = 1;
| }
| if (r3 == 0x40) {
0x000302f0 movne r4, 0 | r4 = 0;
| }
0x000302f4 tst fp, r4 |
| if ((fp & r4) != 0) {
0x000302f8 beq 0x30364 |
0x000302fc ldr r3, [pc, 0x7bc] | r3 = *(0x30abc);
0x00030300 strb sb, [sp, 0x74] | var_74h = sb;
0x00030304 ldr r2, [pc, r3] | r2 = *(0x0003030c);
0x00030308 ldr r1, [pc, 0x7b4] | r1 = *(0x30ac0);
0x0003030c cmp r2, 1 |
| if (r2 >= 1) {
0x00030310 movlt r2, 1 | r2 = 1;
| }
0x00030314 sub r2, r2, 1 | r2--;
0x00030318 add r4, sp, 0x60 | r4 += s;
0x0003031c asr r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00030320 add r1, pc, r1 | r1 = pc + r1;
0x00030324 mov r0, r4 | r0 = r4;
0x00030328 bl 0x34d3c | sprintf ();
0x0003032c add r0, sp, 0x1c | r0 += var_1ch;
0x00030330 ldm r0, {r0, r1, r2} | r0 = *(r0);
| r1 = *((r0 + 4));
| r2 = *((r0 + 8));
0x00030334 mov r3, r4 | r3 = r4;
0x00030338 ldr r0, [r0] | r0 = *(r0);
0x0003033c bl 0x2ec24 | fcn_0002ec24 (r0, r1);
0x00030340 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00030344 str r0, [r3] | *(r3) = r0;
0x00030348 mov r0, r8 | r0 = r8;
0x0003034c bl 0x120a8 | fcn_000120a8 ();
0x00030350 mov r0, r7 | r0 = r7;
| label_26:
0x00030354 bl 0x120a8 | fcn_000120a8 ();
| label_25:
0x00030358 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0003035c ldr r0, [r3] | r0 = *(r3);
0x00030360 b 0x2fb44 | goto label_13;
| }
0x00030364 cmp r3, 0x2a |
| if (r3 != 0x2a) {
0x00030368 beq 0x3037c |
0x0003036c ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x00030370 eor r3, r3, 1 | r3 ^= 1;
0x00030374 ands r4, r3, r4 | r4 = r3 & r4;
| if (r4 == r3) {
0x00030378 beq 0x30488 | goto label_101;
| }
| }
0x0003037c ldr r3, [pc, 0x744] | r3 = *(0x30ac4);
0x00030380 mov r4, 0 | r4 = 0;
0x00030384 ldr sl, [pc, r3] | sl = *(0x0003038c);
0x00030388 b 0x3039c |
| while (sb != 0) {
0x0003038c mov r0, sb | r0 = sb;
0x00030390 bl 0x3e3c0 | r0 = strlen ();
0x00030394 add r0, r0, 1 | r0++;
0x00030398 add r4, r4, r0 | r4 += r0;
0x0003039c ldr sb, [sl, 4]! | sb = *((sl += 4));
0x000303a0 cmp sb, 0 |
0x000303a4 bne 0x3038c |
| }
0x000303a8 mov r0, r4 | r0 = r4;
0x000303ac bl 0x11a90 | r0 = fcn_00011a90 ();
0x000303b0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x000303b4 beq 0x30550 | goto label_18;
| }
0x000303b8 ldr sl, [pc, 0x70c] | sl = *(0x30ac8);
0x000303bc ldr r3, [pc, 0x70c] | r3 = *(0x30acc);
0x000303c0 strb sb, [r4] | *(r4) = sb;
0x000303c4 mov r0, r4 | r0 = r4;
0x000303c8 mov sb, r5 | sb = r5;
0x000303cc add sl, pc, sl | sl = pc + sl;
0x000303d0 add r3, pc, r3 | r3 = pc + r3;
| do {
0x000303d4 ldr r2, [sl] | r2 = *(sl);
0x000303d8 lsl r1, sb, 2 | r1 = sb << 2;
0x000303dc ldr r2, [r2, sb, lsl 2] | offset_0 = sb << 2;
| r2 = *((r2 + offset_0));
0x000303e0 cmp r2, 0 |
| if (r2 == 0) {
0x000303e4 bne 0x3045c |
| label_98:
0x000303e8 cmp r6, 0 |
| if (r6 == 0) {
0x000303ec beq 0x308f4 | goto label_29;
| }
0x000303f0 cmp r6, 0x2d |
| if (r6 == 0x2d) {
0x000303f4 beq 0x30680 | goto label_102;
| }
| if (r6 > 0x2d) {
0x000303f8 bhi 0x30590 | goto label_103;
| }
0x000303fc cmp r6, 0x25 |
| if (r6 != 0x25) {
0x00030400 beq 0x30414 |
0x00030404 cmp r6, 0x2b |
| if (r6 == 0x2b) {
0x00030408 beq 0x306bc | goto label_104;
| }
0x0003040c cmp r6, 0x23 |
| if (r6 != 0x23) {
| label_17:
0x00030410 bne 0x305a4 | goto label_105;
| }
| }
| label_16:
0x00030414 add r3, sp, 0x5c | r3 += var_5ch;
0x00030418 mov sb, 0 | sb = 0;
0x0003041c str r3, [sp, 0x28] | var_28h = r3;
0x00030420 mov sl, r7 | sl = r7;
0x00030424 add r3, sp, 0x58 | r3 += var_58h;
0x00030428 str sb, [sp, 0x5c] | var_5ch = sb;
0x0003042c str sb, [sp, 0x58] | var_58h = sb;
0x00030430 str sb, [sp, 0x54] | var_54h = sb;
0x00030434 str r3, [sp, 0x2c] | var_2ch = r3;
| label_23:
0x00030438 cmp sl, 0 |
| if (sl != 0) {
0x0003043c beq 0x3044c |
0x00030440 ldrb r3, [sl] | r3 = *(sl);
0x00030444 cmp r3, 0 |
| if (r3 != 0) {
0x00030448 bne 0x30728 | goto label_106;
| }
| }
0x0003044c mov r0, r7 | r0 = r7;
0x00030450 bl 0x120a8 | fcn_000120a8 ();
0x00030454 ldr r7, [sp, 0x54] | r7 = var_54h;
0x00030458 b 0x305a4 | goto label_105;
| }
0x0003045c cmp sb, 1 |
| if (sb == 1) {
0x00030460 movne r2, 0x20 | r2 = 0x20;
| }
| if (sb == 1) {
0x00030464 strbne r2, [r0] | *(r0) = r2;
| }
0x00030468 ldr r2, [r3] | r2 = *(r3);
| if (sb == 1) {
0x0003046c addne r0, r0, 1 | r0++;
| }
0x00030470 ldr r1, [r2, r1] | r1 = *((r2 + r1));
0x00030474 str r3, [sp, 0x28] | var_28h = r3;
0x00030478 add sb, sb, 1 | sb++;
0x0003047c bl 0x3f8c8 | stpcpy ();
0x00030480 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00030484 b 0x303d4 |
| } while (1);
| label_101:
0x00030488 ldr r3, [pc, 0x644] |
0x0003048c add r3, pc, r3 | r3 = pc + r3;
0x00030490 ldr r3, [r3] | r3 = *(0x30ad0);
0x00030494 cmp r3, 2 |
| if (r3 != 2) {
0x00030498 ldreq r3, [pc, 0x638] | r3 = *((pc + 0x638));
| }
| if (r3 != 2) {
0x0003049c addeq r3, pc, r3 | r3 = pc + r3;
| }
| if (r3 != 2) {
0x000304a0 ldreq r3, [r3] | r3 = *(r3);
| }
| if (r3 == 2) {
0x000304a4 ldreq r4, [r3, 4] | r4 = *((r3 + 4));
| goto label_107;
| }
| if (r3 == 2) {
| label_107:
0x000304a8 beq 0x3029c | goto label_14;
| }
| if (r3 <= 2) {
0x000304ac ble 0x30568 | goto label_108;
| }
0x000304b0 ldr r3, [pc, 0x624] |
0x000304b4 add r0, sp, 0x1c | r0 += var_1ch;
0x000304b8 ldm r0, {r0, r1, r2} | r0 = *(r0);
| r1 = *((r0 + 4));
| r2 = *((r0 + 8));
0x000304bc add r3, pc, r3 | r3 = pc + r3;
0x000304c0 ldr r3, [r3] |
0x000304c4 ldr r0, [r0] | r0 = *(r0);
0x000304c8 ldr r3, [r3, 4] | r3 = *(0x30adc);
0x000304cc bl 0x2ec24 | r0 = fcn_0002ec24 (r0, r1);
0x000304d0 subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 == r0) {
0x000304d4 beq 0x30550 | goto label_18;
| }
0x000304d8 ldr r0, [sp, 0xc0] | r0 = *(arg_c0h);
0x000304dc bl 0x2ec60 | r0 = fcn_0002ec60 (r0, r1);
0x000304e0 cmp r0, 0 |
| if (r0 != 0) {
0x000304e4 bne 0x30550 | goto label_18;
| }
0x000304e8 ldr r4, [pc, 0x5f0] | r4 = *(0x30adc);
0x000304ec mov sb, 0xc | sb = 0xc;
0x000304f0 add r4, pc, r4 | r4 = pc + r4;
| do {
0x000304f4 ldr r2, [r4] | r2 = *(r4);
0x000304f8 sub r1, sb, 4 | r1 = sb - 4;
0x000304fc ldr r3, [r2, sb] | r3 = *((r2 + sb));
0x00030500 add r0, r2, r1 | r0 = r2 + r1;
0x00030504 cmp r3, 0 |
| if (r3 == 0) {
0x00030508 bne 0x3052c |
0x0003050c ldr r2, [sp, 0x24] | r2 = var_24h;
0x00030510 str r3, [r2] | *(r2) = r3;
0x00030514 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00030518 str r3, [r2] | *(r2) = r3;
0x0003051c ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00030520 str r3, [r2] | *(r2) = r3;
0x00030524 ldr r4, [r0] | r4 = *(r0);
0x00030528 b 0x3029c | goto label_14;
| }
0x0003052c ldr r0, [r2, r1] | r0 = *((r2 + r1));
0x00030530 bl 0x3f894 | r0 = strdup ();
0x00030534 subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 == r0) {
0x00030538 beq 0x30550 | goto label_18;
| }
0x0003053c ldr r0, [sp, 0xc0] | r0 = *(arg_c0h);
0x00030540 bl 0x2ec60 | fcn_0002ec60 (r0, r1);
0x00030544 add sb, sb, 4 | sb += 4;
0x00030548 cmp r0, 0 |
0x0003054c beq 0x304f4 |
| } while (r0 == 0);
| label_18:
0x00030550 mov r0, r8 | r0 = r8;
0x00030554 bl 0x120a8 | fcn_000120a8 ();
0x00030558 mov r0, r7 | r0 = r7;
0x0003055c bl 0x120a8 | fcn_000120a8 ();
0x00030560 mov fp, r5 |
0x00030564 b 0x2fda8 | goto label_15;
| label_108:
0x00030568 mov r0, r8 | r0 = r8;
0x0003056c bl 0x120a8 | fcn_000120a8 ();
0x00030570 mov r0, r7 | r0 = r7;
| label_40:
0x00030574 bl 0x120a8 | fcn_000120a8 ();
0x00030578 mov fp, 0 |
0x0003057c b 0x2fda8 | goto label_15;
| label_100:
0x00030580 mov r0, r8 | r0 = r8;
0x00030584 bl 0x4b980 | r0 = getenv (r0);
0x00030588 mov r4, r0 | r4 = r0;
0x0003058c b 0x3029c | goto label_14;
| label_103:
0x00030590 cmp r6, 0x3f |
| if (r6 == 0x3f) {
0x00030594 beq 0x30680 | goto label_102;
| }
| if (r6 <= 0x3f) {
0x00030598 bhi 0x30668 |
0x0003059c cmp r6, 0x3d |
| if (r6 == 0x3d) {
0x000305a0 beq 0x30680 | goto label_102;
| }
| label_105:
0x000305a4 cmp r6, 0x2d |
| if (r6 == 0x2d) {
0x000305a8 beq 0x30be8 | goto label_109;
| }
| if (r6 > 0x2d) {
0x000305ac bhi 0x308e0 | goto label_110;
| }
0x000305b0 cmp r6, 0x25 |
| if (r6 != 0x25) {
0x000305b4 beq 0x305c8 |
0x000305b8 cmp r6, 0x2b |
| if (r6 == 0x2b) {
0x000305bc beq 0x30c64 | goto label_111;
| }
0x000305c0 cmp r6, 0x23 |
| if (r6 != 0x23) {
| label_28:
0x000305c4 bne 0x308f4 | goto label_29;
| }
| }
| label_27:
0x000305c8 cmp r4, 0 |
0x000305cc clz r3, r7 | r3 &= r7;
0x000305d0 lsr r3, r3, 5 | r3 >>= 5;
| if (r4 == 0) {
0x000305d4 movne r2, r3 | r2 = r3;
| }
| if (r4 != 0) {
0x000305d8 moveq r2, 1 | r2 = 1;
| }
0x000305dc cmp r2, 0 |
0x000305e0 str r2, [sp, 0x18] | var_18h = r2;
| if (r2 != 0) {
0x000305e4 bne 0x308f4 | goto label_29;
| }
0x000305e8 ldrb r3, [r7] | r3 = *(r7);
0x000305ec cmp r3, 0 |
| if (r3 == 0) {
0x000305f0 beq 0x308f4 | goto label_29;
| }
0x000305f4 mov r0, r4 | r0 = r4;
0x000305f8 bl 0x3e3c0 | strlen ();
0x000305fc cmp r6, 0x25 |
0x00030600 add sb, r4, r0 | sb = r4 + r0;
| if (r6 == 0x25) {
0x00030604 beq 0x30af8 | goto label_112;
| }
0x00030608 ldr r2, [sp, 0x18] | r2 = var_18h;
| if (r6 > 0x25) {
0x0003060c bhi 0x30988 | goto label_113;
| }
0x00030610 cmp r6, 0x23 |
| if (r6 != 0x23) {
0x00030614 moveq sl, r4 | sl = r4;
| }
| if (r6 != 0x23) {
0x00030618 moveq r6, r2 | r6 = r2;
| }
| if (r6 != 0x23) {
0x0003061c bne 0x308f4 | goto label_29;
| }
| label_30:
0x00030620 cmp sb, sl |
| if (sb <= sl) {
0x00030624 blo 0x308f4 | goto label_29;
| }
0x00030628 ldrb r3, [sl] | r3 = *(sl);
0x0003062c mov r2, 0 | r2 = 0;
0x00030630 strb r6, [sl] | *(sl) = r6;
0x00030634 mov r1, r4 | r1 = r4;
0x00030638 mov r0, r7 | r0 = r7;
0x0003063c str r3, [sp, 0x18] | var_18h = r3;
0x00030640 bl 0x1a6f0 | fnmatch ();
0x00030644 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00030648 cmp r0, 1 |
| if (r0 == 1) {
0x0003064c beq 0x30a04 | goto label_114;
| }
0x00030650 cmp r5, 0 |
0x00030654 strb r3, [sl] | *(sl) = r3;
| if (r5 == 0) {
0x00030658 movne r0, sl | r0 = sl;
| }
| if (r5 != 0) {
0x0003065c bne 0x30a48 | goto label_115;
| }
0x00030660 mov r4, sl | r4 = sl;
0x00030664 b 0x308f4 | goto label_29;
| }
0x00030668 cmp r6, 0x4c |
| if (r6 == 0x4c) {
0x0003066c beq 0x30414 | goto label_16;
| }
0x00030670 cmp r6, 0x52 |
0x00030674 b 0x30410 | goto label_17;
| label_46:
0x00030678 mov r5, 0 | r5 = 0;
0x0003067c mov fp, r5 |
| label_102:
0x00030680 cmp r4, 0 |
| if (r4 == 0) {
0x00030684 beq 0x30414 | goto label_16;
| }
0x00030688 ldrb r3, [r4] | r3 = *(r4);
0x0003068c cmp r3, 0 |
| if (r3 != 0) {
0x00030690 bne 0x306a0 | goto label_116;
| }
0x00030694 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00030698 cmp r3, 0 |
| if (r3 != 0) {
0x0003069c bne 0x30414 | goto label_16;
| }
| label_116:
0x000306a0 cmp r6, 0x3d |
| if (r6 == 0x3d) {
0x000306a4 beq 0x30ed4 | goto label_117;
| }
0x000306a8 cmp r6, 0x3f |
| if (r6 == 0x3f) {
0x000306ac beq 0x30b50 | goto label_118;
| }
0x000306b0 cmp r6, 0x2d |
| if (r6 != 0x2d) {
0x000306b4 bne 0x308f4 | goto label_29;
| }
0x000306b8 b 0x30be8 | goto label_109;
| label_104:
0x000306bc cmp r4, 0 |
| if (r4 != 0) {
0x000306c0 bne 0x306dc | goto label_47;
| }
| label_19:
0x000306c4 cmp r5, 0 |
| if (r5 == 0) {
0x000306c8 beq 0x30550 | goto label_18;
| }
0x000306cc mov r0, r4 | r0 = r4;
0x000306d0 bl 0x120a8 | fcn_000120a8 ();
| label_37:
0x000306d4 mov r5, 0 | r5 = 0;
0x000306d8 b 0x30550 | goto label_18;
| label_47:
0x000306dc ldrb r2, [r4] | r2 = *(r4);
0x000306e0 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000306e4 cmp r2, 0 |
0x000306e8 eor r3, r3, 1 | r3 ^= 1;
| if (r2 == 0) {
0x000306ec movne r3, 1 | r3 = 1;
| }
0x000306f0 cmp r3, 0 |
| if (r3 != 0) {
0x000306f4 bne 0x30414 | goto label_16;
| }
| label_38:
0x000306f8 ldrb r2, [r4] | r2 = *(r4);
0x000306fc ldr r3, [sp, 0x18] | r3 = var_18h;
0x00030700 cmp r2, 0 |
0x00030704 eor r3, r3, 1 | r3 ^= 1;
| if (r2 == 0) {
0x00030708 movne r3, 1 | r3 = 1;
| }
0x0003070c cmp r3, 0 |
| if (r3 == 0) {
0x00030710 beq 0x306c4 | goto label_19;
| }
0x00030714 cmp r5, 0 |
| if (r5 == 0) {
0x00030718 beq 0x30c24 | goto label_44;
| }
0x0003071c mov r0, r4 | r0 = r4;
0x00030720 bl 0x120a8 | fcn_000120a8 ();
0x00030724 b 0x30c24 | goto label_44;
| label_106:
0x00030728 cmp r3, 0x2a |
| if (r3 != 0x2a) {
0x0003072c beq 0x3077c |
| if (r3 <= 0x2a) {
0x00030730 bhi 0x30764 |
0x00030734 cmp r3, 0x24 |
| if (r3 == 0x24) {
0x00030738 beq 0x307e0 | goto label_119;
| }
0x0003073c cmp r3, 0x27 |
| if (r3 == 0x27) {
0x00030740 beq 0x307c8 | goto label_120;
| }
0x00030744 cmp r3, 0x22 |
| if (r3 != 0x22) {
0x00030748 bne 0x307a4 | goto label_21;
| }
0x0003074c cmp sb, 2 |
| if (sb == 2) {
0x00030750 beq 0x308d8 | goto label_121;
| }
0x00030754 cmp sb, 0 |
| if (sb != 0) {
0x00030758 bne 0x307a4 | goto label_21;
| }
0x0003075c mov sb, 2 | sb = 2;
0x00030760 b 0x308b4 | goto label_122;
| }
0x00030764 cmp r3, 0x5c |
| if (r3 == 0x5c) {
0x00030768 beq 0x308bc | goto label_123;
| }
0x0003076c cmp r3, 0x7e |
| if (r3 == 0x7e) {
0x00030770 beq 0x30850 | goto label_124;
| }
0x00030774 cmp r3, 0x3f |
| if (r3 != 0x3f) {
0x00030778 bne 0x307a4 | goto label_21;
| }
| }
0x0003077c cmp sb, 0 |
| if (sb == 0) {
0x00030780 beq 0x307a4 | goto label_21;
| }
0x00030784 mov r3, 0x5c | r3 = 0x5c;
0x00030788 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0003078c ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00030790 ldr r0, [sp, 0x54] | r0 = var_54h;
0x00030794 bl 0x2e9cc | fcn_0002e9cc (r0, r1);
0x00030798 str r0, [sp, 0x54] | var_54h = r0;
| label_24:
0x0003079c cmp r0, 0 |
| if (r0 == 0) {
0x000307a0 beq 0x301d4 | goto label_20;
| }
| do {
| label_21:
0x000307a4 ldrb r3, [sl] | r3 = *(sl);
0x000307a8 ldr r2, [sp, 0x28] | r2 = var_28h;
0x000307ac ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x000307b0 ldr r0, [sp, 0x54] | r0 = var_54h;
0x000307b4 bl 0x2e9cc | r0 = fcn_0002e9cc (r0, r1);
0x000307b8 cmp r0, 0 |
0x000307bc str r0, [sp, 0x54] | var_54h = r0;
| if (r0 != 0) {
0x000307c0 bne 0x308b4 | goto label_122;
| }
0x000307c4 b 0x301d4 | goto label_20;
| label_120:
0x000307c8 cmp sb, 1 |
| if (sb == 1) {
0x000307cc beq 0x308d8 | goto label_121;
| }
0x000307d0 cmp sb, 0 |
0x000307d4 bne 0x307a4 |
| } while (sb != 0);
0x000307d8 mov sb, 1 | sb = 1;
0x000307dc b 0x308b4 | goto label_122;
| label_119:
0x000307e0 mov r3, 0 | r3 = 0;
0x000307e4 str r3, [sp, 0x78] | var_78h = r3;
0x000307e8 str r3, [sp, 0x10] | var_10h = r3;
0x000307ec str r3, [sp, 0xc] | var_ch = r3;
0x000307f0 str r3, [sp, 8] | var_8h = r3;
0x000307f4 ldr r3, [sp, 0xbc] | r3 = *(arg_bch);
0x000307f8 mov r2, 1 | r2 = 1;
0x000307fc str r3, [sp, 4] | var_4h = r3;
0x00030800 add r3, sp, 0x78 | r3 += var_78h;
0x00030804 str r2, [sp, 0x14] | var_14h = r2;
0x00030808 str r3, [sp] | *(sp) = r3;
0x0003080c ldr r2, [sp, 0x28] | r2 = var_28h;
0x00030810 mov r3, sl | r3 = sl;
0x00030814 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00030818 add r0, sp, 0x54 | r0 += var_54h;
0x0003081c bl 0x2fad0 | fcn_0002fad0 (r0, r1, r2, r3, r4, r5, r6);
0x00030820 subs r3, r0, 0 | r3 -= var_54h;
0x00030824 str r3, [sp, 0x30] | var_30h = r3;
| if (r3 == var_54h) {
0x00030828 beq 0x308ac | goto label_125;
| }
0x0003082c cmp r5, 0 |
| if (r5 != 0) {
0x00030830 beq 0x3083c |
0x00030834 mov r0, r4 | r0 = r4;
0x00030838 bl 0x120a8 | fcn_000120a8 ();
| }
0x0003083c ldr r0, [sp, 0x54] | r0 = var_54h;
0x00030840 bl 0x120a8 | fcn_000120a8 ();
0x00030844 ldr sb, [sp, 0x30] | sb = var_30h;
| label_22:
0x00030848 mov r5, sb | r5 = sb;
0x0003084c b 0x30550 | goto label_18;
| label_124:
0x00030850 cmp sb, 0 |
| if (sb != 0) {
0x00030854 bne 0x307a4 | goto label_21;
| }
0x00030858 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0003085c cmp r3, 0 |
| if (r3 != 0) {
0x00030860 bne 0x307a4 | goto label_21;
| }
0x00030864 add r3, sp, 0x78 | r3 += var_78h;
0x00030868 str sb, [sp, 4] | var_4h = sb;
0x0003086c str r3, [sp] | *(sp) = r3;
0x00030870 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00030874 mov r3, sl | r3 = sl;
0x00030878 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0003087c add r0, sp, 0x54 | r0 += var_54h;
0x00030880 str sb, [sp, 0x78] | var_78h = sb;
0x00030884 bl 0x2f1b8 | fcn_0002f1b8 (r0, r1, r2, r3);
0x00030888 subs sb, r0, 0 | sb -= var_54h;
| if (sb != var_54h) {
0x0003088c beq 0x308ac |
0x00030890 cmp r5, 0 |
| if (r5 != 0) {
0x00030894 beq 0x308a0 |
0x00030898 mov r0, r4 | r0 = r4;
0x0003089c bl 0x120a8 | fcn_000120a8 ();
| }
0x000308a0 ldr r0, [sp, 0x54] | r0 = var_54h;
0x000308a4 bl 0x120a8 | fcn_000120a8 ();
0x000308a8 b 0x30848 | goto label_22;
| }
| label_125:
0x000308ac ldr r3, [sp, 0x78] | r3 = var_78h;
0x000308b0 add sl, sl, r3 | sl += r3;
| do {
| label_122:
0x000308b4 add sl, sl, 1 | sl++;
0x000308b8 b 0x30438 | goto label_23;
| label_123:
0x000308bc ldr r2, [sp, 0x28] | r2 = var_28h;
0x000308c0 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x000308c4 ldr r0, [sp, 0x54] | r0 = var_54h;
0x000308c8 bl 0x2e9cc | fcn_0002e9cc (r0, r1);
0x000308cc add sl, sl, 1 | sl++;
0x000308d0 str r0, [sp, 0x54] | var_54h = r0;
0x000308d4 b 0x3079c | goto label_24;
| label_121:
0x000308d8 mov sb, 0 | sb = 0;
0x000308dc b 0x308b4 |
| } while (1);
| label_110:
0x000308e0 cmp r6, 0x3f |
| if (r6 == 0x3f) {
0x000308e4 beq 0x30b50 | goto label_118;
| }
| if (r6 > 0x3f) {
0x000308e8 bhi 0x30978 | goto label_126;
| }
0x000308ec cmp r6, 0x3d |
| if (r6 == 0x3d) {
0x000308f0 beq 0x30ed4 | goto label_117;
| }
| label_29:
0x000308f4 mov r0, r8 | r0 = r8;
0x000308f8 bl 0x120a8 | fcn_000120a8 ();
0x000308fc mov r0, r7 | r0 = r7;
0x00030900 bl 0x120a8 | fcn_000120a8 ();
0x00030904 cmp fp, 0 |
| if (fp == 0) {
0x00030908 beq 0x30c70 | goto label_127;
| }
0x0003090c mov r3, 0 | r3 = 0;
0x00030910 strb r3, [sp, 0x8c] | var_8ch = r3;
0x00030914 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00030918 cmp r4, 0 |
0x0003091c ldr r7, [r3] | r7 = *(r3);
| if (r4 != 0) {
0x00030920 moveq r2, r4 | r2 = r4;
| }
| if (r4 != 0) {
0x00030924 beq 0x30934 |
0x00030928 mov r0, r4 | r0 = r4;
0x0003092c bl 0x3e3c0 | r0 = strlen ();
0x00030930 mov r2, r0 | r2 = r0;
| }
0x00030934 ldr r1, [pc, 0x1a8] | r1 = *(0x30ae0);
0x00030938 add r6, sp, 0x78 | r6 += var_78h;
0x0003093c mov r3, 0 | r3 = 0;
0x00030940 add r1, pc, r1 | r1 = pc + r1;
0x00030944 mov r0, r6 | r0 = r6;
0x00030948 bl 0x34d3c | sprintf ();
0x0003094c ldr r2, [sp, 0x24] | r2 = var_24h;
0x00030950 ldr r1, [sp, 0x20] | r1 = var_20h;
0x00030954 mov r3, r6 | r3 = r6;
0x00030958 mov r0, r7 | r0 = r7;
| label_39:
0x0003095c bl 0x2ec24 | fcn_0002ec24 (r0, r1);
0x00030960 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00030964 cmp r5, 0 |
0x00030968 str r0, [r3] | *(r3) = r0;
| if (r5 == 0) {
0x0003096c beq 0x30358 | goto label_25;
| }
0x00030970 mov r0, r4 | r0 = r4;
0x00030974 b 0x30354 | goto label_26;
| label_126:
0x00030978 cmp r6, 0x4c |
| if (r6 == 0x4c) {
0x0003097c beq 0x305c8 | goto label_27;
| }
0x00030980 cmp r6, 0x52 |
0x00030984 b 0x305c4 | goto label_28;
| label_113:
0x00030988 cmp r6, 0x4c |
| if (r6 != 0x4c) {
0x0003098c moveq r6, r2 | r6 = r2;
| }
| if (r6 == 0x4c) {
0x00030990 beq 0x30a10 | goto label_128;
| }
0x00030994 cmp r6, 0x52 |
| if (r6 == 0x52) {
0x00030998 moveq r6, r4 | r6 = r4;
| goto label_129;
| }
| if (r6 != 0x52) {
| label_129:
0x0003099c bne 0x308f4 | goto label_29;
| }
| label_36:
0x000309a0 cmp sb, r6 |
| if (sb <= r6) {
0x000309a4 blo 0x308f4 | goto label_29;
| }
0x000309a8 mov r2, 0 | r2 = 0;
0x000309ac mov r1, r6 | r1 = r6;
0x000309b0 mov r0, r7 | r0 = r7;
0x000309b4 bl 0x1a6f0 | r0 = fnmatch ();
0x000309b8 cmp r0, 1 |
| if (r0 == 1) {
0x000309bc beq 0x30b3c | goto label_130;
| }
0x000309c0 sub r6, r6, r4 | r6 -= r4;
0x000309c4 add r0, r6, 1 | r0 = r6 + 1;
0x000309c8 bl 0x11a90 | r0 = fcn_00011a90 ();
0x000309cc subs sb, r0, 0 | sb = r0 - 0;
| if (sb == r0) {
0x000309d0 beq 0x30b2c | goto label_131;
| }
0x000309d4 mov r1, r4 | r1 = r4;
0x000309d8 mov r2, r6 | r2 = r6;
0x000309dc bl 0x3e98c | mempcpy ();
0x000309e0 mov r3, 0 | r3 = 0;
0x000309e4 cmp r5, r3 |
| if (r5 != r3) {
0x000309e8 moveq r4, sb | r4 = sb;
| }
0x000309ec strb r3, [r0] | *(r0) = r3;
| if (r5 == r3) {
0x000309f0 beq 0x30f50 | goto label_132;
| }
0x000309f4 mov r0, r4 | r0 = r4;
0x000309f8 bl 0x120a8 | fcn_000120a8 ();
| label_32:
0x000309fc mov r4, sb | r4 = sb;
0x00030a00 b 0x308f4 | goto label_29;
| label_114:
0x00030a04 strb r3, [sl], 1 | *(sl) = r3;
| sl++;
0x00030a08 b 0x30620 | goto label_30;
| label_31:
0x00030a0c strb sl, [sb], -1 | *(sb) = sl;
| sb += -1;
| label_128:
0x00030a10 cmp sb, r4 |
| if (sb <= r4) {
0x00030a14 blo 0x308f4 | goto label_29;
| }
0x00030a18 ldrb sl, [sb] | sl = *(sb);
0x00030a1c mov r2, 0 | r2 = 0;
0x00030a20 strb r6, [sb] | *(sb) = r6;
0x00030a24 mov r1, r4 | r1 = r4;
0x00030a28 mov r0, r7 | r0 = r7;
0x00030a2c bl 0x1a6f0 | r0 = fnmatch ();
0x00030a30 cmp r0, 1 |
| if (r0 == 1) {
0x00030a34 beq 0x30a0c | goto label_31;
| }
0x00030a38 cmp r5, 0 |
0x00030a3c strb sl, [sb] | *(sb) = sl;
| if (r5 == 0) {
0x00030a40 beq 0x309fc | goto label_32;
| }
0x00030a44 mov r0, sb | r0 = sb;
| label_115:
0x00030a48 bl 0x3f894 | r0 = strdup ();
0x00030a4c subs r6, r0, 0 | r6 = r0 - 0;
0x00030a50 mov r0, r4 | r0 = r4;
| if (r6 == r0) {
0x00030a54 bne 0x30a84 |
| label_35:
0x00030a58 bl 0x120a8 | fcn_000120a8 ();
0x00030a5c b 0x30550 | goto label_18;
| label_34:
0x00030a60 mov r1, r4 | r1 = r4;
0x00030a64 mov r2, sb | r2 = sb;
0x00030a68 bl 0x3e98c | mempcpy ();
0x00030a6c mov r3, 0 | r3 = 0;
0x00030a70 cmp r5, r3 |
| if (r5 != r3) {
0x00030a74 moveq r4, r6 | r4 = r6;
| }
0x00030a78 strb r3, [r0] | *(r0) = r3;
| if (r5 == r3) {
0x00030a7c beq 0x30f50 | goto label_132;
| }
0x00030a80 mov r0, r4 | r0 = r4;
| }
0x00030a84 bl 0x120a8 | fcn_000120a8 ();
0x00030a88 mov r4, r6 | r4 = r6;
0x00030a8c b 0x308f4 | goto label_29;
| label_33:
0x00030af4 sub sb, sb, 1 | sb--;
| label_112:
0x00030af8 cmp sb, r4 |
| if (sb <= r4) {
0x00030afc blo 0x308f4 | goto label_29;
| }
0x00030b00 mov r2, 0 | r2 = 0;
0x00030b04 mov r1, sb | r1 = sb;
0x00030b08 mov r0, r7 | r0 = r7;
0x00030b0c bl 0x1a6f0 | r0 = fnmatch ();
0x00030b10 cmp r0, 1 |
| if (r0 == 1) {
0x00030b14 beq 0x30af4 | goto label_33;
| }
0x00030b18 sub sb, sb, r4 | sb -= r4;
0x00030b1c add r0, sb, 1 | r0 = sb + 1;
0x00030b20 bl 0x11a90 | r0 = fcn_00011a90 ();
0x00030b24 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x00030b28 bne 0x30a60 | goto label_34;
| }
| label_131:
0x00030b2c cmp r5, 0 |
| if (r5 == 0) {
0x00030b30 beq 0x301d4 | goto label_20;
| }
0x00030b34 mov r0, r4 | r0 = r4;
0x00030b38 b 0x30a58 | goto label_35;
| label_130:
0x00030b3c add r6, r6, 1 | r6++;
0x00030b40 b 0x309a0 | goto label_36;
| label_53:
0x00030b44 mov r5, 0 | r5 = 0;
0x00030b48 add r4, sp, 0x60 | r4 += s;
0x00030b4c mov fp, r5 |
| label_118:
0x00030b50 cmp r4, 0 |
| if (r4 == 0) {
0x00030b54 beq 0x30b64 | goto label_133;
| }
0x00030b58 ldrb r3, [r4] | r3 = *(r4);
0x00030b5c cmp r3, 0 |
| if (r3 != 0) {
0x00030b60 bne 0x308f4 | goto label_29;
| }
| label_133:
0x00030b64 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00030b68 cmp r4, 0 |
| if (r4 == 0) {
0x00030b6c eorne r6, r3, 1 | r6 = r3 ^ 1;
| }
| if (r4 != 0) {
0x00030b70 moveq r6, 0 | r6 = 0;
| }
0x00030b74 cmp r6, 0 |
| if (r6 == 0) {
0x00030b78 movne r6, 0 | r6 = 0;
| }
| if (r6 != 0) {
0x00030b7c bne 0x30bb0 | goto label_134;
| }
0x00030b80 ldr r3, [pc, -0xa0] | r3 = *(0x30ae4);
0x00030b84 ldr r2, [sp, 0x34] | r2 = var_34h;
0x00030b88 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00030b8c ldr r0, [r3] | r0 = *(0x30ae4);
0x00030b90 ldrb r3, [r7] | r3 = *(r7);
0x00030b94 cmp r3, 0 |
| if (r3 == 0) {
0x00030b98 beq 0x30bc8 | goto label_135;
| }
0x00030b9c ldr r1, [pc, -0xb8] | r1 = *(0x30ae8);
0x00030ba0 mov r3, r7 | r3 = r7;
0x00030ba4 mov r2, r8 | r2 = r8;
0x00030ba8 add r1, pc, r1 | r1 = pc + r1;
0x00030bac bl 0x34c9c | fprintf (r0, r1, r2, r3)
| do {
| label_134:
0x00030bb0 cmp r5, 0 |
| if (r5 != 0) {
0x00030bb4 beq 0x30bc0 |
0x00030bb8 mov r0, r4 | r0 = r4;
0x00030bbc bl 0x120a8 | fcn_000120a8 ();
| }
0x00030bc0 mov r5, r6 | r5 = r6;
0x00030bc4 b 0x30550 | goto label_18;
| label_135:
0x00030bc8 ldr r1, [pc, -0xe0] | r1 = *(0x30aec);
0x00030bcc mov r2, r8 | r2 = r8;
0x00030bd0 add r1, pc, r1 | r1 = pc + r1;
0x00030bd4 bl 0x34c9c | fprintf (r0, r1, r2)
0x00030bd8 mov r6, 3 | r6 = 3;
0x00030bdc b 0x30bb0 |
| } while (1);
| label_48:
0x00030be0 mov r5, 0 | r5 = 0;
0x00030be4 mov fp, r5 |
| label_109:
0x00030be8 cmp r4, 0 |
| if (r4 == 0) {
0x00030bec beq 0x30e1c | goto label_136;
| }
0x00030bf0 ldrb r3, [r4] | r3 = *(r4);
0x00030bf4 cmp r3, 0 |
| if (r3 != 0) {
0x00030bf8 bne 0x308f4 | goto label_29;
| }
0x00030bfc cmp r5, 0 |
| if (r5 != 0) {
0x00030c00 beq 0x30c0c |
| label_45:
0x00030c04 mov r0, r4 | r0 = r4;
0x00030c08 bl 0x120a8 | fcn_000120a8 ();
| }
0x00030c0c ldr r3, [sp, 0x18] | r3 = var_18h;
0x00030c10 cmp r4, 0 |
| if (r4 == 0) {
0x00030c14 eorne r4, r3, 1 | r4 = r3 ^ 1;
| }
| if (r4 != 0) {
0x00030c18 moveq r4, 0 | r4 = 0;
| }
0x00030c1c cmp r4, 0 |
| if (r4 != 0) {
0x00030c20 bne 0x306d4 | goto label_37;
| }
| label_44:
0x00030c24 cmp r7, 0 |
| if (r7 != 0) {
0x00030c28 moveq r4, r7 | r4 = r7;
| }
| if (r7 != 0) {
0x00030c2c beq 0x30c3c |
0x00030c30 mov r0, r7 | r0 = r7;
0x00030c34 bl 0x3f894 | r0 = strdup ();
0x00030c38 mov r4, r0 | r4 = r0;
| }
0x00030c3c cmp r7, 0 |
0x00030c40 clz r3, r4 | r3 &= r4;
0x00030c44 lsr r3, r3, 5 | r3 >>= 5;
| if (r7 != 0) {
0x00030c48 moveq r3, 0 | r3 = 0;
| }
0x00030c4c cmp r3, 0 |
0x00030c50 mov r5, 1 | r5 = 1;
| if (r3 != 0) {
0x00030c54 bne 0x30550 | goto label_18;
| }
0x00030c58 b 0x308f4 | goto label_29;
| label_49:
0x00030c5c mov r5, 0 | r5 = 0;
0x00030c60 mov fp, r5 |
| label_111:
0x00030c64 cmp r4, 0 |
| if (r4 != 0) {
0x00030c68 bne 0x306f8 | goto label_38;
| }
0x00030c6c b 0x306c4 | goto label_19;
| label_127:
0x00030c70 cmp r4, 0 |
| if (r4 == 0) {
0x00030c74 beq 0x2fda8 | goto label_15;
| }
| label_84:
0x00030c78 ldr r3, [sp, 0xc0] | r3 = *(arg_c0h);
0x00030c7c ldr r2, [sp, 0xcc] | r2 = *(arg_cch);
0x00030c80 cmp r3, 0 |
| if (r3 == 0) {
0x00030c84 andne r3, r2, 1 | r3 = r2 & 1;
| }
| if (r3 != 0) {
0x00030c88 moveq r3, 1 | r3 = 1;
| }
0x00030c8c cmp r3, 0 |
| if (r3 == 0) {
0x00030c90 addne r0, sp, 0x1c | r0 += var_1ch;
| }
| if (r3 == 0) {
0x00030c94 ldmne r0, {r0, r1, r2} | r0 = *(r0);
| r1 = *((r0 + 4));
| r2 = *((r0 + 8));
| }
| if (r3 == 0) {
0x00030c98 movne r3, r4 | r3 = r4;
| }
| if (r3 != 0) {
0x00030c9c ldrne r0, [r0] | r0 = *(r0);
| goto label_137;
| }
| if (r3 != 0) {
| label_137:
0x00030ca0 bne 0x3095c | goto label_39;
| }
0x00030ca4 mov r0, r4 | r0 = r4;
0x00030ca8 bl 0x3f894 | strdup ();
0x00030cac cmp r5, 0 |
0x00030cb0 mov r8, r0 | r8 = r0;
| if (r5 != 0) {
0x00030cb4 beq 0x30cc0 |
0x00030cb8 mov r0, r4 | r0 = r4;
0x00030cbc bl 0x120a8 | fcn_000120a8 ();
| }
0x00030cc0 cmp r8, 0 |
| if (r8 == 0) {
0x00030cc4 movne r4, 0 | r4 = 0;
| }
| if (r8 == 0) {
0x00030cc8 movne r6, r8 | r6 = r8;
| }
| if (r8 == 0) {
0x00030ccc movne sb, r4 | sb = r4;
| }
| if (r8 == 0) {
0x00030cd0 bne 0x30cf4 |
0x00030cd4 mov r7, r8 | r7 = r8;
0x00030cd8 b 0x301d4 | goto label_20;
| label_42:
0x00030cdc ldr r3, [sp, 0x24] | r3 = var_24h;
0x00030ce0 str sb, [r3] | *(r3) = sb;
0x00030ce4 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00030ce8 str sb, [r3] | *(r3) = sb;
0x00030cec ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00030cf0 str sb, [r3] | *(r3) = sb;
| }
| label_41:
0x00030cf4 ldr r1, [sp, 0xc8] | r1 = *(s2);
0x00030cf8 mov r0, r6 | r0 = r6;
0x00030cfc bl 0x3e8b4 | strspn ();
0x00030d00 cmp r4, 0 |
0x00030d04 add r5, r6, r0 | r5 = r6 + r0;
| if (r4 != 0) {
0x00030d08 bne 0x30d20 | goto label_138;
| }
0x00030d0c ldrb r3, [r6, r0] | r3 = *((r6 + r0));
0x00030d10 cmp r3, 0 |
0x00030d14 bne 0x30d20 |
| while (r3 == 0) {
0x00030d18 mov r0, r8 | r0 = r8;
0x00030d1c b 0x30574 | goto label_40;
| label_138:
0x00030d20 ldr r1, [sp, 0xc4] | r1 = *(arg_c4h);
0x00030d24 mov r0, r5 | r0 = r5;
0x00030d28 bl 0x3e8f0 | strcspn ();
0x00030d2c ldr r1, [sp, 0xc8] | r1 = *(s2);
0x00030d30 add r4, r5, r0 | r4 = r5 + r0;
0x00030d34 mov r7, r0 | r7 = r0;
0x00030d38 mov r0, r4 | r0 = r4;
0x00030d3c bl 0x3e8b4 | strspn ();
0x00030d40 ldrb r1, [r4, r0] | r1 = *((r4 + r0));
0x00030d44 add r6, r4, r0 | r6 = r4 + r0;
0x00030d48 cmp r1, 0 |
| if (r1 != 0) {
0x00030d4c moveq r4, r1 | r4 = r1;
| }
| if (r1 != 0) {
0x00030d50 beq 0x30d68 |
0x00030d54 ldr r0, [sp, 0xc4] | r0 = *(arg_c4h);
0x00030d58 bl 0x3ef3c | r0 = index ();
0x00030d5c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x00030d60 addne r6, r6, 1 | r6++;
| }
| if (r4 != r0) {
0x00030d64 movne r4, 1 | r4 = 1;
| goto label_139;
| }
| }
| label_139:
0x00030d68 add r0, sp, 0x1c | r0 += var_1ch;
0x00030d6c ldm r0, {r0, r1, r2} | r0 = *(r0);
| r1 = *((r0 + 4));
| r2 = *((r0 + 8));
0x00030d70 strb sb, [r5, r7] | *((r5 + r7)) = sb;
0x00030d74 mov r3, r5 | r3 = r5;
0x00030d78 ldr r0, [r0] | r0 = *(r0);
0x00030d7c bl 0x2ec24 | fcn_0002ec24 (r0, r1);
0x00030d80 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00030d84 cmp r0, 0 |
0x00030d88 mov r7, r0 | r7 = r0;
0x00030d8c str r0, [r3] | *(r3) = r0;
| if (r0 == 0) {
0x00030d90 bne 0x30db0 |
0x00030d94 ldrb r3, [r5] | r3 = *(r5);
0x00030d98 cmp r3, 0 |
| if (r3 == 0) {
0x00030d9c beq 0x30db0 | goto label_140;
| }
0x00030da0 mov r0, r8 | r0 = r8;
0x00030da4 bl 0x120a8 | fcn_000120a8 ();
0x00030da8 mov r8, r7 | r8 = r7;
0x00030dac b 0x301d4 | goto label_20;
| }
| label_140:
0x00030db0 cmp r4, 0 |
| if (r4 != 0) {
0x00030db4 bne 0x30dc4 | goto label_141;
| }
0x00030db8 ldrb r3, [r6] | r3 = *(r6);
0x00030dbc cmp r3, 0 |
0x00030dc0 beq 0x30d18 |
| }
| label_141:
0x00030dc4 cmp r8, r6 |
| if (r8 == r6) {
0x00030dc8 beq 0x30cf4 | goto label_41;
| }
0x00030dcc mov r1, r7 | r1 = r7;
0x00030dd0 ldr r0, [sp, 0xc0] | r0 = *(arg_c0h);
0x00030dd4 bl 0x2ec60 | r0 = fcn_0002ec60 (r0, r1);
0x00030dd8 cmp r0, 1 |
0x00030ddc mov r5, r0 | r5 = r0;
| if (r0 != 1) {
0x00030de0 bne 0x30cdc | goto label_42;
| }
0x00030de4 mov r0, r8 | r0 = r8;
0x00030de8 bl 0x120a8 | fcn_000120a8 ();
0x00030dec mov r8, 0 | r8 = 0;
| label_79:
0x00030df0 mov r7, 0 | r7 = 0;
0x00030df4 b 0x30550 | goto label_18;
| label_70:
0x00030df8 mov r7, 0 | r7 = 0;
0x00030dfc mov r5, 1 | r5 = 1;
0x00030e00 mov r8, r7 | r8 = r7;
0x00030e04 b 0x30550 | goto label_18;
| label_80:
0x00030e08 mov r7, r8 | r7 = r8;
0x00030e0c b 0x30054 | goto label_10;
| label_61:
0x00030e10 cmp r1, 0x28 |
| if (r1 != 0x28) {
0x00030e14 bne 0x2fc5c | goto label_0;
| }
0x00030e18 b 0x2fc58 | goto label_43;
| label_136:
0x00030e1c cmp r5, 0 |
| if (r5 == 0) {
0x00030e20 beq 0x30c24 | goto label_44;
| }
0x00030e24 b 0x30c04 | goto label_45;
| label_83:
0x00030e28 cmp r6, 0x2d |
| if (r6 == 0x2d) {
0x00030e2c beq 0x30678 | goto label_46;
| }
| if (r6 > 0x2d) {
0x00030e30 bhi 0x30e64 | goto label_142;
| }
0x00030e34 cmp r6, 0x25 |
| if (r6 == 0x25) {
0x00030e38 beq 0x30e54 | goto label_51;
| }
0x00030e3c cmp r6, 0x2b |
| if (r6 != 0x2b) {
0x00030e40 moveq r5, r8 | r5 = r8;
| }
| if (r6 == 0x2b) {
0x00030e44 moveq fp, r8 | goto label_143;
| }
| if (r6 == 0x2b) {
| label_143:
0x00030e48 beq 0x306dc | goto label_47;
| }
0x00030e4c cmp r6, 0x23 |
| if (r6 != 0x23) {
| label_52:
0x00030e50 bne 0x30e78 | goto label_144;
| }
| label_51:
0x00030e54 mov r5, 0 | r5 = 0;
0x00030e58 add r4, sp, 0x60 | r4 += s;
0x00030e5c mov fp, r5 |
0x00030e60 b 0x30414 | goto label_16;
| label_142:
0x00030e64 cmp r6, 0x3f |
| if (r6 == 0x3f) {
0x00030e68 beq 0x30678 | goto label_46;
| }
| if (r6 > 0x3f) {
0x00030e6c bhi 0x30ea8 | goto label_145;
| }
0x00030e70 cmp r6, 0x3d |
| if (r6 == 0x3d) {
0x00030e74 beq 0x30678 | goto label_46;
| }
| label_144:
0x00030e78 cmp r6, 0x2d |
| if (r6 == 0x2d) {
0x00030e7c beq 0x30be0 | goto label_48;
| }
| if (r6 > 0x2d) {
0x00030e80 bhi 0x30eb8 | goto label_146;
| }
0x00030e84 cmp r6, 0x25 |
| if (r6 == 0x25) {
0x00030e88 beq 0x30e9c | goto label_54;
| }
0x00030e8c cmp r6, 0x2b |
| if (r6 == 0x2b) {
0x00030e90 beq 0x30c5c | goto label_49;
| }
0x00030e94 cmp r6, 0x23 |
| if (r6 != 0x23) {
| label_55:
0x00030e98 bne 0x30000 | goto label_50;
| }
| label_54:
0x00030e9c mov r5, 0 | r5 = 0;
0x00030ea0 mov fp, r5 |
0x00030ea4 b 0x305c8 | goto label_27;
| label_145:
0x00030ea8 cmp r6, 0x4c |
| if (r6 == 0x4c) {
0x00030eac beq 0x30e54 | goto label_51;
| }
0x00030eb0 cmp r6, 0x52 |
0x00030eb4 b 0x30e50 | goto label_52;
| label_146:
0x00030eb8 cmp r6, 0x3f |
| if (r6 == 0x3f) {
0x00030ebc beq 0x30b44 | goto label_53;
| }
| if (r6 > 0x3f) {
0x00030ec0 bhi 0x30f58 | goto label_147;
| }
0x00030ec4 cmp r6, 0x3d |
| if (r6 != 0x3d) {
0x00030ec8 moveq r5, 0 | r5 = 0;
| }
| if (r6 == 0x3d) {
0x00030ecc moveq fp, r5 | goto label_148;
| }
| if (r6 != 0x3d) {
| label_148:
0x00030ed0 bne 0x30000 | goto label_50;
| }
| label_117:
0x00030ed4 cmp r4, 0 |
| if (r4 == 0) {
0x00030ed8 beq 0x30ee8 | goto label_149;
| }
0x00030edc ldrb r3, [r4] | r3 = *(r4);
0x00030ee0 cmp r3, 0 |
| if (r3 != 0) {
0x00030ee4 bne 0x308f4 | goto label_29;
| }
| label_149:
0x00030ee8 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00030eec cmp r4, 0 |
| if (r4 == 0) {
0x00030ef0 eorne r3, r3, 1 | r3 ^= 1;
| }
| if (r4 != 0) {
0x00030ef4 moveq r3, 0 | r3 = 0;
| }
0x00030ef8 cmp r3, 0 |
| if (r3 != 0) {
0x00030efc bne 0x306c4 | goto label_19;
| }
0x00030f00 cmp r5, 0 |
| if (r5 != 0) {
0x00030f04 beq 0x30f10 |
0x00030f08 mov r0, r4 | r0 = r4;
0x00030f0c bl 0x120a8 | fcn_000120a8 ();
| }
0x00030f10 cmp r7, 0 |
| if (r7 != 0) {
0x00030f14 moveq r4, r7 | r4 = r7;
| }
| if (r7 != 0) {
0x00030f18 beq 0x30f28 |
0x00030f1c mov r0, r7 | r0 = r7;
0x00030f20 bl 0x3f894 | r0 = strdup ();
0x00030f24 mov r4, r0 | r4 = r0;
| }
0x00030f28 cmp r7, 0 |
0x00030f2c clz r3, r4 | r3 &= r4;
0x00030f30 lsr r3, r3, 5 | r3 >>= 5;
| if (r7 != 0) {
0x00030f34 moveq r3, 0 | r3 = 0;
| }
0x00030f38 cmp r3, 0 |
| if (r3 != 0) {
0x00030f3c bne 0x301d4 | goto label_20;
| }
0x00030f40 mov r2, 1 | r2 = 1;
0x00030f44 mov r1, r4 | r1 = r4;
0x00030f48 mov r0, r8 | r0 = r8;
0x00030f4c bl 0x4c4c0 | setenv ();
| label_132:
0x00030f50 mov r5, 1 | r5 = 1;
0x00030f54 b 0x308f4 | goto label_29;
| label_147:
0x00030f58 cmp r6, 0x4c |
| if (r6 == 0x4c) {
0x00030f5c beq 0x30e9c | goto label_54;
| }
0x00030f60 cmp r6, 0x52 |
0x00030f64 b 0x30e98 | goto label_55;
| }
; 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/lib/libuClibc-1.0.31.so @ 0x4edac */
| #include <stdint.h>
|
; (fcn) fcn.0004edac () | void fcn_0004edac (FILE * stream, int32_t arg_64h, int32_t arg_68h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| char * s2;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| char * s;
| int32_t var_3ch;
| r0 = arg1;
| r1 = arg2;
0x0004edac push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0004edb0 ldr fp, [pc, 0x7a8] | fp = *(0x4f55c);
0x0004edb4 sub sp, sp, 0x3c |
0x0004edb8 mov sl, r3 | sl = r3;
0x0004edbc ldrb r3, [r2] | r3 = *(r2);
0x0004edc0 ldr r4, [sp, 0x68] | r4 = *(arg_68h);
0x0004edc4 cmp r3, 0x3a |
0x0004edc8 ldr sb, [r4, 4] | sb = *((r4 + 4));
| if (r3 != 0x3a) {
0x0004edcc moveq sb, 0 | sb = 0;
| }
0x0004edd0 subs r3, r0, 0 | r3 -= stream;
0x0004edd4 add fp, pc, fp |
0x0004edd8 str r3, [sp, 0x10] | var_10h = r3;
0x0004eddc bgt 0x4edec |
| while (1) {
| label_2:
0x0004ede0 mvn r0, 0 | r0 = ~0;
| label_3:
0x0004ede4 add sp, sp, 0x3c |
0x0004ede8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0004edec mov r3, 0 | r3 = 0;
0x0004edf0 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0004edf4 ldr r3, [r4] | r3 = *(r4);
0x0004edf8 mov r5, r1 | r5 = r1;
0x0004edfc cmp r3, 0 |
0x0004ee00 mov r7, r2 | r7 = r2;
| if (r3 == 0) {
0x0004ee04 beq 0x4ef30 | goto label_11;
| }
0x0004ee08 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0004ee0c cmp r3, 0 |
| if (r3 == 0) {
0x0004ee10 beq 0x4ef38 | goto label_12;
| }
| label_0:
0x0004ee14 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x0004ee18 cmp r3, 0 |
| if (r3 != 0) {
0x0004ee1c beq 0x4ee2c |
0x0004ee20 ldrb r3, [r3] | r3 = *(r3);
0x0004ee24 cmp r3, 0 |
| if (r3 != 0) {
0x0004ee28 bne 0x4f01c | goto label_13;
| }
| }
0x0004ee2c ldr r3, [r4] | r3 = *(r4);
0x0004ee30 ldr r2, [r4, 0x24] | r2 = *((r4 + 0x24));
0x0004ee34 cmp r2, r3 |
0x0004ee38 ldr r2, [r4, 0x20] | r2 = *((r4 + 0x20));
| if (r2 <= r3) {
0x0004ee3c strgt r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
| }
0x0004ee40 cmp r3, r2 |
0x0004ee44 ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
| if (r3 >= r2) {
0x0004ee48 strlt r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
| }
0x0004ee4c cmp r2, 1 |
| if (r2 == 1) {
0x0004ee50 bne 0x4eea8 |
0x0004ee54 ldr r1, [r4, 0x24] | r1 = *((r4 + 0x24));
0x0004ee58 ldr r2, [r4, 0x20] | r2 = *((r4 + 0x20));
0x0004ee5c cmp r2, r1 |
| if (r2 == r1) {
0x0004ee60 beq 0x4efa8 | goto label_14;
| }
0x0004ee64 cmp r3, r1 |
| if (r3 != r1) {
0x0004ee68 beq 0x4ee78 |
0x0004ee6c mov r1, r4 | r1 = r4;
0x0004ee70 mov r0, r5 | r0 = r5;
0x0004ee74 bl 0x4ecf0 | fcn_0004ecf0 (r0, r1);
| }
| label_1:
0x0004ee78 ldr r3, [r4] | r3 = *(r4);
0x0004ee7c ldr r2, [sp, 0x10] | r2 = var_10h;
0x0004ee80 cmp r3, r2 |
| if (r3 < r2) {
0x0004ee84 bge 0x4eea4 |
0x0004ee88 ldr r2, [r5, r3, lsl 2] | offset_0 = r3 << 2;
| r2 = *((r5 + offset_0));
0x0004ee8c ldrb r1, [r2] | r1 = *(r2);
0x0004ee90 cmp r1, 0x2d |
| if (r1 != 0x2d) {
0x0004ee94 bne 0x4efb4 | goto label_15;
| }
0x0004ee98 ldrb r2, [r2, 1] | r2 = *((r2 + 1));
0x0004ee9c cmp r2, 0 |
| if (r2 == 0) {
0x0004eea0 beq 0x4efb4 | goto label_15;
| }
| }
0x0004eea4 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
| }
0x0004eea8 ldr r6, [r4] | r6 = *(r4);
0x0004eeac ldr r3, [sp, 0x10] | r3 = var_10h;
0x0004eeb0 cmp r6, r3 |
| if (r6 != r3) {
0x0004eeb4 beq 0x4ef0c |
0x0004eeb8 ldr r1, [pc, 0x6a4] | r1 = *(0x4f560);
0x0004eebc ldr r0, [r5, r6, lsl 2] | offset_1 = r6 << 2;
| r0 = *((r5 + offset_1));
0x0004eec0 add r1, pc, r1 | r1 = pc + r1;
0x0004eec4 bl 0x3e430 | r0 = strcoll ();
0x0004eec8 cmp r0, 0 |
| if (r0 != 0) {
0x0004eecc bne 0x4ef0c | goto label_16;
| }
0x0004eed0 ldr r2, [r4, 0x20] | r2 = *((r4 + 0x20));
0x0004eed4 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0004eed8 add r6, r6, 1 | r6++;
0x0004eedc cmp r2, r3 |
0x0004eee0 str r6, [r4] | *(r4) = r6;
| if (r2 != r3) {
0x0004eee4 streq r6, [r4, 0x20] | *((r4 + 0x20)) = r6;
| }
| if (r2 != r3) {
0x0004eee8 beq 0x4ef00 |
0x0004eeec cmp r6, r3 |
| if (r6 == r3) {
0x0004eef0 beq 0x4ef00 | goto label_17;
| }
0x0004eef4 mov r1, r4 | r1 = r4;
0x0004eef8 mov r0, r5 | r0 = r5;
0x0004eefc bl 0x4ecf0 | fcn_0004ecf0 (r0, r1);
| }
| label_17:
0x0004ef00 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0004ef04 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x0004ef08 str r3, [r4] | *(r4) = r3;
| }
| label_16:
0x0004ef0c ldr r1, [r4] | r1 = *(r4);
0x0004ef10 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0004ef14 cmp r1, r3 |
| if (r1 != r3) {
0x0004ef18 bne 0x4efc0 | goto label_18;
| }
0x0004ef1c ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x0004ef20 ldr r2, [r4, 0x24] | r2 = *((r4 + 0x24));
0x0004ef24 cmp r3, r2 |
| if (r3 == r2) {
0x0004ef28 strne r3, [r4] | *(r4) = r3;
| }
0x0004ef2c b 0x4ede0 |
| }
| label_11:
0x0004ef30 mov r3, 1 | r3 = 1;
0x0004ef34 str r3, [r4] | *(r4) = r3;
| label_12:
0x0004ef38 ldr r3, [r4] | r3 = *(r4);
0x0004ef3c ldr r0, [pc, 0x624] | r0 = *(0x4f564);
0x0004ef40 mov r6, 0 | r6 = 0;
0x0004ef44 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x0004ef48 str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x0004ef4c str r6, [r4, 0x1c] | *((r4 + 0x1c)) = r6;
0x0004ef50 add r0, pc, r0 | r0 = pc + r0;
0x0004ef54 bl 0x4b980 | r0 = getenv (r0);
0x0004ef58 subs r3, r0, r6 | r3 = r0 - r6;
| if (r3 == r0) {
0x0004ef5c movne r3, 1 | r3 = 1;
| }
0x0004ef60 str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x0004ef64 ldrb r3, [r7] | r3 = *(r7);
0x0004ef68 cmp r3, 0x2d |
| if (r3 != 0x2d) {
0x0004ef6c moveq r3, 2 | r3 = 2;
| }
| if (r3 != 0x2d) {
0x0004ef70 streq r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
| }
| if (r3 != 0x2d) {
0x0004ef74 beq 0x4ef84 |
0x0004ef78 cmp r3, 0x2b |
| if (r3 != 0x2b) {
0x0004ef7c bne 0x4ef94 | goto label_19;
| }
0x0004ef80 str r6, [r4, 0x14] | *((r4 + 0x14)) = r6;
| }
0x0004ef84 add r7, r7, 1 | r7++;
| do {
0x0004ef88 mov r3, 1 | r3 = 1;
0x0004ef8c str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
0x0004ef90 b 0x4ee14 | goto label_0;
| label_19:
0x0004ef94 cmp r0, 0 |
| if (r0 != 0) {
0x0004ef98 moveq r3, 1 | r3 = 1;
| }
| if (r0 == 0) {
0x0004ef9c strne r6, [r4, 0x14] | *((r4 + 0x14)) = r6;
| }
| if (r0 != 0) {
0x0004efa0 streq r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
| }
0x0004efa4 b 0x4ef88 |
| } while (1);
| label_14:
0x0004efa8 cmp r3, r2 |
| if (r3 == r2) {
0x0004efac strne r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
| }
0x0004efb0 b 0x4ee78 | goto label_1;
| label_15:
0x0004efb4 add r3, r3, 1 | r3++;
0x0004efb8 str r3, [r4] | *(r4) = r3;
0x0004efbc b 0x4ee78 | goto label_1;
| label_18:
0x0004efc0 ldr r3, [r5, r1, lsl 2] | offset_2 = r1 << 2;
| r3 = *((r5 + offset_2));
0x0004efc4 ldrb r2, [r3] | r2 = *(r3);
0x0004efc8 cmp r2, 0x2d |
| if (r2 == 0x2d) {
0x0004efcc bne 0x4efdc |
0x0004efd0 ldrb r0, [r3, 1] | r0 = *((r3 + 1));
0x0004efd4 cmp r0, 0 |
| if (r0 != 0) {
0x0004efd8 bne 0x4effc | goto label_20;
| }
| }
0x0004efdc ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x0004efe0 cmp r2, 0 |
| if (r2 == 0) {
0x0004efe4 beq 0x4ede0 | goto label_2;
| }
0x0004efe8 add r1, r1, 1 | r1++;
0x0004efec str r1, [r4] | *(r4) = r1;
0x0004eff0 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0004eff4 mov r0, 1 | r0 = 1;
0x0004eff8 b 0x4ede4 | goto label_3;
| label_20:
0x0004effc sub r2, r0, 0x2d | r2 = r0 - 0x2d;
0x0004f000 cmp sl, 0 |
0x0004f004 clz r2, r2 | r2 &= r2;
0x0004f008 lsr r2, r2, 5 | r2 >>= 5;
| if (sl != 0) {
0x0004f00c moveq r2, 0 | r2 = 0;
| }
0x0004f010 add r2, r2, 1 | r2++;
0x0004f014 add r3, r3, r2 | r3 += r2;
0x0004f018 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
| label_13:
0x0004f01c cmp sl, 0 |
| if (sl == 0) {
0x0004f020 beq 0x4f418 | goto label_21;
| }
0x0004f024 ldr r3, [r4] | r3 = *(r4);
0x0004f028 str r3, [sp, 0x14] | var_14h = r3;
0x0004f02c lsl r3, r3, 2 | r3 <<= 2;
0x0004f030 str r3, [sp, 0x30] | var_30h = r3;
0x0004f034 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0004f038 ldr r3, [r5, r3, lsl 2] | offset_3 = r3 << 2;
| r3 = *((r5 + offset_3));
0x0004f03c str r3, [sp, 0x20] | var_20h = r3;
0x0004f040 ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x0004f044 cmp r3, 0x2d |
0x0004f048 str r3, [sp, 0x24] | var_24h = r3;
| if (r3 != 0x2d) {
0x0004f04c beq 0x4f080 |
0x0004f050 ldr r3, [sp, 0x64] | r3 = *(arg_64h);
0x0004f054 cmp r3, 0 |
| if (r3 == 0) {
0x0004f058 beq 0x4f418 | goto label_21;
| }
0x0004f05c ldr r3, [sp, 0x20] | r3 = var_20h;
0x0004f060 ldrb r3, [r3, 2] | r3 = *((r3 + 2));
0x0004f064 cmp r3, 0 |
| if (r3 != 0) {
0x0004f068 bne 0x4f080 | goto label_22;
| }
0x0004f06c ldr r1, [sp, 0x24] | r1 = var_24h;
0x0004f070 mov r0, r7 | r0 = r7;
0x0004f074 bl 0x3ef3c | r0 = index ();
0x0004f078 cmp r0, 0 |
| if (r0 != 0) {
0x0004f07c bne 0x4f418 | goto label_21;
| }
| }
| label_22:
0x0004f080 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x0004f084 str r3, [sp, 0xc] | s2 = r3;
| do {
0x0004f088 str r3, [sp, 0x1c] | var_1ch = r3;
0x0004f08c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0004f090 ldrb r2, [r3], 1 | r2 = *(r3);
| r3++;
0x0004f094 subs r8, r2, 0x3d | r8 = r2 - 0x3d;
| if (r8 == r2) {
0x0004f098 movne r8, 1 | r8 = 1;
| }
0x0004f09c cmp r2, 0 |
| if (r2 != 0) {
0x0004f0a0 moveq r8, 0 | r8 = 0;
| }
0x0004f0a4 cmp r8, 0 |
0x0004f0a8 bne 0x4f088 |
| } while (r8 != 0);
0x0004f0ac mvn r3, 0 | r3 = ~0;
0x0004f0b0 str r3, [sp, 0x28] | var_28h = r3;
0x0004f0b4 ldr r2, [sp, 0xc] | r2 = s2;
0x0004f0b8 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0004f0bc mov r6, r8 | r6 = r8;
0x0004f0c0 sub r3, r3, r2 | r3 -= r2;
0x0004f0c4 str r8, [sp, 0x18] | var_18h = r8;
0x0004f0c8 str r3, [sp, 0x2c] | var_2ch = r3;
| do {
0x0004f0cc ldr r3, [sl] | r3 = *(sl);
0x0004f0d0 cmp r3, 0 |
| if (r3 == 0) {
0x0004f0d4 bne 0x4f140 |
| label_5:
0x0004f0d8 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0004f0dc cmp r2, 0 |
| if (r2 == 0) {
0x0004f0e0 eorne r3, r3, 1 | r3 ^= 1;
| }
| if (r2 != 0) {
0x0004f0e4 moveq r3, 0 | r3 = 0;
| }
0x0004f0e8 cmp r3, 0 |
| if (r3 == 0) {
0x0004f0ec beq 0x4f1f0 | goto label_23;
| }
0x0004f0f0 cmp sb, 0 |
| if (sb != 0) {
0x0004f0f4 beq 0x4f118 |
0x0004f0f8 ldr r3, [pc, 0x46c] | r3 = *(0x4f568);
0x0004f0fc ldr r1, [pc, 0x46c] | r1 = *(0x4f56c);
0x0004f100 ldr r0, [fp, r3] | r0 = *((fp + r3));
0x0004f104 ldr r2, [r5] | r2 = *(r5);
0x0004f108 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0004f10c add r1, pc, r1 | r1 = pc + r1;
0x0004f110 ldr r0, [r0] | r0 = *(r0);
0x0004f114 bl 0x34c9c | fprintf (r0, r1, r2, r3)
| }
0x0004f118 ldr r5, [r4, 0x1c] | r5 = *((r4 + 0x1c));
0x0004f11c mov r0, r5 | r0 = r5;
0x0004f120 bl 0x3e3c0 | r0 = strlen ();
0x0004f124 add r0, r5, r0 | r0 = r5 + r0;
0x0004f128 str r0, [r4, 0x1c] | *((r4 + 0x1c)) = r0;
| label_6:
0x0004f12c ldr r3, [r4] | r3 = *(r4);
0x0004f130 add r3, r3, 1 | r3++;
0x0004f134 str r3, [r4] | *(r4) = r3;
0x0004f138 mov r3, 0 | r3 = 0;
0x0004f13c b 0x4f27c | goto label_24;
| }
0x0004f140 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0004f144 ldr r1, [sp, 0xc] | r1 = s2;
0x0004f148 mov r0, r3 | r0 = r3;
0x0004f14c str r3, [sp, 0x34] | s = r3;
0x0004f150 bl 0x3eab8 | r0 = strncmp (r0, r1, r2);
0x0004f154 cmp r0, 0 |
| if (r0 == 0) {
0x0004f158 bne 0x4f1c8 |
0x0004f15c ldr r3, [sp, 0x34] | r3 = s;
0x0004f160 mov r0, r3 | r0 = r3;
0x0004f164 bl 0x3e3c0 | strlen ();
0x0004f168 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0004f16c cmp r3, r0 |
| if (r3 == r0) {
0x0004f170 beq 0x4f1e0 | goto label_25;
| }
0x0004f174 cmp r6, 0 |
| if (r6 != 0) {
0x0004f178 streq r8, [sp, 0x28] | var_28h = r8;
| }
| if (r6 != 0) {
0x0004f17c moveq r6, sl | r6 = sl;
| }
| if (r6 == 0) {
0x0004f180 beq 0x4f1c8 | goto label_4;
| }
0x0004f184 ldr r3, [sp, 0x64] | r3 = *(arg_64h);
0x0004f188 cmp r3, 0 |
| if (r3 != 0) {
0x0004f18c bne 0x4f1d4 | goto label_26;
| }
0x0004f190 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x0004f194 ldr r3, [sl, 4] | r3 = *((sl + 4));
0x0004f198 cmp r2, r3 |
| if (r2 != r3) {
0x0004f19c bne 0x4f1d4 | goto label_26;
| }
0x0004f1a0 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x0004f1a4 ldr r3, [sl, 8] | r3 = *((sl + 8));
0x0004f1a8 cmp r2, r3 |
| if (r2 != r3) {
0x0004f1ac bne 0x4f1d4 | goto label_26;
| }
0x0004f1b0 ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x0004f1b4 ldr r3, [sl, 0xc] | r3 = *((sl + 0xc));
0x0004f1b8 ldr r1, [sp, 0x18] | r1 = var_18h;
0x0004f1bc cmp r2, r3 |
| if (r2 == r3) {
0x0004f1c0 movne r1, 1 | r1 = 1;
| }
0x0004f1c4 str r1, [sp, 0x18] | var_18h = r1;
| }
| label_4:
0x0004f1c8 add sl, sl, 0x10 | sl += 0x10;
0x0004f1cc add r8, r8, 1 | r8++;
0x0004f1d0 b 0x4f0cc |
| } while (1);
| label_26:
0x0004f1d4 mov r3, 1 | r3 = 1;
0x0004f1d8 str r3, [sp, 0x18] | var_18h = r3;
0x0004f1dc b 0x4f1c8 | goto label_4;
| label_25:
0x0004f1e0 str r8, [sp, 0x28] | var_28h = r8;
0x0004f1e4 mov r6, sl | r6 = sl;
0x0004f1e8 mov r3, 1 | r3 = 1;
0x0004f1ec b 0x4f0d8 | goto label_5;
| label_23:
0x0004f1f0 cmp r6, 0 |
| if (r6 == 0) {
0x0004f1f4 beq 0x4f36c | goto label_27;
| }
0x0004f1f8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0004f1fc ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0004f200 add r3, r3, 1 | r3++;
0x0004f204 str r3, [r4] | *(r4) = r3;
0x0004f208 ldrb r1, [r1] | r1 = *(r1);
0x0004f20c ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x0004f210 cmp r1, 0 |
| if (r1 == 0) {
0x0004f214 beq 0x4f2a4 | goto label_28;
| }
0x0004f218 cmp r2, 0 |
| if (r2 == 0) {
0x0004f21c ldrne r3, [sp, 0x1c] | r3 = var_1ch;
| }
| if (r2 == 0) {
0x0004f220 addne r3, r3, 1 | r3++;
| }
| if (r2 != 0) {
0x0004f224 bne 0x4f2d0 | goto label_29;
| }
0x0004f228 cmp sb, 0 |
| if (sb == 0) {
0x0004f22c beq 0x4f264 | goto label_30;
| }
0x0004f230 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0004f234 ldr r2, [pc, 0x330] | r2 = *(0x4f568);
0x0004f238 ldr r1, [r5, r3, lsl 2] | offset_4 = r3 << 2;
| r1 = *((r5 + offset_4));
0x0004f23c ldr r2, [fp, r2] | r2 = *((fp + r2));
0x0004f240 ldrb ip, [r1, 1] | ip = *((r1 + 1));
0x0004f244 ldr r0, [r2] | r0 = *(0x4f568);
0x0004f248 cmp ip, 0x2d |
0x0004f24c ldr r3, [r6] | r3 = *(r6);
0x0004f250 ldr r2, [r5] | r2 = *(r5);
| if (ip != 0x2d) {
0x0004f254 bne 0x4f288 | goto label_31;
| }
0x0004f258 ldr r1, [pc, 0x314] | r1 = *(0x4f570);
0x0004f25c add r1, pc, r1 | r1 = pc + r1;
0x0004f260 bl 0x34c9c | fprintf (r0, r1)
| do {
| label_30:
0x0004f264 ldr r5, [r4, 0x1c] | r5 = *((r4 + 0x1c));
0x0004f268 mov r0, r5 | r0 = r5;
0x0004f26c bl 0x3e3c0 | strlen ();
0x0004f270 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0004f274 add r0, r5, r0 | r0 = r5 + r0;
0x0004f278 str r0, [r4, 0x1c] | *((r4 + 0x1c)) = r0;
| label_24:
0x0004f27c str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| label_7:
0x0004f280 mov r0, 0x3f | r0 = 0x3f;
0x0004f284 b 0x4ede4 | goto label_3;
| label_31:
0x0004f288 ldrb r1, [r1] | r1 = *(r1);
0x0004f28c str r3, [sp] | *(sp) = r3;
0x0004f290 mov r3, r1 | r3 = r1;
0x0004f294 ldr r1, [pc, 0x2dc] | r1 = *(0x4f574);
0x0004f298 add r1, pc, r1 | r1 = pc + r1;
0x0004f29c bl 0x34c9c | fprintf (r0, r1, r2, r3)
0x0004f2a0 b 0x4f264 |
| } while (1);
| label_28:
0x0004f2a4 cmp r2, 1 |
| if (r2 == 1) {
0x0004f2a8 bne 0x4f2d4 |
0x0004f2ac ldr r2, [sp, 0x10] | r2 = var_10h;
0x0004f2b0 cmp r3, r2 |
| if (r3 >= r2) {
0x0004f2b4 bge 0x4f310 | goto label_32;
| }
0x0004f2b8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0004f2bc add r3, r3, 2 | r3 += 2;
0x0004f2c0 str r3, [r4] | *(r4) = r3;
0x0004f2c4 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0004f2c8 add r5, r5, r3 | r5 += r3;
0x0004f2cc ldr r3, [r5, 4] | r3 = *((r5 + 4));
| label_29:
0x0004f2d0 str r3, [r4, 8] | *((r4 + 8)) = r3;
| }
0x0004f2d4 ldr r0, [sp, 0xc] | r0 = s2;
0x0004f2d8 bl 0x3e3c0 | strlen ();
0x0004f2dc ldr r3, [sp, 0xc] | r3 = s2;
0x0004f2e0 add r0, r3, r0 | r0 = r3 + r0;
0x0004f2e4 ldr r3, [sp, 0x60] | r3 = *(stream);
0x0004f2e8 str r0, [r4, 0x1c] | *((r4 + 0x1c)) = r0;
0x0004f2ec cmp r3, 0 |
| if (r3 == 0) {
0x0004f2f0 ldrne r2, [sp, 0x28] | r2 = var_28h;
| }
| if (r3 == 0) {
0x0004f2f4 strne r2, [r3] | *(r3) = r2;
| }
0x0004f2f8 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x0004f2fc ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0004f300 cmp r3, 0 |
| if (r3 == 0) {
0x0004f304 strne r0, [r3] | *(r3) = r0;
| }
| if (r3 == 0) {
0x0004f308 movne r0, 0 | r0 = 0;
| }
0x0004f30c b 0x4ede4 | goto label_3;
| label_32:
0x0004f310 cmp sb, 0 |
| if (sb != 0) {
0x0004f314 beq 0x4f33c |
0x0004f318 ldr r3, [pc, 0x24c] | r3 = *(0x4f568);
0x0004f31c ldr r1, [pc, 0x258] | r1 = *(0x4f578);
0x0004f320 ldr r0, [fp, r3] | r0 = *((fp + r3));
0x0004f324 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0004f328 ldr r2, [r5] | r2 = *(r5);
0x0004f32c ldr r3, [r5, r3, lsl 2] | offset_5 = r3 << 2;
| r3 = *((r5 + offset_5));
0x0004f330 add r1, pc, r1 | r1 = pc + r1;
0x0004f334 ldr r0, [r0] | r0 = *(r0);
0x0004f338 bl 0x34c9c | fprintf (r0, r1, r2, r3)
| }
0x0004f33c ldr r5, [r4, 0x1c] | r5 = *((r4 + 0x1c));
0x0004f340 mov r0, r5 | r0 = r5;
0x0004f344 bl 0x3e3c0 | strlen ();
0x0004f348 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0004f34c str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x0004f350 add r0, r5, r0 | r0 = r5 + r0;
0x0004f354 str r0, [r4, 0x1c] | *((r4 + 0x1c)) = r0;
0x0004f358 ldrb r3, [r7] | r3 = *(r7);
0x0004f35c cmp r3, 0x3a |
| if (r3 == 0x3a) {
0x0004f360 movne r0, 0x3f | r0 = 0x3f;
| }
| if (r3 != 0x3a) {
0x0004f364 moveq r0, 0x3a | r0 = 0x3a;
| }
0x0004f368 b 0x4ede4 | goto label_3;
| label_27:
0x0004f36c ldr r3, [sp, 0x64] | r3 = *(arg_64h);
0x0004f370 cmp r3, 0 |
| if (r3 == 0) {
0x0004f374 beq 0x4f3d4 | goto label_33;
| }
0x0004f378 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0004f37c cmp r3, 0x2d |
| if (r3 == 0x2d) {
0x0004f380 beq 0x4f554 | goto label_34;
| }
0x0004f384 ldr r3, [sp, 0xc] | r3 = s2;
0x0004f388 mov r0, r7 | r0 = r7;
0x0004f38c ldrb r1, [r3] | r1 = *(r3);
0x0004f390 bl 0x3ef3c | r0 = index ();
0x0004f394 cmp r0, 0 |
| if (r0 != 0) {
0x0004f398 bne 0x4f418 | goto label_21;
| }
0x0004f39c cmp sb, 0 |
| if (sb == 0) {
0x0004f3a0 beq 0x4f408 | goto label_10;
| }
| do {
0x0004f3a4 ldr r2, [pc, 0x1c0] | r2 = *(0x4f568);
0x0004f3a8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0004f3ac ldr r0, [fp, r2] | r0 = *((fp + r2));
0x0004f3b0 ldr r1, [pc, 0x1c8] | r1 = *(0x4f57c);
0x0004f3b4 ldr r2, [sp, 0xc] | r2 = s2;
0x0004f3b8 ldrb r3, [r3] | r3 = *(r3);
0x0004f3bc add r1, pc, r1 | r1 = pc + r1;
0x0004f3c0 str r2, [sp] | *(sp) = r2;
0x0004f3c4 ldr r2, [r5] | r2 = *(r5);
0x0004f3c8 ldr r0, [r0] | r0 = *(r0);
0x0004f3cc bl 0x34c9c | fprintf (r0, r1, r2, r3)
0x0004f3d0 b 0x4f408 | goto label_10;
| label_33:
0x0004f3d4 cmp sb, 0 |
| if (sb == 0) {
0x0004f3d8 beq 0x4f408 | goto label_10;
| }
0x0004f3dc ldr r3, [sp, 0x24] | r3 = var_24h;
0x0004f3e0 cmp r3, 0x2d |
0x0004f3e4 bne 0x4f3a4 |
| } while (r3 != 0x2d);
| label_9:
0x0004f3e8 ldr r3, [pc, 0x17c] | r3 = *(0x4f568);
0x0004f3ec ldr r1, [pc, 0x190] | r1 = *(0x4f580);
0x0004f3f0 ldr r0, [fp, r3] | r0 = *((fp + r3));
0x0004f3f4 ldr r2, [r5] | r2 = *(r5);
0x0004f3f8 ldr r3, [sp, 0xc] | r3 = s2;
0x0004f3fc add r1, pc, r1 | r1 = pc + r1;
0x0004f400 ldr r0, [r0] | r0 = *(r0);
0x0004f404 bl 0x34c9c | fprintf (r0, r1, r2, r3)
| label_10:
0x0004f408 ldr r3, [pc, 0x178] | r3 = *(0x4f584);
0x0004f40c add r3, pc, r3 | r3 = pc + r3;
0x0004f410 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x0004f414 b 0x4f12c | goto label_6;
| label_21:
0x0004f418 ldr r8, [r4, 0x1c] | r8 = *((r4 + 0x1c));
0x0004f41c mov r0, r7 | r0 = r7;
0x0004f420 add sl, r8, 1 | sl = r8 + 1;
0x0004f424 str sl, [r4, 0x1c] | *((r4 + 0x1c)) = sl;
0x0004f428 ldrb r6, [r8] | r6 = *(r8);
0x0004f42c mov r1, r6 | r1 = r6;
0x0004f430 bl 0x3ef3c | index ();
0x0004f434 ldrb r3, [r8, 1] | r3 = *((r8 + 1));
0x0004f438 cmp r3, 0 |
| if (r3 != 0) {
0x0004f43c ldreq r3, [r4] | r3 = *(r4);
| }
| if (r3 != 0) {
0x0004f440 addeq r3, r3, 1 | r3++;
| }
| if (r3 != 0) {
0x0004f444 streq r3, [r4] | *(r4) = r3;
| }
0x0004f448 cmp r6, 0x3a |
0x0004f44c cmpne r0, 0 | __asm ("cmpne r0, 0");
| if (r6 != 0x3a) {
0x0004f450 bne 0x4f49c | goto label_35;
| }
0x0004f454 cmp sb, 0 |
| if (sb == 0) {
0x0004f458 beq 0x4f488 | goto label_36;
| }
0x0004f45c ldr r3, [pc, 0x108] | r3 = *(0x4f568);
0x0004f460 ldr r2, [r5] | r2 = *(r5);
0x0004f464 ldr r3, [fp, r3] | r3 = *((fp + r3));
0x0004f468 ldr r0, [r3] | r0 = *(0x4f568);
0x0004f46c ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x0004f470 cmp r3, 0 |
0x0004f474 mov r3, r6 | r3 = r6;
| if (r3 == 0) {
0x0004f478 beq 0x4f490 | goto label_37;
| }
0x0004f47c ldr r1, [pc, 0x108] | r1 = *(0x4f588);
0x0004f480 add r1, pc, r1 | r1 = pc + r1;
| do {
0x0004f484 bl 0x34c9c | fprintf (r0, r1)
| label_36:
0x0004f488 str r6, [r4, 0xc] | *((r4 + 0xc)) = r6;
0x0004f48c b 0x4f280 | goto label_7;
| label_37:
0x0004f490 ldr r1, [pc, 0xf8] | r1 = *(0x4f58c);
0x0004f494 add r1, pc, r1 | r1 = pc + r1;
0x0004f498 b 0x4f484 |
| } while (1);
| label_35:
0x0004f49c ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x0004f4a0 cmp r3, 0x3a |
| if (r3 != 0x3a) {
0x0004f4a4 bne 0x4f4dc | goto label_38;
| }
0x0004f4a8 ldrb r3, [r0, 2] | r3 = *((r0 + 2));
0x0004f4ac ldrb r2, [r8, 1] | r2 = *((r8 + 1));
0x0004f4b0 cmp r3, 0x3a |
| if (r3 != 0x3a) {
0x0004f4b4 bne 0x4f4e4 | goto label_39;
| }
0x0004f4b8 cmp r2, 0 |
| if (r2 == 0) {
0x0004f4bc strne sl, [r4, 8] | *((r4 + 8)) = sl;
| }
| if (r2 == 0) {
0x0004f4c0 ldrne r3, [r4] | r3 = *(r4);
| }
| if (r2 != 0) {
0x0004f4c4 streq r2, [r4, 8] | *((r4 + 8)) = r2;
| }
0x0004f4c8 beq 0x4f4d4 |
| while (r2 != 0) {
0x0004f4cc add r3, r3, 1 | r3++;
0x0004f4d0 str r3, [r4] | *(r4) = r3;
| label_8:
0x0004f4d4 mov r3, 0 | r3 = 0;
0x0004f4d8 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
| label_38:
0x0004f4dc mov r0, r6 | r0 = r6;
0x0004f4e0 b 0x4ede4 | goto label_3;
| label_39:
0x0004f4e4 cmp r2, 0 |
0x0004f4e8 ldr r3, [r4] | r3 = *(r4);
| if (r2 == 0) {
0x0004f4ec strne sl, [r4, 8] | *((r4 + 8)) = sl;
| }
0x0004f4f0 bne 0x4f4cc |
| }
0x0004f4f4 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0004f4f8 cmp r2, r3 |
| if (r2 == r3) {
0x0004f4fc bne 0x4f540 |
0x0004f500 cmp sb, 0 |
| if (sb != 0) {
0x0004f504 beq 0x4f528 |
0x0004f508 ldr r3, [pc, 0x5c] | r3 = *(0x4f568);
0x0004f50c ldr r1, [pc, 0x80] | r1 = *(0x4f590);
0x0004f510 ldr r0, [fp, r3] | r0 = *((fp + r3));
0x0004f514 ldr r2, [r5] | r2 = *(r5);
0x0004f518 mov r3, r6 | r3 = r6;
0x0004f51c add r1, pc, r1 | r1 = pc + r1;
0x0004f520 ldr r0, [r0] | r0 = *(r0);
0x0004f524 bl 0x34c9c | fprintf (r0, r1, r2, r3)
| }
0x0004f528 str r6, [r4, 0xc] | *((r4 + 0xc)) = r6;
0x0004f52c ldrb r3, [r7] | r3 = *(r7);
0x0004f530 cmp r3, 0x3a |
| if (r3 == 0x3a) {
0x0004f534 movne r6, 0x3f | r6 = 0x3f;
| }
| if (r3 != 0x3a) {
0x0004f538 moveq r6, 0x3a | r6 = 0x3a;
| }
0x0004f53c b 0x4f4d4 | goto label_8;
| }
0x0004f540 add r2, r3, 1 | r2 = r3 + 1;
0x0004f544 ldr r3, [r5, r3, lsl 2] | offset_6 = r3 << 2;
| r3 = *((r5 + offset_6));
0x0004f548 str r2, [r4] | *(r4) = r2;
0x0004f54c str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0004f550 b 0x4f4d4 | goto label_8;
| label_34:
0x0004f554 cmp sb, 0 |
| if (sb != 0) {
0x0004f558 bne 0x4f3e8 | goto label_9;
| }
0x0004f55c b 0x4f408 | goto label_10;
| }
; 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/lib/libuClibc-1.0.31.so @ 0x18060 */
| #include <stdint.h>
|
; (fcn) sym.__assert () | void assert (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| r0 = arg1;
| r1 = arg2;
0x00018060 push {r0, r1, r2, r3, r4, lr} |
0x00018064 ldr lr, [pc, 0x64] | lr = *(0x180cc);
0x00018068 mov r4, r2 | r4 = r2;
0x0001806c add lr, pc, lr | lr = pc + lr;
0x00018070 ldr r2, [lr] | r2 = *(0x180cc);
0x00018074 ldr ip, [pc, 0x58] | ip = *(0x180d0);
0x00018078 cmp r2, 0 |
0x0001807c add ip, pc, ip |
| if (r2 == 0) {
0x00018080 bne 0x180cc |
0x00018084 mov r2, 1 | r2 = 1;
0x00018088 str r2, [lr] | *(lr) = r2;
0x0001808c ldr r2, [pc, 0x44] | r2 = *(0x180d4);
0x00018090 mov r5, r0 | r5 = r0;
0x00018094 ldr r2, [ip, r2] | r2 = *((ip + r2));
0x00018098 cmp r3, 0 |
0x0001809c ldr r0, [r2] | r0 = *(0x180d4);
0x000180a0 ldr r2, [pc, 0x34] |
0x000180a4 add r2, pc, r2 | r2 = pc + r2;
0x000180a8 ldr r2, [r2] | r2 = *(0x180d8);
| if (r3 != 0) {
0x000180ac ldreq r3, [pc, 0x2c] | r3 = *((pc + 0x2c));
| }
| if (r3 != 0) {
0x000180b0 addeq r3, pc, r3 | r3 = pc + r3;
| }
0x000180b4 stmib sp, {r3, r5} | __asm ("stmib sp, {r3, r5}");
0x000180b8 mov r3, r1 | r3 = r1;
0x000180bc ldr r1, [pc, 0x20] | r1 = *(0x180e0);
0x000180c0 str r4, [sp] | *(sp) = r4;
0x000180c4 add r1, pc, r1 | r1 = pc + r1;
0x000180c8 bl 0x34c9c | r0 = fprintf (r0, r1, r2, r3, r4, r5)
| }
0x000180cc bl 0x4b870 | abort ();
| if (r3 != 0) {
0x000180d0 muleq r7, r8, r2 | r7 = r8 * r2;
| }
| if (r3 != 0) {
0x000180d4 andeq pc, r6, r4, asr 23 | pc = r6 & (r4 >> 23);
| }
| if (r3 != 0) {
0x000180d8 andeq r0, r0, r0, lsl 7 | r0 &= (r0 << 7);
| }
| if (r3 != 0) {
0x000180dc andeq r0, r7, r0, lsl 4 | r0 = r7 & (r0 << 4);
| }
| if (r3 != 0) {
0x000180e0 andeq sl, r5, sb, ror 5 | sl = r5 & (sb >>> 5);
| }
| /* 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. */
0x000180e4 andeq sl, r5, r0, ror 5 | return sl = r5 & (r0 >>> 5);
| }
; 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/lib/libuClibc-1.0.31.so @ 0x1e368 */
| #include <stdint.h>
|
; (fcn) sym.addmntent () | void addmntent (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x0001e368 push {r4, r5, lr} |
0x0001e36c mov r2, 2 | r2 = 2;
0x0001e370 sub sp, sp, 0x14 |
0x0001e374 mov r4, r1 | r4 = r1;
0x0001e378 mov r1, 0 | r1 = 0;
0x0001e37c mov r5, r0 | r5 = r0;
0x0001e380 bl 0x33f94 | r0 = fseeko ();
0x0001e384 cmp r0, 0 |
| if (r0 >= 0) {
0x0001e388 movlt r0, 1 | r0 = 1;
| }
| if (r0 >= 0) {
0x0001e38c blt 0x1e3c8 |
0x0001e390 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0001e394 ldr r1, [pc, 0x34] | r1 = *(0x1e3cc);
0x0001e398 str r3, [sp, 0xc] | var_ch = r3;
0x0001e39c ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0001e3a0 add r1, pc, r1 | r1 = pc + r1;
0x0001e3a4 str r3, [sp, 8] | var_8h = r3;
0x0001e3a8 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0001e3ac mov r0, r5 | r0 = r5;
0x0001e3b0 str r3, [sp, 4] | var_4h = r3;
0x0001e3b4 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0001e3b8 str r3, [sp] | *(sp) = r3;
0x0001e3bc ldm r4, {r2, r3} | r2 = *(r4);
| r3 = *((r4 + 4));
0x0001e3c0 bl 0x34c9c | r0 = fprintf (r0, r1, r2, r3, r4)
0x0001e3c4 lsr r0, r0, 0x1f | r0 >>= 0x1f;
| }
0x0001e3c8 add sp, sp, 0x14 |
0x0001e3cc pop {r4, r5, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/libuClibc-1.0.31.so @ 0x19164 */
| #include <stdint.h>
|
; (fcn) sym.error () | void error (int32_t errname, int32_t status) {
| int32_t var_4h_3;
| char * format;
| int32_t var_24h;
| r1 = errname;
| r0 = status;
0x00019164 push {r2, r3} |
0x00019168 ldr r3, [pc, 0x110] | r3 = *(0x1927c);
0x0001916c push {r0, r1, r2, r4, r5, r6, r7, lr} |
0x00019170 ldr r4, [pc, 0x10c] | r4 = *(0x19280);
0x00019174 mov r6, r0 | r6 = r0;
0x00019178 add r4, pc, r4 | r4 = pc + r4;
0x0001917c ldr r3, [r4, r3] | r3 = *(0x19280);
0x00019180 mov r7, r1 | r7 = r1;
0x00019184 ldr r0, [r3] | r0 = *(0x19280);
0x00019188 bl 0x3bec8 | fflush ();
0x0001918c ldr r3, [pc, 0xf4] | r3 = *(0x19284);
0x00019190 ldr r2, [pc, 0xf4] | r2 = *(0x19288);
0x00019194 ldr r3, [r4, r3] |
0x00019198 ldr r5, [r4, r2] | r5 = *(0x19280);
0x0001919c ldr r3, [r3] | r3 = *(0x19280);
0x000191a0 cmp r3, 0 |
| if (r3 == 0) {
0x000191a4 beq 0x1923c | goto label_1;
| }
0x000191a8 blx r3 | uint32_t (*r3)() ();
| do {
0x000191ac add r2, sp, 0x24 | r2 += var_24h;
0x000191b0 ldr r1, [sp, 0x20] | r1 = format;
0x000191b4 ldr r0, [r5] | r0 = *(r5);
0x000191b8 str r2, [sp, 4] | var_4h_3 = r2;
0x000191bc bl 0x37bd0 | vfprintf ()
0x000191c0 ldr r3, [pc, 0xc8] | r3 = *(0x1928c);
0x000191c4 cmp r7, 0 |
0x000191c8 ldr r2, [r4, r3] | r2 = *((r4 + r3));
0x000191cc ldr r3, [r2] | r3 = *(r2);
0x000191d0 add r3, r3, 1 | r3++;
0x000191d4 str r3, [r2] | *(r2) = r3;
| if (r7 != 0) {
0x000191d8 beq 0x191fc |
0x000191dc mov r0, r7 | r0 = r7;
0x000191e0 ldr r4, [r5] | r4 = *(r5);
0x000191e4 bl 0x3f158 | strerror ();
0x000191e8 ldr r1, [pc, 0xa4] | r1 = *(0x19290);
0x000191ec add r1, pc, r1 | r1 = pc + r1;
0x000191f0 mov r2, r0 | r2 = r0;
0x000191f4 mov r0, r4 | r0 = r4;
0x000191f8 bl 0x34c9c | fprintf (r0, r1, r2)
| }
0x000191fc ldr r1, [r5] | r1 = *(r5);
0x00019200 ldr r3, [r1, 0x34] | r3 = *((r1 + 0x34));
0x00019204 cmp r3, 0 |
| if (r3 == 0) {
0x00019208 beq 0x19264 | goto label_2;
| }
0x0001920c ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00019210 ldr r2, [r1, 0x1c] | r2 = *((r1 + 0x1c));
0x00019214 cmp r3, r2 |
| if (r3 >= r2) {
0x00019218 bhs 0x19258 | goto label_3;
| }
0x0001921c add r2, r3, 1 | r2 = r3 + 1;
0x00019220 str r2, [r1, 0x10] | *((r1 + 0x10)) = r2;
0x00019224 mov r2, 0xa | r2 = 0xa;
0x00019228 strb r2, [r3] | *(r3) = r2;
| label_0:
0x0001922c cmp r6, 0 |
| if (r6 == 0) {
0x00019230 beq 0x19270 | goto label_4;
| }
0x00019234 mov r0, r6 | r0 = r6;
0x00019238 bl 0x4e878 | exit (r0);
| label_1:
0x0001923c ldr r3, [pc, 0x54] | r3 = *(0x19294);
0x00019240 ldr r1, [pc, 0x54] | r1 = *(0x19298);
0x00019244 ldr r2, [pc, r3] | r2 = *(0x0001924c);
0x00019248 add r1, pc, r1 | r1 = pc + r1;
0x0001924c ldr r0, [r5] | r0 = *(r5);
0x00019250 bl 0x34c9c | fprintf (r0, r1, r2, r3)
0x00019254 b 0x191ac |
| } while (1);
| label_3:
0x00019258 mov r0, 0xa | r0 = 0xa;
0x0001925c bl 0x3d7f0 | fputc_unlocked ();
0x00019260 b 0x1922c | goto label_0;
| label_2:
0x00019264 mov r0, 0xa | r0 = 0xa;
0x00019268 bl 0x3c374 | fputc ();
0x0001926c b 0x1922c | goto label_0;
| label_4:
0x00019270 add sp, sp, 0xc |
0x00019274 pop {r4, r5, r6, r7, lr} |
0x00019278 add sp, sp, 8 |
0x0001927c bx lr | return;
| }
; 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/lib/libuClibc-1.0.31.so @ 0x192a0 */
| #include <stdint.h>
|
; (fcn) sym.error_at_line () | void error_at_line (char * format, int32_t arg_2ch, int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x000192a0 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, lr} |
0x000192a4 ldr r4, [pc, 0x180] | r4 = *(0x19428);
0x000192a8 mov r8, r3 | r8 = r3;
0x000192ac ldr r3, [pc, 0x17c] | r3 = *(0x1942c);
0x000192b0 add r4, pc, r4 | r4 = pc + r4;
0x000192b4 ldr r3, [r4, r3] |
0x000192b8 mov r7, r0 | r7 = r0;
0x000192bc ldr r3, [r3] | r3 = *(0x19428);
0x000192c0 mov sb, r1 | sb = r1;
0x000192c4 cmp r3, 0 |
0x000192c8 mov r6, r2 | r6 = r2;
| if (r3 != 0) {
0x000192cc beq 0x19310 |
0x000192d0 ldr r3, [pc, 0x15c] | r3 = *(0x19430);
0x000192d4 add r3, pc, r3 | r3 = pc + r3;
0x000192d8 ldr r2, [r3] | r2 = *(0x19430);
0x000192dc cmp r2, r8 |
| if (r2 == r8) {
0x000192e0 bne 0x19300 |
0x000192e4 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000192e8 cmp r0, r6 |
| if (r0 == r6) {
0x000192ec beq 0x19424 | goto label_1;
| }
0x000192f0 mov r1, r6 | r1 = r6;
0x000192f4 bl 0x3e430 | r0 = strcoll ();
0x000192f8 cmp r0, 0 |
| if (r0 == 0) {
0x000192fc beq 0x19424 | goto label_1;
| }
| }
0x00019300 ldr r3, [pc, 0x130] | r3 = *(0x19434);
0x00019304 add r3, pc, r3 | r3 = pc + r3;
0x00019308 str r6, [r3, 4] | *((r3 + 4)) = r6;
0x0001930c str r8, [r3] | *(r3) = r8;
| }
0x00019310 ldr r3, [pc, 0x124] | r3 = *(0x19438);
0x00019314 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00019318 ldr r0, [r3] | r0 = *(0x19438);
0x0001931c bl 0x3bec8 | fflush ();
0x00019320 ldr r3, [pc, 0x118] |
0x00019324 ldr r2, [pc, 0x118] | r2 = *(0x19440);
0x00019328 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x0001932c ldr r5, [r4, r2] | r5 = *((r4 + r2));
0x00019330 ldr r3, [r3] | r3 = *(0x1943c);
0x00019334 cmp r3, 0 |
| if (r3 == 0) {
0x00019338 beq 0x193f0 | goto label_2;
| }
0x0001933c blx r3 | uint32_t (*r3)() ();
| do {
0x00019340 cmp r6, 0 |
| if (r6 != 0) {
0x00019344 beq 0x19360 |
0x00019348 ldr r1, [pc, 0xf8] | r1 = *(0x19444);
0x0001934c mov r3, r8 | r3 = r8;
0x00019350 mov r2, r6 | r2 = r6;
0x00019354 add r1, pc, r1 | r1 = pc + r1;
0x00019358 ldr r0, [r5] | r0 = *(r5);
0x0001935c bl 0x34c9c | fprintf (r0, r1, r2, r3)
| }
0x00019360 add r2, sp, 0x2c | r2 += arg_2ch;
0x00019364 ldr r1, [sp, 0x28] | r1 = *(format);
0x00019368 ldr r0, [r5] | r0 = *(r5);
0x0001936c str r2, [sp, 4] | var_4h = r2;
0x00019370 bl 0x37bd0 | vfprintf ()
0x00019374 ldr r3, [pc, 0xd0] | r3 = *(0x19448);
0x00019378 cmp sb, 0 |
0x0001937c ldr r2, [r4, r3] | r2 = *((r4 + r3));
0x00019380 ldr r3, [r2] | r3 = *(r2);
0x00019384 add r3, r3, 1 | r3++;
0x00019388 str r3, [r2] | *(r2) = r3;
| if (sb != 0) {
0x0001938c beq 0x193b0 |
0x00019390 mov r0, sb | r0 = sb;
0x00019394 ldr r4, [r5] | r4 = *(r5);
0x00019398 bl 0x3f158 | strerror ();
0x0001939c ldr r1, [pc, 0xac] | r1 = *(0x1944c);
0x000193a0 add r1, pc, r1 | r1 = pc + r1;
0x000193a4 mov r2, r0 | r2 = r0;
0x000193a8 mov r0, r4 | r0 = r4;
0x000193ac bl 0x34c9c | fprintf (r0, r1, r2)
| }
0x000193b0 ldr r1, [r5] | r1 = *(r5);
0x000193b4 ldr r3, [r1, 0x34] | r3 = *((r1 + 0x34));
0x000193b8 cmp r3, 0 |
| if (r3 == 0) {
0x000193bc beq 0x19418 | goto label_3;
| }
0x000193c0 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x000193c4 ldr r2, [r1, 0x1c] | r2 = *((r1 + 0x1c));
0x000193c8 cmp r3, r2 |
| if (r3 >= r2) {
0x000193cc bhs 0x1940c | goto label_4;
| }
0x000193d0 add r2, r3, 1 | r2 = r3 + 1;
0x000193d4 str r2, [r1, 0x10] | *((r1 + 0x10)) = r2;
0x000193d8 mov r2, 0xa | r2 = 0xa;
0x000193dc strb r2, [r3] | *(r3) = r2;
| label_0:
0x000193e0 cmp r7, 0 |
| if (r7 == 0) {
0x000193e4 beq 0x19424 | goto label_1;
| }
0x000193e8 mov r0, r7 | r0 = r7;
0x000193ec bl 0x4e878 | exit (r0);
| label_2:
0x000193f0 ldr r3, [pc, 0x5c] | r3 = *(0x19450);
0x000193f4 ldr r1, [pc, 0x5c] | r1 = *(0x19454);
0x000193f8 ldr r2, [pc, r3] | r2 = *(0x00019400);
0x000193fc add r1, pc, r1 | r1 = pc + r1;
0x00019400 ldr r0, [r5] | r0 = *(r5);
0x00019404 bl 0x34c9c | fprintf (r0, r1, r2, r3)
0x00019408 b 0x19340 |
| } while (1);
| label_4:
0x0001940c mov r0, 0xa | r0 = 0xa;
0x00019410 bl 0x3d7f0 | fputc_unlocked ();
0x00019414 b 0x193e0 | goto label_0;
| label_3:
0x00019418 mov r0, 0xa | r0 = 0xa;
0x0001941c bl 0x3c374 | fputc ();
0x00019420 b 0x193e0 | goto label_0;
| label_1:
0x00019424 add sp, sp, 0xc |
0x00019428 pop {r4, r5, r6, r7, r8, sb, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/libuClibc-1.0.31.so @ 0x192a0 */
| #include <stdint.h>
|
; (fcn) sym.error_at_line () | void error_at_line (char * format, int32_t arg_2ch, int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x000192a0 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, lr} |
0x000192a4 ldr r4, [pc, 0x180] | r4 = *(0x19428);
0x000192a8 mov r8, r3 | r8 = r3;
0x000192ac ldr r3, [pc, 0x17c] | r3 = *(0x1942c);
0x000192b0 add r4, pc, r4 | r4 = pc + r4;
0x000192b4 ldr r3, [r4, r3] |
0x000192b8 mov r7, r0 | r7 = r0;
0x000192bc ldr r3, [r3] | r3 = *(0x19428);
0x000192c0 mov sb, r1 | sb = r1;
0x000192c4 cmp r3, 0 |
0x000192c8 mov r6, r2 | r6 = r2;
| if (r3 != 0) {
0x000192cc beq 0x19310 |
0x000192d0 ldr r3, [pc, 0x15c] | r3 = *(0x19430);
0x000192d4 add r3, pc, r3 | r3 = pc + r3;
0x000192d8 ldr r2, [r3] | r2 = *(0x19430);
0x000192dc cmp r2, r8 |
| if (r2 == r8) {
0x000192e0 bne 0x19300 |
0x000192e4 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000192e8 cmp r0, r6 |
| if (r0 == r6) {
0x000192ec beq 0x19424 | goto label_1;
| }
0x000192f0 mov r1, r6 | r1 = r6;
0x000192f4 bl 0x3e430 | r0 = strcoll ();
0x000192f8 cmp r0, 0 |
| if (r0 == 0) {
0x000192fc beq 0x19424 | goto label_1;
| }
| }
0x00019300 ldr r3, [pc, 0x130] | r3 = *(0x19434);
0x00019304 add r3, pc, r3 | r3 = pc + r3;
0x00019308 str r6, [r3, 4] | *((r3 + 4)) = r6;
0x0001930c str r8, [r3] | *(r3) = r8;
| }
0x00019310 ldr r3, [pc, 0x124] | r3 = *(0x19438);
0x00019314 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00019318 ldr r0, [r3] | r0 = *(0x19438);
0x0001931c bl 0x3bec8 | fflush ();
0x00019320 ldr r3, [pc, 0x118] |
0x00019324 ldr r2, [pc, 0x118] | r2 = *(0x19440);
0x00019328 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x0001932c ldr r5, [r4, r2] | r5 = *((r4 + r2));
0x00019330 ldr r3, [r3] | r3 = *(0x1943c);
0x00019334 cmp r3, 0 |
| if (r3 == 0) {
0x00019338 beq 0x193f0 | goto label_2;
| }
0x0001933c blx r3 | uint32_t (*r3)() ();
| do {
0x00019340 cmp r6, 0 |
| if (r6 != 0) {
0x00019344 beq 0x19360 |
0x00019348 ldr r1, [pc, 0xf8] | r1 = *(0x19444);
0x0001934c mov r3, r8 | r3 = r8;
0x00019350 mov r2, r6 | r2 = r6;
0x00019354 add r1, pc, r1 | r1 = pc + r1;
0x00019358 ldr r0, [r5] | r0 = *(r5);
0x0001935c bl 0x34c9c | fprintf (r0, r1, r2, r3)
| }
0x00019360 add r2, sp, 0x2c | r2 += arg_2ch;
0x00019364 ldr r1, [sp, 0x28] | r1 = *(format);
0x00019368 ldr r0, [r5] | r0 = *(r5);
0x0001936c str r2, [sp, 4] | var_4h = r2;
0x00019370 bl 0x37bd0 | vfprintf ()
0x00019374 ldr r3, [pc, 0xd0] | r3 = *(0x19448);
0x00019378 cmp sb, 0 |
0x0001937c ldr r2, [r4, r3] | r2 = *((r4 + r3));
0x00019380 ldr r3, [r2] | r3 = *(r2);
0x00019384 add r3, r3, 1 | r3++;
0x00019388 str r3, [r2] | *(r2) = r3;
| if (sb != 0) {
0x0001938c beq 0x193b0 |
0x00019390 mov r0, sb | r0 = sb;
0x00019394 ldr r4, [r5] | r4 = *(r5);
0x00019398 bl 0x3f158 | strerror ();
0x0001939c ldr r1, [pc, 0xac] | r1 = *(0x1944c);
0x000193a0 add r1, pc, r1 | r1 = pc + r1;
0x000193a4 mov r2, r0 | r2 = r0;
0x000193a8 mov r0, r4 | r0 = r4;
0x000193ac bl 0x34c9c | fprintf (r0, r1, r2)
| }
0x000193b0 ldr r1, [r5] | r1 = *(r5);
0x000193b4 ldr r3, [r1, 0x34] | r3 = *((r1 + 0x34));
0x000193b8 cmp r3, 0 |
| if (r3 == 0) {
0x000193bc beq 0x19418 | goto label_3;
| }
0x000193c0 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x000193c4 ldr r2, [r1, 0x1c] | r2 = *((r1 + 0x1c));
0x000193c8 cmp r3, r2 |
| if (r3 >= r2) {
0x000193cc bhs 0x1940c | goto label_4;
| }
0x000193d0 add r2, r3, 1 | r2 = r3 + 1;
0x000193d4 str r2, [r1, 0x10] | *((r1 + 0x10)) = r2;
0x000193d8 mov r2, 0xa | r2 = 0xa;
0x000193dc strb r2, [r3] | *(r3) = r2;
| label_0:
0x000193e0 cmp r7, 0 |
| if (r7 == 0) {
0x000193e4 beq 0x19424 | goto label_1;
| }
0x000193e8 mov r0, r7 | r0 = r7;
0x000193ec bl 0x4e878 | exit (r0);
| label_2:
0x000193f0 ldr r3, [pc, 0x5c] | r3 = *(0x19450);
0x000193f4 ldr r1, [pc, 0x5c] | r1 = *(0x19454);
0x000193f8 ldr r2, [pc, r3] | r2 = *(0x00019400);
0x000193fc add r1, pc, r1 | r1 = pc + r1;
0x00019400 ldr r0, [r5] | r0 = *(r5);
0x00019404 bl 0x34c9c | fprintf (r0, r1, r2, r3)
0x00019408 b 0x19340 |
| } while (1);
| label_4:
0x0001940c mov r0, 0xa | r0 = 0xa;
0x00019410 bl 0x3d7f0 | fputc_unlocked ();
0x00019414 b 0x193e0 | goto label_0;
| label_3:
0x00019418 mov r0, 0xa | r0 = 0xa;
0x0001941c bl 0x3c374 | fputc ();
0x00019420 b 0x193e0 | goto label_0;
| label_1:
0x00019424 add sp, sp, 0xc |
0x00019428 pop {r4, r5, r6, r7, r8, sb, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/libuClibc-1.0.31.so @ 0x41b08 */
| #include <stdint.h>
|
; (fcn) sym.herror () | void herror (int32_t arg1) {
| int32_t var_0h;
| int32_t var_8h;
| r0 = arg1;
0x00041b08 push {r0, r1, r4, lr} |
0x00041b0c ldr r4, [pc, 0x8c] | r4 = *(0x41b9c);
0x00041b10 subs r2, r0, 0 | r2 = r0 - 0;
0x00041b14 add r4, pc, r4 | r4 = pc + r4;
| if (r2 == r0) {
0x00041b18 beq 0x41b78 | goto label_2;
| }
0x00041b1c ldrb r3, [r2] | r3 = *(r2);
0x00041b20 cmp r3, 0 |
| if (r3 == 0) {
0x00041b24 beq 0x41b88 | goto label_3;
| }
0x00041b28 ldr r3, [pc, 0x74] | r3 = *(0x41ba0);
0x00041b2c add r3, pc, r3 | r3 = pc + r3;
| do {
0x00041b30 ldr r1, [pc, 0x70] | r1 = *(0x41ba4);
0x00041b34 bl 0x11934 | fcn_00011934 ();
0x00041b38 ldr r1, [pc, r1] | r1 = *(0x00041b40);
0x00041b3c ldr r1, [r0, r1] | r1 = *((r0 + r1));
0x00041b40 cmp r1, 4 |
| if (r1 > 4) {
0x00041b44 bhi 0x41b94 | goto label_4;
| }
0x00041b48 ldr r0, [pc, 0x5c] | r0 = *(0x41ba8);
0x00041b4c add r0, pc, r0 | r0 = pc + r0;
0x00041b50 ldr r1, [r0, r1, lsl 2] | r1 = *(0x41ba8);
| label_1:
0x00041b54 ldr r0, [pc, 0x54] |
0x00041b58 ldr r0, [r4, r0] | r0 = *((r4 + r0));
0x00041b5c str r1, [sp] | *(sp) = r1;
0x00041b60 ldr r1, [pc, 0x4c] | r1 = *(0x41bb0);
0x00041b64 ldr r0, [r0] | r0 = *(0x41bac);
0x00041b68 add r1, pc, r1 | r1 = pc + r1;
0x00041b6c bl 0x34c9c | fprintf (r0, r1)
0x00041b70 add sp, sp, 8 |
0x00041b74 pop {r4, pc} |
| label_2:
0x00041b78 ldr r3, [pc, 0x38] | r3 = *(0x41bb4);
0x00041b7c add r3, pc, r3 | r3 = pc + r3;
| label_0:
0x00041b80 add r3, r3, 2 | r3 += 2;
0x00041b84 b 0x41b30 |
| } while (1);
| label_3:
0x00041b88 ldr r3, [pc, 0x2c] | r3 = *(0x41bb8);
0x00041b8c add r3, pc, r3 | r3 = pc + r3;
0x00041b90 b 0x41b80 | goto label_0;
| label_4:
0x00041b94 ldr r1, [pc, 0x24] | r1 = "v7";
0x00041b98 add r1, pc, r1 | r1 = pc + r1;
0x00041b9c b 0x41b54 | 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/lib/libuClibc-1.0.31.so @ 0x4abd0 */
| #include <stdint.h>
|
; (fcn) sym.malloc_stats () | void malloc_stats () {
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| char * format;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_44h;
| int32_t var_48h;
0x0004abd0 push {r4, lr} |
0x0004abd4 ldr r4, [pc, 0x68] | r4 = *(0x4ac40);
0x0004abd8 sub sp, sp, 0x48 |
0x0004abdc add r0, sp, 0x20 | r0 += format;
0x0004abe0 bl 0x4aa48 | mallinfo ();
0x0004abe4 ldr ip, [sp, 0x44] | ip = var_44h;
0x0004abe8 ldr r0, [pc, 0x58] | r0 = *(0x4ac44);
0x0004abec add r4, pc, r4 | r4 = pc + r4;
0x0004abf0 ldr r0, [r4, r0] |
0x0004abf4 str ip, [sp, 0x18] | var_18h = ip;
0x0004abf8 ldr ip, [sp, 0x40] | ip = var_40h;
0x0004abfc ldr r1, [sp, 0x20] | r1 = format;
0x0004ac00 str ip, [sp, 0x14] | var_14h = ip;
0x0004ac04 ldr ip, [sp, 0x34] | ip = var_34h;
0x0004ac08 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0004ac0c ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0004ac10 str ip, [sp, 0x10] | var_10h = ip;
0x0004ac14 ldr ip, [sp, 0x2c] | ip = var_2ch;
0x0004ac18 str r3, [sp, 0xc] | var_ch = r3;
0x0004ac1c str r2, [sp, 8] | var_8h = r2;
0x0004ac20 stm sp, {r1, ip} | *(sp) = r1;
| *((sp + 4)) = ip;
0x0004ac24 ldr r0, [r0] | r0 = *(0x4ac40);
0x0004ac28 add r3, r2, r3 | r3 = r2 + r3;
0x0004ac2c add r2, r1, r2 | r2 = r1 + r2;
0x0004ac30 ldr r1, [pc, 0x14] | r1 = *(0x4ac48);
0x0004ac34 add r1, pc, r1 | r1 = pc + r1;
0x0004ac38 bl 0x34c9c | fprintf (r0, r1, r2, r3, r4)
0x0004ac3c add sp, sp, 0x48 |
0x0004ac40 pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/libuClibc-1.0.31.so @ 0x344b0 */
| #include <stdint.h>
|
; (fcn) sym.perror () | void perror (const char * s) {
| r0 = s;
0x000344b0 ldr r1, [pc, 0x54] | r1 = *(0x34508);
0x000344b4 subs r2, r0, 0 | r2 = r0 - 0;
0x000344b8 add r1, pc, r1 | r1 = pc + r1;
| if (r2 == r0) {
0x000344bc beq 0x344ec | goto label_1;
| }
0x000344c0 ldrb r3, [r2] | r3 = *(r2);
0x000344c4 cmp r3, 0 |
| if (r3 == 0) {
0x000344c8 beq 0x34500 | goto label_2;
| }
0x000344cc ldr r3, [pc, 0x3c] | r3 = *(0x3450c);
0x000344d0 add r3, pc, r3 | r3 = pc + r3;
| do {
0x000344d4 ldr r0, [pc, 0x38] |
0x000344d8 ldr r0, [r1, r0] | r0 = *((r1 + r0));
0x000344dc ldr r1, [pc, 0x34] | r1 = *(0x34514);
0x000344e0 ldr r0, [r0] | r0 = *(0x34510);
0x000344e4 add r1, pc, r1 | r1 = pc + r1;
0x000344e8 b 0x34c9c | void (*0x34c9c)() ();
| label_1:
0x000344ec ldr r3, [pc, 0x28] | r3 = *(0x34518);
0x000344f0 add r3, pc, r3 | r3 = pc + r3;
| label_0:
0x000344f4 add r3, r3, 2 | r3 += 2;
0x000344f8 mov r2, r3 | r2 = r3;
0x000344fc b 0x344d4 |
| } while (1);
| label_2:
0x00034500 ldr r3, [pc, 0x18] | r3 = *(0x3451c);
0x00034504 add r3, pc, r3 | r3 = pc + r3;
0x00034508 b 0x344f4 | goto label_0;
| }
; 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/lib/libuClibc-1.0.31.so @ 0x3f56c */
| #include <stdint.h>
|
; (fcn) sym.psignal () | void psignal (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| r0 = arg1;
| r1 = arg2;
0x0003f56c ldr r3, [pc, 0x74] | r3 = *(0x3f5e4);
0x0003f570 push {r0, r1, r4, r5, r6, lr} |
0x0003f574 subs r5, r1, 0 | r5 = r1 - 0;
0x0003f578 add r3, pc, r3 | r3 = pc + r3;
| if (r5 == r1) {
0x0003f57c beq 0x3f5c8 | goto label_1;
| }
0x0003f580 ldrb r2, [r5] | r2 = *(r5);
0x0003f584 cmp r2, 0 |
| if (r2 == 0) {
0x0003f588 beq 0x3f5dc | goto label_2;
| }
0x0003f58c ldr r4, [pc, 0x58] | r4 = *(0x3f5e8);
0x0003f590 add r4, pc, r4 | r4 = pc + r4;
| do {
0x0003f594 ldr r2, [pc, 0x54] | r2 = *(0x3f5ec);
0x0003f598 ldr r3, [r3, r2] | r3 = *((r3 + r2));
0x0003f59c ldr r6, [r3] | r6 = *(r3);
0x0003f5a0 bl 0x3f348 | strsignal ();
0x0003f5a4 ldr r1, [pc, 0x48] | r1 = *(0x3f5f0);
0x0003f5a8 mov r3, r4 | r3 = r4;
0x0003f5ac mov r2, r5 | r2 = r5;
0x0003f5b0 add r1, pc, r1 | r1 = pc + r1;
0x0003f5b4 str r0, [sp] | *(sp) = r0;
0x0003f5b8 mov r0, r6 | r0 = r6;
0x0003f5bc bl 0x34c9c | fprintf (r0, r1, r2, r3)
0x0003f5c0 add sp, sp, 8 |
0x0003f5c4 pop {r4, r5, r6, pc} |
| label_1:
0x0003f5c8 ldr r4, [pc, 0x28] | r4 = *(0x3f5f4);
0x0003f5cc add r4, pc, r4 | r4 = pc + r4;
| label_0:
0x0003f5d0 add r4, r4, 2 | r4 += 2;
0x0003f5d4 mov r5, r4 | r5 = r4;
0x0003f5d8 b 0x3f594 |
| } while (1);
| label_2:
0x0003f5dc ldr r4, [pc, 0x18] | r4 = *(0x3f5f8);
0x0003f5e0 add r4, pc, r4 | r4 = pc + r4;
0x0003f5e4 b 0x3f5d0 | goto label_0;
| }
; 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/lib/libuClibc-1.0.31.so @ 0x31f80 */
| #include <stdint.h>
|
; (fcn) sym.putgrent () | void putgrent (uint32_t arg1, uint32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00031f80 cmp r1, 0 |
0x00031f84 cmpne r0, 0 | __asm ("cmpne r0, 0");
0x00031f88 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, lr} |
| if (r1 == 0) {
0x00031f8c bne 0x31fb4 |
0x00031f90 ldr r3, [pc, 0x194] | r3 = *(0x32128);
0x00031f94 bl 0x11934 | fcn_00011934 ();
0x00031f98 mov r2, 0x16 | r2 = 0x16;
0x00031f9c ldr r3, [pc, r3] | r3 = *(0x00031fa4);
0x00031fa0 mvn r6, 0 | r6 = ~0;
0x00031fa4 str r2, [r0, r3] | *((r0 + r3)) = r2;
| label_0:
0x00031fa8 mov r0, r6 | r0 = r6;
0x00031fac add sp, sp, 0xc |
0x00031fb0 pop {r4, r5, r6, r7, r8, sb, pc} |
| }
0x00031fb4 ldr r7, [r1, 0x34] | r7 = *((r1 + 0x34));
0x00031fb8 mov r5, r1 | r5 = r1;
0x00031fbc cmp r7, 0 |
0x00031fc0 mov r6, r0 | r6 = r0;
| if (r7 != 0) {
0x00031fc4 bne 0x32030 | goto label_4;
| }
0x00031fc8 ldr r3, [r1, 0x40] | r3 = *((r1 + 0x40));
0x00031fcc bl 0x11934 | r0 = fcn_00011934 ();
0x00031fd0 sub r8, r0, 0x490 | r8 = r0 - 0x490;
0x00031fd4 cmp r3, r8 |
| if (r3 == r8) {
0x00031fd8 beq 0x32024 | goto label_5;
| }
0x00031fdc add sb, r1, 0x38 | sb = r1 + 0x38;
0x00031fe0 mov r2, sb | r2 = sb;
0x00031fe4 mov r1, 1 | r1 = 1;
0x00031fe8 mov r4, r7 | r4 = r7;
| do {
0x00031fec ldr r3, [r2] | r3 = *(r2);
0x00031ff0 cmp r3, r4 |
| if (r3 != r4) {
0x00031ff4 bne 0x32010 | goto label_6;
| }
0x00031ff8 mov r0, r4 | r0 = r4;
0x00031ffc mvn r3, 0xf000 | r3 = ~0xf000;
0x00032000 mov lr, pc | lr = pc;
0x00032004 sub pc, r3, 0x3f | pc = r3 - 0x3f;
0x00032008 blo 0x31fec |
| } while (r3 <= r4);
0x0003200c mov r3, r4 | r3 = r4;
| label_6:
0x00032010 cmp r3, 0 |
| if (r3 != 0) {
0x00032014 beq 0x32020 |
0x00032018 mov r0, sb | r0 = sb;
0x0003201c bl 0x657d8 | fcn_000657d8 (r0);
| }
0x00032020 str r8, [r5, 0x40] | *((r5 + 0x40)) = r8;
| label_5:
0x00032024 ldr r3, [r5, 0x3c] | r3 = *((r5 + 0x3c));
0x00032028 add r3, r3, 1 | r3++;
0x0003202c str r3, [r5, 0x3c] | *((r5 + 0x3c)) = r3;
| label_4:
0x00032030 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x00032034 ldr r1, [pc, 0xf4] | r1 = *(0x3212c);
0x00032038 str r3, [sp] | *(sp) = r3;
0x0003203c add r1, pc, r1 | r1 = pc + r1;
0x00032040 ldm r6, {r2, r3} | r2 = *(r6);
| r3 = *((r6 + 4));
0x00032044 mov r0, r5 | r0 = r5;
0x00032048 bl 0x34c9c | r0 = fprintf (r0, r1, r2, r3, r4, r5, r6)
0x0003204c cmp r0, 0 |
| if (r0 < 0) {
0x00032050 blt 0x32124 | goto label_7;
| }
0x00032054 ldr r1, [pc, 0xd8] | r1 = *(0x32130);
0x00032058 ldr r4, [r6, 0xc] | r4 = *((r6 + 0xc));
0x0003205c ldr r6, [pc, 0xd4] | r6 = *(0x32134);
0x00032060 add r1, pc, r1 | r1 = pc + r1;
0x00032064 sub r4, r4, 4 | r4 -= 4;
0x00032068 add r1, r1, 1 | r1++;
0x0003206c add r6, pc, r6 | r6 = pc + r6;
| label_2:
0x00032070 ldr r2, [r4, 4]! | r2 = *((r4 += 4));
0x00032074 cmp r2, 0 |
| if (r2 != 0) {
0x00032078 bne 0x32110 | goto label_8;
| }
0x0003207c mov r1, r5 | r1 = r5;
0x00032080 mov r0, 0xa | r0 = 0xa;
0x00032084 bl 0x3d7f0 | r0 = fputc_unlocked ();
0x00032088 asr r6, r0, 0x1f | r6 = r0 >> 0x1f;
| label_3:
0x0003208c cmp r7, 0 |
| if (r7 != 0) {
0x00032090 bne 0x31fa8 | goto label_0;
| }
0x00032094 ldr r3, [r5, 0x3c] | r3 = *((r5 + 0x3c));
0x00032098 sub r3, r3, 1 | r3--;
0x0003209c cmp r3, 0 |
0x000320a0 str r3, [r5, 0x3c] | *((r5 + 0x3c)) = r3;
| if (r3 != 0) {
0x000320a4 bne 0x31fa8 | goto label_0;
| }
0x000320a8 add r8, r5, 0x38 | r8 = r5 + 0x38;
0x000320ac str r7, [r5, 0x40] | *((r5 + 0x40)) = r7;
| label_1:
0x000320b0 ldr r7, [r5, 0x38] | r7 = *((r5 + 0x38));
0x000320b4 mov r1, 0 | r1 = 0;
0x000320b8 mov r2, r8 | r2 = r8;
0x000320bc mov r4, r7 | r4 = r7;
| do {
0x000320c0 ldr r3, [r2] | r3 = *(r2);
0x000320c4 cmp r3, r4 |
| if (r3 != r4) {
0x000320c8 bne 0x320e4 | goto label_9;
| }
0x000320cc mov r0, r4 | r0 = r4;
0x000320d0 mvn r3, 0xf000 | r3 = ~0xf000;
0x000320d4 mov lr, pc | lr = pc;
0x000320d8 sub pc, r3, 0x3f | pc = r3 - 0x3f;
0x000320dc blo 0x320c0 |
| } while (r3 <= r4);
0x000320e0 mov r3, r4 | r3 = r4;
| label_9:
0x000320e4 cmp r7, r3 |
| if (r7 != r3) {
0x000320e8 bne 0x320b0 | goto label_1;
| }
0x000320ec cmp r7, 1 |
| if (r7 <= 1) {
0x000320f0 ble 0x31fa8 | goto label_0;
| }
0x000320f4 mov r0, r8 | r0 = r8;
0x000320f8 mov r1, 0x81 | r1 = 0x81;
0x000320fc mov r2, 1 | r2 = 1;
0x00032100 mov r3, 0 | r3 = 0;
0x00032104 mov r7, 0xf0 | r7 = 0xf0;
0x00032108 svc 0 | __asm ("svc 0");
0x0003210c b 0x31fa8 | goto label_0;
| label_8:
0x00032110 mov r0, r5 | r0 = r5;
0x00032114 bl 0x34c9c | fprintf (r0, r1)
0x00032118 mov r1, r6 | r1 = r6;
0x0003211c cmp r0, 0 |
| if (r0 >= 0) {
0x00032120 bge 0x32070 | goto label_2;
| }
| label_7:
0x00032124 mvn r6, 0 | r6 = ~0;
0x00032128 b 0x3208c | 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/lib/libuClibc-1.0.31.so @ 0x32328 */
| #include <stdint.h>
|
; (fcn) sym.putpwent () | void putpwent (uint32_t arg1, uint32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x00032328 cmp r1, 0 |
0x0003232c cmpne r0, 0 | __asm ("cmpne r0, 0");
0x00032330 push {r0, r1, r2, r3, r4, r5, r6, lr} |
| if (r1 != 0) {
0x00032334 bne 0x32358 | goto label_0;
| }
0x00032338 ldr r3, [pc, 0x60] | r3 = *(0x3239c);
0x0003233c bl 0x11934 | fcn_00011934 ();
0x00032340 mov r2, 0x16 | r2 = 0x16;
0x00032344 ldr r3, [pc, r3] | r3 = *(0x0003234c);
0x00032348 str r2, [r0, r3] | *((r0 + r3)) = r2;
0x0003234c mvn r0, 0 | r0 = ~0;
| do {
0x00032350 add sp, sp, 0x1c |
0x00032354 pop {pc} |
| label_0:
0x00032358 mov r2, r0 | r2 = r0;
0x0003235c ldr r3, [r2, 0x18] | r3 = *((r2 + 0x18));
0x00032360 mov r0, r1 | r0 = r1;
0x00032364 str r3, [sp, 0x10] | var_10h = r3;
0x00032368 ldr r3, [r2, 0x14] | r3 = *((r2 + 0x14));
0x0003236c ldr r1, [pc, 0x30] | r1 = "_m";
0x00032370 str r3, [sp, 0xc] | var_ch = r3;
0x00032374 ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00032378 add r1, pc, r1 | r1 = pc + r1;
0x0003237c str r3, [sp, 8] | var_8h = r3;
0x00032380 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x00032384 str r3, [sp, 4] | var_4h = r3;
0x00032388 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x0003238c str r3, [sp] | *(sp) = r3;
0x00032390 ldm r2, {r2, r3} | r2 = *(r2);
| r3 = *((r2 + 4));
0x00032394 bl 0x34c9c | r0 = fprintf (r0, "_m", r2, r3)
0x00032398 asr r0, r0, 0x1f | r0 >>= 0x1f;
0x0003239c b 0x32350 |
| } while (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/lib/libuClibc-1.0.31.so @ 0x32fcc */
| #include <stdint.h>
|
; (fcn) sym.putspent () | void putspent (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00032fcc push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00032fd0 ldr r7, [r1, 0x34] | r7 = *((r1 + 0x34));
0x00032fd4 mov r6, r0 | r6 = r0;
0x00032fd8 cmp r7, 0 |
0x00032fdc mov r5, r1 | r5 = r1;
| if (r7 != 0) {
0x00032fe0 bne 0x3304c | goto label_4;
| }
0x00032fe4 ldr r3, [r1, 0x40] | r3 = *((r1 + 0x40));
0x00032fe8 bl 0x11934 | r0 = fcn_00011934 ();
0x00032fec sub r8, r0, 0x490 | r8 = r0 - 0x490;
0x00032ff0 cmp r3, r8 |
| if (r3 == r8) {
0x00032ff4 beq 0x33040 | goto label_5;
| }
0x00032ff8 add sb, r1, 0x38 | sb = r1 + 0x38;
0x00032ffc mov r2, sb | r2 = sb;
0x00033000 mov r1, 1 | r1 = 1;
0x00033004 mov r4, r7 | r4 = r7;
| do {
0x00033008 ldr r3, [r2] | r3 = *(r2);
0x0003300c cmp r3, r4 |
| if (r3 != r4) {
0x00033010 bne 0x3302c | goto label_6;
| }
0x00033014 mov r0, r4 | r0 = r4;
0x00033018 mvn r3, 0xf000 | r3 = ~0xf000;
0x0003301c mov lr, pc | lr = pc;
0x00033020 sub pc, r3, 0x3f | pc = r3 - 0x3f;
0x00033024 blo 0x33008 |
| } while (r3 <= r4);
0x00033028 mov r3, r4 | r3 = r4;
| label_6:
0x0003302c cmp r3, 0 |
| if (r3 != 0) {
0x00033030 beq 0x3303c |
0x00033034 mov r0, sb | r0 = sb;
0x00033038 bl 0x657d8 | fcn_000657d8 (r0);
| }
0x0003303c str r8, [r5, 0x40] | *((r5 + 0x40)) = r8;
| label_5:
0x00033040 ldr r3, [r5, 0x3c] | r3 = *((r5 + 0x3c));
0x00033044 add r3, r3, 1 | r3++;
0x00033048 str r3, [r5, 0x3c] | *((r5 + 0x3c)) = r3;
| label_4:
0x0003304c ldm r6, {r2, r3} | r2 = *(r6);
| r3 = *((r6 + 4));
0x00033050 cmp r3, 0 |
| if (r3 != 0) {
0x00033054 ldreq r3, [pc, 0x138] | r3 = *((pc + 0x138));
| }
| if (r3 != 0) {
0x00033058 addeq r3, pc, r3 | r3 = pc + r3;
| }
0x0003305c ldr r1, [pc, 0x134] | r1 = *(0x33194);
0x00033060 mov r0, r5 | r0 = r5;
0x00033064 add r1, pc, r1 | r1 = pc + r1;
0x00033068 bl 0x34c9c | r0 = fprintf (r0, r1, r2, r3, r4, r5, r6)
0x0003306c cmp r0, 0 |
| if (r0 >= 0) {
0x00033070 bge 0x33100 | goto label_7;
| }
| label_1:
0x00033074 mvn r6, 0 | r6 = ~0;
| label_3:
0x00033078 cmp r7, 0 |
| if (r7 != 0) {
0x0003307c bne 0x330f8 | goto label_8;
| }
0x00033080 ldr r3, [r5, 0x3c] | r3 = *((r5 + 0x3c));
0x00033084 sub r3, r3, 1 | r3--;
0x00033088 cmp r3, 0 |
0x0003308c str r3, [r5, 0x3c] | *((r5 + 0x3c)) = r3;
| if (r3 != 0) {
0x00033090 bne 0x330f8 | goto label_8;
| }
0x00033094 add r8, r5, 0x38 | r8 = r5 + 0x38;
0x00033098 str r7, [r5, 0x40] | *((r5 + 0x40)) = r7;
| label_0:
0x0003309c ldr r7, [r5, 0x38] | r7 = *((r5 + 0x38));
0x000330a0 mov r1, 0 | r1 = 0;
0x000330a4 mov r2, r8 | r2 = r8;
0x000330a8 mov r4, r7 | r4 = r7;
| do {
0x000330ac ldr r3, [r2] | r3 = *(r2);
0x000330b0 cmp r3, r4 |
| if (r3 != r4) {
0x000330b4 bne 0x330d0 | goto label_9;
| }
0x000330b8 mov r0, r4 | r0 = r4;
0x000330bc mvn r3, 0xf000 | r3 = ~0xf000;
0x000330c0 mov lr, pc | lr = pc;
0x000330c4 sub pc, r3, 0x3f | pc = r3 - 0x3f;
0x000330c8 blo 0x330ac |
| } while (r3 <= r4);
0x000330cc mov r3, r4 | r3 = r4;
| label_9:
0x000330d0 cmp r7, r3 |
| if (r7 != r3) {
0x000330d4 bne 0x3309c | goto label_0;
| }
0x000330d8 cmp r7, 1 |
| if (r7 > 1) {
0x000330dc ble 0x330f8 |
0x000330e0 mov r0, r8 | r0 = r8;
0x000330e4 mov r1, 0x81 | r1 = 0x81;
0x000330e8 mov r2, 1 | r2 = 1;
0x000330ec mov r3, 0 | r3 = 0;
0x000330f0 mov r7, 0xf0 | r7 = 0xf0;
0x000330f4 svc 0 | __asm ("svc 0");
| }
| label_8:
0x000330f8 mov r0, r6 | r0 = r6;
0x000330fc pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_7:
0x00033100 ldr r8, [pc, 0x94] | r8 = *(0x33198);
0x00033104 ldr sb, [pc, 0x94] | sb = *(0x3319c);
0x00033108 add r8, pc, r8 | r8 = pc + r8;
0x0003310c mov r4, 0 | r4 = 0;
0x00033110 add sb, pc, sb | sb = pc + sb;
0x00033114 add r8, r8, 3 | r8 += 3;
| label_2:
0x00033118 ldrb r3, [r4, sb] | r3 = *((r4 + sb));
0x0003311c ldr r2, [r6, r3] | r2 = *((r6 + r3));
0x00033120 cmn r2, 1 |
| if (r2 != 1) {
0x00033124 moveq r1, r8 | r1 = r8;
| }
| if (r2 == 1) {
0x00033128 ldrne r1, [pc, 0x74] | r1 = *((pc + 0x74));
| }
| if (r2 == 1) {
0x0003312c addne r1, pc, r1 | r1 = pc + r1;
| }
0x00033130 mov r0, r5 | r0 = r5;
0x00033134 bl 0x34c9c | r0 = fprintf (r0, r1, r2, r3, r4)
0x00033138 cmp r0, 0 |
| if (r0 < 0) {
0x0003313c blt 0x33074 | goto label_1;
| }
0x00033140 add r4, r4, 1 | r4++;
0x00033144 cmp r4, 6 |
| if (r4 != 6) {
0x00033148 bne 0x33118 | goto label_2;
| }
0x0003314c ldr r2, [r6, 0x20] | r2 = *((r6 + 0x20));
0x00033150 cmn r2, 1 |
0x00033154 bne 0x33178 |
| while (r0 >= 0) {
0x00033158 mov r1, r5 | r1 = r5;
0x0003315c mov r0, 0xa | r0 = 0xa;
0x00033160 bl 0x3d7f0 | r0 = fputc_unlocked ();
0x00033164 cmp r0, 0 |
| if (r0 <= 0) {
0x00033168 movgt r0, 0 | r0 = 0;
| }
| if (r0 > 0) {
0x0003316c movle r0, 1 | r0 = 1;
| }
0x00033170 rsb r6, r0, 0 | r6 = r0 - ;
0x00033174 b 0x33078 | goto label_3;
0x00033178 ldr r1, [pc, 0x28] | r1 = *(0x331a4);
0x0003317c mov r0, r5 | r0 = r5;
0x00033180 add r1, pc, r1 | r1 = pc + r1;
0x00033184 bl 0x34c9c | r0 = fprintf (r0, r1)
0x00033188 cmp r0, 0 |
0x0003318c bge 0x33158 |
| }
0x00033190 b 0x33074 | 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/lib/libuClibc-1.0.31.so @ 0x1909c */
| #include <stdint.h>
|
; (fcn) sym.vwarn () | void vwarn (int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_8h;
| r0 = arg1;
| r1 = arg2;
| label_2:
0x00018ecc push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00018ed0 ldr r4, [pc, 0x1a8] | r4 = *(0x1907c);
0x00018ed4 sub sp, sp, 0x4c |
0x00018ed8 cmp r2, 0 |
0x00018edc add r4, pc, r4 | r4 = pc + r4;
0x00018ee0 mov sl, r0 | sl = r0;
0x00018ee4 str r1, [sp, 4] | var_4h = r1;
0x00018ee8 add sb, sp, 8 | sb += var_8h;
| if (r2 == 0) {
0x00018eec beq 0x19070 | goto label_3;
| }
0x00018ef0 ldr r3, [pc, 0x18c] | r3 = *(0x19080);
0x00018ef4 bl 0x11934 | fcn_00011934 ();
0x00018ef8 mov r2, 0x40 | r2 = 0x40;
0x00018efc ldr r3, [pc, r3] | r3 = *(0x00018f04);
0x00018f00 mov r1, sb | r1 = sb;
0x00018f04 ldr r0, [r0, r3] | r0 = *((r0 + r3));
0x00018f08 bl 0x3f464 | xpg_strerror_r ();
0x00018f0c ldr r5, [pc, 0x174] | r5 = *(0x19084);
0x00018f10 add r5, pc, r5 | r5 = pc + r5;
0x00018f14 add r5, r5, 7 | r5 += 7;
| label_1:
0x00018f18 ldr r3, [pc, 0x16c] | r3 = *(0x19088);
0x00018f1c ldr r6, [r4, r3] | r6 = *((r4 + r3));
0x00018f20 ldr r7, [r6] | r7 = *(r6);
0x00018f24 ldr r8, [r7, 0x34] | r8 = *((r7 + 0x34));
0x00018f28 cmp r8, 0 |
| if (r8 != 0) {
0x00018f2c bne 0x18fa0 | goto label_4;
| }
0x00018f30 ldr r3, [r7, 0x40] | r3 = *((r7 + 0x40));
0x00018f34 bl 0x11934 | r0 = fcn_00011934 ();
0x00018f38 sub fp, r0, 0x490 |
0x00018f3c cmp r3, fp |
| if (r3 == fp) {
0x00018f40 beq 0x18f90 | goto label_5;
| }
0x00018f44 add r7, r7, 0x38 | r7 += 0x38;
0x00018f48 mov r1, 1 | r1 = 1;
0x00018f4c mov r2, r7 | r2 = r7;
0x00018f50 mov r4, r8 | r4 = r8;
| do {
0x00018f54 ldr r3, [r2] | r3 = *(r2);
0x00018f58 cmp r3, r4 |
| if (r3 != r4) {
0x00018f5c bne 0x18f78 | goto label_6;
| }
0x00018f60 mov r0, r4 | r0 = r4;
0x00018f64 mvn r3, 0xf000 | r3 = ~0xf000;
0x00018f68 mov lr, pc | lr = pc;
0x00018f6c sub pc, r3, 0x3f | pc = r3 - 0x3f;
0x00018f70 blo 0x18f54 |
| } while (r3 <= r4);
0x00018f74 mov r3, r4 | r3 = r4;
| label_6:
0x00018f78 cmp r3, 0 |
| if (r3 != 0) {
0x00018f7c beq 0x18f88 |
0x00018f80 mov r0, r7 | r0 = r7;
0x00018f84 bl 0x657d8 | fcn_000657d8 (r0);
| }
0x00018f88 ldr r3, [r6] | r3 = *(r6);
0x00018f8c str fp, [r3, 0x40] | *((r3 + 0x40)) = fp;
| label_5:
0x00018f90 ldr r2, [r6] | r2 = *(r6);
0x00018f94 ldr r3, [r2, 0x3c] | r3 = *((r2 + 0x3c));
0x00018f98 add r3, r3, 1 | r3++;
0x00018f9c str r3, [r2, 0x3c] | *((r2 + 0x3c)) = r3;
| label_4:
0x00018fa0 ldr r3, [pc, 0xe8] | r3 = *(0x1908c);
0x00018fa4 ldr r1, [pc, 0xe8] | r1 = *(0x19090);
0x00018fa8 ldr r2, [pc, r3] | r2 = *(0x00018fb0);
0x00018fac add r1, pc, r1 | r1 = pc + r1;
0x00018fb0 ldr r0, [r6] | r0 = *(r6);
0x00018fb4 bl 0x34c9c | fprintf (r0, r1, r2, r3)
0x00018fb8 cmp sl, 0 |
| if (sl != 0) {
0x00018fbc beq 0x18fd4 |
0x00018fc0 ldr r2, [sp, 4] | r2 = var_4h;
0x00018fc4 mov r1, sl | r1 = sl;
0x00018fc8 ldr r0, [r6] | r0 = *(r6);
0x00018fcc bl 0x37bd0 | vfprintf ()
0x00018fd0 sub r5, r5, 2 | r5 -= 2;
| }
0x00018fd4 mov r2, sb | r2 = sb;
0x00018fd8 mov r1, r5 | r1 = r5;
0x00018fdc ldr r0, [r6] | r0 = *(r6);
0x00018fe0 bl 0x34c9c | fprintf (r0, r1, r2, r3, r4, r5)
0x00018fe4 cmp r8, 0 |
| if (r8 != 0) {
0x00018fe8 bne 0x19068 | goto label_7;
| }
0x00018fec ldr r5, [r6] | r5 = *(r6);
0x00018ff0 ldr r3, [r5, 0x3c] | r3 = *((r5 + 0x3c));
0x00018ff4 sub r3, r3, 1 | r3--;
0x00018ff8 cmp r3, 0 |
0x00018ffc str r3, [r5, 0x3c] | *((r5 + 0x3c)) = r3;
| if (r3 != 0) {
0x00019000 bne 0x19068 | goto label_7;
| }
0x00019004 add r7, r5, 0x38 | r7 = r5 + 0x38;
0x00019008 str r8, [r5, 0x40] | *((r5 + 0x40)) = r8;
| label_0:
0x0001900c ldr r6, [r5, 0x38] | r6 = *((r5 + 0x38));
0x00019010 mov r1, 0 | r1 = 0;
0x00019014 mov r2, r7 | r2 = r7;
0x00019018 mov r4, r6 | r4 = r6;
| do {
0x0001901c ldr r3, [r2] | r3 = *(r2);
0x00019020 cmp r3, r4 |
| if (r3 != r4) {
0x00019024 bne 0x19040 | goto label_8;
| }
0x00019028 mov r0, r4 | r0 = r4;
0x0001902c mvn r3, 0xf000 | r3 = ~0xf000;
0x00019030 mov lr, pc | lr = pc;
0x00019034 sub pc, r3, 0x3f | pc = r3 - 0x3f;
0x00019038 blo 0x1901c |
| } while (r3 <= r4);
0x0001903c mov r3, r4 | r3 = r4;
| label_8:
0x00019040 cmp r6, r3 |
| if (r6 != r3) {
0x00019044 bne 0x1900c | goto label_0;
| }
0x00019048 cmp r6, 1 |
| if (r6 > 1) {
0x0001904c ble 0x19068 |
0x00019050 mov r0, r7 | r0 = r7;
0x00019054 mov r1, 0x81 | r1 = 0x81;
0x00019058 mov r2, 1 | r2 = 1;
0x0001905c mov r3, 0 | r3 = 0;
0x00019060 mov r7, 0xf0 | r7 = 0xf0;
0x00019064 svc 0 | __asm ("svc 0");
| }
| label_7:
0x00019068 add sp, sp, 0x4c |
0x0001906c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x00019070 ldr r5, [pc, 0x20] |
0x00019074 add r5, pc, r5 | r5 = pc + r5;
0x00019078 add r5, r5, 0xb | r5 = 0x1909f;
0x0001907c b 0x18f18 | goto label_1;
0x0001909c mov r2, 1 | r2 = 1;
0x000190a0 b 0x18ecc | goto label_2;
| }
; 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/lib/libuClibc-1.0.31.so @ 0x190cc */
| #include <stdint.h>
|
; (fcn) sym.vwarnx () | void vwarnx (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x000190cc mov r2, 0 | r2 = 0;
0x000190d0 b 0x18ecc | return void (*0x18ecc)() ();
| }
[*] Function fprintf used 37 times libuClibc-1.0.31.so