[*] Binary protection state of libevent_core-2.1.so.6.0.2
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function strcat tear down of libevent_core-2.1.so.6.0.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/usr/lib/libevent_core-2.1.so.6.0.2 @ 0x7c58 */
| #include <stdint.h>
|
; (fcn) entry.fini0 () | void entry_fini0 () {
0x00007c58 ldr r3, [pc, 0x68] | r3 = *(0x7cc4);
0x00007c5c push {r4, lr} |
0x00007c60 ldr r4, [pc, 0x64] | r4 = *(0x7cc8);
0x00007c64 add r3, pc, r3 | r3 = pc + r3;
0x00007c68 ldrb r3, [r3] | r3 = *(r3);
0x00007c6c add r4, pc, r4 | r4 = pc + r4;
0x00007c70 cmp r3, 0 |
0x00007c74 popne {r4, pc} |
0x00007c78 ldr r3, [pc, 0x50] | r3 = *(0x7ccc);
0x00007c7c ldr r3, [r4, r3] | r3 = *(0x7cc8);
0x00007c80 cmp r3, 0 |
| if (r3 != 0) {
0x00007c84 beq 0x7c94 |
0x00007c88 ldr r3, [pc, 0x44] | r3 = *(0x7cd0);
0x00007c8c ldr r0, [pc, r3] | r0 = *(0x00007c94);
0x00007c90 bl 0x7188 | cxa_finalize ();
| }
0x00007c94 bl 0x7b9c | entry0 ();
0x00007c98 ldr r3, [pc, 0x38] | r3 = *(0x7cd4);
0x00007c9c ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00007ca0 cmp r3, 0 |
| if (r3 != 0) {
0x00007ca4 beq 0x7cb4 |
0x00007ca8 ldr r0, [pc, 0x2c] | r0 = *(0x7cd8);
0x00007cac add r0, pc, r0 | r0 = pc + r0;
0x00007cb0 bl 0x7b90 | loc_imp_deregister_frame_info ();
| }
0x00007cb4 ldr r3, [pc, 0x24] | r3 = *(0x7cdc);
0x00007cb8 mov r2, 1 | r2 = 1;
0x00007cbc add r3, pc, r3 | r3 = pc + r3;
0x00007cc0 strb r2, [r3] | *(r3) = r2;
0x00007cc4 pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libevent_core-2.1.so.6.0.2 @ 0x80f0 */
| #include <stdint.h>
|
; (fcn) fcn.000080f0 () | uint32_t fcn_000080f0 (int32_t arg1) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_8h_2;
| int32_t var_10h;
| int32_t var_10h_2;
| int32_t var_18h;
| int32_t var_18h_2;
| int32_t var_24h;
| r0 = arg1;
0x000080f0 ldr r3, [r0, 0x18] | r3 = *((r0 + 0x18));
0x000080f4 cmp r3, 0 |
| if (r3 != 0) {
0x000080f8 bne 0x8318 | goto label_4;
| }
0x000080fc push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00008100 ldr r5, [r0, 0x10] | r5 = *((r0 + 0x10));
0x00008104 ldrd r2, r3, [r0, 0x30] | __asm ("ldrd r2, r3, [r0, 0x30]");
0x00008108 sub sp, sp, 0x24 |
0x0000810c strd r2, r3, [sp, 0x10] | __asm ("strd r2, r3, [var_10h]");
0x00008110 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x00008114 mov r4, r0 | r4 = r0;
0x00008118 tst r3, 2 |
0x0000811c ldrd r6, r7, [r0, 0x20] | __asm ("ldrd r6, r7, [r0, 0x20]");
| if ((r3 & 2) != 0) {
0x00008120 bne 0x81bc | goto label_5;
| }
0x00008124 orrs r3, r6, r7 | r3 = r6 | r7;
| if (r3 == r6) {
0x00008128 beq 0x8204 | goto label_6;
| }
0x0000812c mov r0, 0x1e | r0 = 0x1e;
0x00008130 bl 0x6ea0 | r0 = sysconf ();
0x00008134 cmn r0, 1 |
0x00008138 bne 0x8144 |
| while (sb == r0) {
| label_0:
0x0000813c mvn r0, 0 | r0 = ~0;
0x00008140 b 0x823c | goto label_7;
0x00008144 mov r2, r0 | r2 = r0;
0x00008148 asr r3, r0, 0x1f | r3 = r0 >> 0x1f;
0x0000814c mov r1, r7 | r1 = r7;
0x00008150 mov r0, r6 | r0 = r6;
0x00008154 bl 0x24a40 | fcn_00024a40 (r0);
0x00008158 mov r8, r2 | r8 = r2;
0x0000815c mov sb, r3 | sb = r3;
0x00008160 subs r2, r6, r8 | r2 = r6 - r8;
0x00008164 sbc r3, r7, sb | __asm ("sbc r3, r7, sb");
| label_1:
0x00008168 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0000816c strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [var_8h]");
0x00008170 str r5, [sp] | *(sp) = r5;
0x00008174 mov r3, 2 | r3 = 2;
0x00008178 mov r2, 1 | r2 = 1;
0x0000817c add r1, r8, r1 | r1 = r8 + r1;
0x00008180 mov r0, 0 | r0 = 0;
0x00008184 bl 0x7608 | r0 = mmap64 ();
0x00008188 cmn r0, 1 |
| if (r0 != 1) {
0x0000818c bne 0x8214 | goto label_8;
| }
0x00008190 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00008194 ldr r1, [pc, 0x184] |
0x00008198 ldr r0, [pc, 0x184] | r0 = *(0x8320);
0x0000819c add r3, r3, r6 | r3 += r6;
0x000081a0 add r1, pc, r1 | r1 = pc + r1;
0x000081a4 str r3, [sp] | *(sp) = r3;
0x000081a8 mov r2, r5 | r2 = r5;
0x000081ac mov r3, 0 | r3 = 0;
0x000081b0 add r1, r1, 0x2c | r1 = 0x8348;
0x000081b4 add r0, pc, r0 | r0 = pc + r0;
0x000081b8 bl 0x72c0 | fcn_000072c0 ();
| label_5:
0x000081bc mov r3, 1 | r3 = 1;
0x000081c0 str r3, [sp] | *(sp) = r3;
0x000081c4 mov r2, 0 | r2 = 0;
0x000081c8 mov r3, 0 | r3 = 0;
0x000081cc mov r0, r5 | r0 = r5;
0x000081d0 bl 0x732c | lseek64 ();
0x000081d4 ldr sl, [sp, 0x10] | sl = var_10h;
0x000081d8 strd r0, r1, [sp, 0x18] | __asm ("strd r0, r1, [var_18h]");
0x000081dc mov r0, sl | r0 = sl;
0x000081e0 bl 0x6fc0 | r0 = fcn_00006fc0 ();
0x000081e4 subs sb, r0, 0 | sb = r0 - 0;
0x000081e8 beq 0x813c |
| }
0x000081ec ldrd r2, r3, [sp, 0x18] | __asm ("ldrd r2, r3, [var_18h]");
0x000081f0 cmp r2, 0 |
0x000081f4 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
0x000081f8 bge 0x8244 |
| while (1) {
0x000081fc bl 0x6ef4 | fcn_00006ef4 ();
0x00008200 b 0x813c | goto label_0;
| label_6:
0x00008204 mov r8, r6 | r8 = r6;
0x00008208 mov r2, r6 | r2 = r6;
0x0000820c mov r3, r7 | r3 = r7;
0x00008210 b 0x8168 | goto label_1;
| label_8:
0x00008214 mov r3, 0 | r3 = 0;
0x00008218 mov r2, 0 | r2 = 0;
0x0000821c strd r2, r3, [r4, 0x28] | __asm ("strd r2, r3, [r4, 0x28]");
0x00008220 ldrb r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00008224 str r0, [r4, 0x14] | *((r4 + 0x14)) = r0;
0x00008228 orr r3, r3, 2 | r3 |= 2;
0x0000822c add r0, r0, r8 | r0 += r8;
0x00008230 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x00008234 strb r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| label_2:
0x00008238 mov r0, 0 | r0 = 0;
| label_7:
0x0000823c add sp, sp, 0x24 |
0x00008240 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00008244 mov r8, 0 | r8 = 0;
0x00008248 mov r3, r7 | r3 = r7;
0x0000824c mov r2, r6 | r2 = r6;
0x00008250 str r8, [sp] | *(sp) = r8;
0x00008254 mov r0, r5 | r0 = r5;
0x00008258 bl 0x732c | r0 = lseek64 ();
0x0000825c cmp r0, 0 |
0x00008260 sbcs r3, r1, 0 | __asm ("sbcs r3, r1, 0");
| if (r0 < 0) {
0x00008264 movge r6, 0 | r6 = 0;
| }
| if (r0 < 0) {
0x00008268 movge r7, 0 | r7 = 0;
| }
| if (r0 >= 0) {
0x0000826c bge 0x8298 | goto label_9;
| }
| label_3:
0x00008270 mov r0, sb | r0 = sb;
0x00008274 b 0x81fc |
| }
| do {
0x00008278 sub r2, sl, r6 | r2 = sl - r6;
0x0000827c add r1, sb, r6 | r1 = sb + r6;
0x00008280 mov r0, r5 | r0 = r5;
0x00008284 bl 0x7320 | r0 = read (r0, r1, r2);
0x00008288 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 <= r0) {
0x0000828c ble 0x82a8 | goto label_10;
| }
0x00008290 adds r6, r6, r8 | r6 += r8;
0x00008294 adc r7, r7, r8, asr 31 | __asm ("adc r7, r7, r8, asr 31");
| label_9:
0x00008298 ldrd r2, r3, [sp, 0x10] | __asm ("ldrd r2, r3, [var_10h]");
0x0000829c cmp r6, r2 |
0x000082a0 sbcs r3, r7, r3 | __asm ("sbcs r3, r7, r3");
0x000082a4 blt 0x8278 |
| } while (r6 < r2);
| label_10:
0x000082a8 bl 0x6f3c | errno_location ();
0x000082ac mov r3, 0 | r3 = 0;
0x000082b0 ldr fp, [r0] | fp = *(r0);
0x000082b4 mov sl, r0 | sl = r0;
0x000082b8 str r3, [sp] | *(sp) = r3;
0x000082bc mov r0, r5 | r0 = r5;
0x000082c0 ldrd r2, r3, [sp, 0x18] | __asm ("ldrd r2, r3, [var_18h]");
0x000082c4 bl 0x732c | lseek64 ();
0x000082c8 cmp r8, 0 |
| if (r8 >= 0) {
0x000082cc blt 0x82f4 |
0x000082d0 ldrd r2, r3, [sp, 0x10] | __asm ("ldrd r2, r3, [var_10h]");
| if (r8 != 0) {
0x000082d4 moveq ip, 1 |
| }
| if (r8 == 0) {
0x000082d8 movne ip, 0 |
| }
0x000082dc cmp r6, r2 |
0x000082e0 sbcs r3, r7, r3 | __asm ("sbcs r3, r7, r3");
| if (r6 < r2) {
0x000082e4 movge r3, 0 | r3 = 0;
| }
| if (r6 >= r2) {
0x000082e8 andlt r3, ip, 1 | r3 = ip & 1;
| }
0x000082ec cmp r3, 0 |
| if (r3 == 0) {
0x000082f0 beq 0x8304 | goto label_11;
| }
| }
0x000082f4 mov r0, sb | r0 = sb;
0x000082f8 bl 0x6ef4 | fcn_00006ef4 ();
0x000082fc str fp, [sl] | *(sl) = fp;
0x00008300 b 0x813c | goto label_0;
| label_11:
0x00008304 cmp r0, 0 |
0x00008308 sbcs r2, r1, 0 | __asm ("sbcs r2, r1, 0");
| if (r0 >= 0) {
0x0000830c strge sb, [r4, 0x18] | *((r4 + 0x18)) = sb;
| goto label_12;
| }
| if (r0 >= 0) {
| label_12:
0x00008310 bge 0x8238 | goto label_2;
| }
0x00008314 b 0x8270 | goto label_3;
| label_4:
0x00008318 mov r0, 0 | r0 = 0;
0x0000831c bx lr | return r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libevent_core-2.1.so.6.0.2 @ 0x22158 */
| #include <stdint.h>
|
; (fcn) fcn.00022158 () | void fcn_00022158 (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00022158 push {r4, r5, r6, lr} |
0x0002215c mov r4, r0 | r4 = r0;
0x00022160 ldr r0, [r0, 0xc] | r0 = *((r0 + 0xc));
0x00022164 mov r5, r1 | r5 = r1;
0x00022168 bl 0x71d0 | r0 = fcn_000071d0 ();
0x0002216c cmp r0, 0 |
| if (r0 != 0) {
0x00022170 beq 0x221d4 |
0x00022174 str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x00022178 mov r1, r5 | r1 = r5;
0x0002217c ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00022180 bl 0x71d0 | r0 = fcn_000071d0 ();
0x00022184 cmp r0, 0 |
| if (r0 == 0) {
0x00022188 beq 0x221d4 | goto label_0;
| }
0x0002218c mov r3, 1 | r3 = 1;
0x00022190 str r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x00022194 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x00022198 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0002219c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000221a0 mov r1, 0 | r1 = 0;
0x000221a4 sub r2, r5, r3 | r2 = r5 - r3;
0x000221a8 add r0, r0, r3 | r0 += r3;
0x000221ac bl 0x76d4 | memset (r0, r1, r2);
0x000221b0 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000221b4 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x000221b8 sub r2, r5, r3 | r2 = r5 - r3;
0x000221bc mov r1, 0 | r1 = 0;
0x000221c0 add r0, r0, r3 | r0 += r3;
0x000221c4 bl 0x76d4 | memset (r0, r1, r2);
0x000221c8 str r5, [r4, 4] | *((r4 + 4)) = r5;
0x000221cc mov r0, 0 | r0 = 0;
0x000221d0 pop {r4, r5, r6, pc} |
| }
| label_0:
0x000221d4 ldr r0, [pc, 0xc] | r0 = *(0x221e4);
0x000221d8 add r0, pc, r0 | r0 = pc + r0;
0x000221dc bl 0x72c0 | fcn_000072c0 ();
0x000221e0 mvn r0, 0 | r0 = ~0;
0x000221e4 pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libevent_core-2.1.so.6.0.2 @ 0xd22c */
| #include <stdint.h>
|
; (fcn) sym.evbuffer_add_file_segment () | void evbuffer_add_file_segment (int32_t arg_28h, int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0000d22c push {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000d230 ldr r8, [pc, 0x230] | r8 = *(0xd464);
0x0000d234 mov r4, r1 | r4 = r1;
0x0000d238 ldr r1, [r0, 0x18] | r1 = *(arg_28hx18);
0x0000d23c add r8, pc, r8 | r8 = pc + r8;
0x0000d240 cmp r1, 0 |
0x0000d244 mov r5, r0 | r5 = r0;
0x0000d248 mov r6, r2 | r6 = r2;
0x0000d24c mov r7, r3 | r7 = r3;
0x0000d250 ldrd sl, fp, [sp, 0x28] | __asm ("ldrd sl, fp, [arg_28h]");
| if (r1 != 0) {
0x0000d254 beq 0xd26c |
0x0000d258 ldr r3, [pc, 0x20c] |
0x0000d25c mov r0, 0 | r0 = 0;
0x0000d260 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x0000d264 ldr r3, [r3, 0x10] | r3 = *(0xd478);
0x0000d268 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x0000d26c ldr r1, [r4] | r1 = *(r4);
0x0000d270 cmp r1, 0 |
| if (r1 != 0) {
0x0000d274 beq 0xd28c |
0x0000d278 ldr r3, [pc, 0x1ec] |
0x0000d27c mov r0, 0 | r0 = 0;
0x0000d280 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x0000d284 ldr r3, [r3, 0x10] | r3 = *(0xd478);
0x0000d288 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x0000d28c ldr r3, [r5, 0x20] | r3 = *((r5 + 0x20));
0x0000d290 tst r3, 1 |
| if ((r3 & 1) != 0) {
0x0000d294 bne 0xd41c | goto label_2;
| }
0x0000d298 ldr sb, [r4, 0x18] | sb = *((r4 + 0x18));
0x0000d29c cmp sb, 0 |
0x0000d2a0 beq 0xd3c4 |
| while (r0 >= 0) {
0x0000d2a4 mov sb, 0 | sb = 0;
| label_0:
0x0000d2a8 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000d2ac ldr r1, [r4] | r1 = *(r4);
0x0000d2b0 add r3, r3, 1 | r3++;
0x0000d2b4 cmp r1, 0 |
0x0000d2b8 str r3, [r4, 4] | *((r4 + 4)) = r3;
| if (r1 != 0) {
0x0000d2bc beq 0xd2d4 |
0x0000d2c0 ldr r3, [pc, 0x1a4] |
0x0000d2c4 mov r0, 0 | r0 = 0;
0x0000d2c8 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x0000d2cc ldr r3, [r3, 0x14] | r3 = *(0xd47c);
0x0000d2d0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x0000d2d4 ldrb r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x0000d2d8 tst r3, 4 |
| if ((r3 & 4) != 0) {
0x0000d2dc bne 0xd43c | goto label_3;
| }
0x0000d2e0 cmp sl, 0 |
0x0000d2e4 sbcs r1, fp, 0 | __asm ("sbcs r1, arg_28h");
0x0000d2e8 ldrd r2, r3, [r4, 0x30] | __asm ("ldrd r2, r3, [r4, 0x30]");
| if (sl < 0) {
0x0000d2ec bge 0xd310 |
0x0000d2f0 mov r1, r7 | r1 = r7;
0x0000d2f4 cmp r2, r6 |
0x0000d2f8 sbcs r1, r3, r1 | __asm ("sbcs r1, r3, r1");
| if (r2 < r6) {
0x0000d2fc blt 0xd43c | goto label_3;
| }
0x0000d300 subs r0, r2, r6 | r0 = r2 - r6;
0x0000d304 sbc r1, r3, r7 | __asm ("sbc r1, r3, r7");
0x0000d308 mov sl, r0 | sl = r0;
0x0000d30c mov fp, r1 |
| }
0x0000d310 adds r0, r6, sl | r0 = r6 + sl;
0x0000d314 adc r1, r7, fp | __asm ("adc r1, r7, fp");
0x0000d318 cmp r2, r0 |
0x0000d31c sbcs r3, r3, r1 | __asm ("sbcs r3, r3, r1");
| if (r2 < r0) {
0x0000d320 blt 0xd43c | goto label_3;
| }
0x0000d324 mov r0, 4 | r0 = 4;
0x0000d328 bl 0x7ea0 | r0 = fcn_00007ea0 (r0);
0x0000d32c subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 == r0) {
0x0000d330 beq 0xd43c | goto label_3;
| }
0x0000d334 ldr r3, [r1, 0x14] | r3 = *((r1 + 0x14));
0x0000d338 cmp sb, 0 |
0x0000d33c orr r2, r3, 9 | r2 = r3 | 9;
0x0000d340 str r2, [r1, 0x14] | *((r1 + 0x14)) = r2;
0x0000d344 mov r0, sl | r0 = sl;
| if (sb == 0) {
0x0000d348 beq 0xd424 | goto label_4;
| }
0x0000d34c ldrb r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x0000d350 tst r2, 1 |
| if ((r2 & 1) == 0) {
0x0000d354 beq 0xd424 | goto label_4;
| }
0x0000d358 orr r3, r3, 0xb | r3 |= 0xb;
0x0000d35c str r3, [r1, 0x14] | *((r1 + 0x14)) = r3;
0x0000d360 ldrd r2, r3, [r4, 0x20] | __asm ("ldrd r2, r3, [r4, 0x20]");
0x0000d364 str sl, [r1, 0x10] | *((r1 + 0x10)) = sl;
0x0000d368 adds r6, r6, r2 | r6 += r2;
0x0000d36c adc r7, r7, r3 | __asm ("adc r7, r7, r3");
0x0000d370 strd r6, r7, [r1, 8] | __asm ("strd r6, r7, [r1, 8]");
0x0000d374 add r6, sl, r6 | r6 = sl + r6;
0x0000d378 str r6, [r1, 4] | *((r1 + 4)) = r6;
| label_1:
0x0000d37c str r4, [r1, 0x20] | *((r1 + 0x20)) = r4;
0x0000d380 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0000d384 add r0, r3, r0 | r0 = r3 + r0;
0x0000d388 str r0, [r5, 0x10] | *((r5 + 0x10)) = r0;
0x0000d38c mov r0, r5 | r0 = r5;
0x0000d390 bl 0xa804 | fcn_0000a804 (r0, r1);
0x0000d394 mov r0, r5 | r0 = r5;
0x0000d398 bl 0x6eac | fcn_00006eac ();
0x0000d39c ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
0x0000d3a0 cmp r1, 0 |
| if (r1 != 0) {
0x0000d3a4 beq 0xd3bc |
0x0000d3a8 ldr r3, [pc, 0xbc] |
0x0000d3ac mov r0, 0 | r0 = 0;
0x0000d3b0 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x0000d3b4 ldr r3, [r3, 0x14] | r3 = *(0xd47c);
0x0000d3b8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x0000d3bc mov r0, 0 | r0 = 0;
0x0000d3c0 pop {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0000d3c4 mov r0, r4 | r0 = r4;
0x0000d3c8 bl 0x80f0 | r0 = fcn_000080f0 (r0);
0x0000d3cc cmp r0, 0 |
0x0000d3d0 bge 0xd2a4 |
| }
0x0000d3d4 ldr r1, [r4] | r1 = *(r4);
0x0000d3d8 cmp r1, 0 |
| if (r1 != 0) {
0x0000d3dc beq 0xd3f4 |
0x0000d3e0 ldr r3, [pc, 0x84] |
0x0000d3e4 mov r0, sb | r0 = sb;
0x0000d3e8 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x0000d3ec ldr r3, [r3, 0x14] | r3 = *(0xd47c);
0x0000d3f0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x0000d3f4 ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
0x0000d3f8 cmp r1, 0 |
| if (r1 == 0) {
0x0000d3fc beq 0xd414 | goto label_5;
| }
0x0000d400 ldr r3, [pc, 0x64] |
0x0000d404 mov r0, 0 | r0 = 0;
0x0000d408 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x0000d40c ldr r3, [r3, 0x14] | r3 = *(0xd47c);
0x0000d410 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| do {
| label_5:
0x0000d414 mvn r0, 0 | r0 = ~0;
0x0000d418 pop {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x0000d41c mov sb, 1 | sb = 1;
0x0000d420 b 0xd2a8 | goto label_0;
| label_4:
0x0000d424 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x0000d428 str r0, [r1, 4] | *((r1 + 4)) = r0;
0x0000d42c add r6, r3, r6 | r6 = r3 + r6;
0x0000d430 str r6, [r1, 0x1c] | *((r1 + 0x1c)) = r6;
0x0000d434 str r0, [r1, 0x10] | *((r1 + 0x10)) = r0;
0x0000d438 b 0xd37c | goto label_1;
| label_3:
0x0000d43c ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
0x0000d440 cmp r1, 0 |
| if (r1 != 0) {
0x0000d444 beq 0xd45c |
0x0000d448 ldr r3, [pc, 0x1c] |
0x0000d44c mov r0, 0 | r0 = 0;
0x0000d450 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x0000d454 ldr r3, [r3, 0x14] | r3 = *(0xd47c);
0x0000d458 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x0000d45c mov r0, r4 | r0 = r4;
0x0000d460 bl 0x6f9c | fcn_00006f9c ();
0x0000d464 b 0xd414 |
| } 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/usr/lib/libevent_core-2.1.so.6.0.2 @ 0x8f54 */
| #include <stdint.h>
|
; (fcn) sym.evbuffer_commit_space () | void evbuffer_commit_space (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_0h_2;
| int32_t var_8h;
| int32_t var_8h_2;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x00008f54 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00008f58 ldr r7, [pc, 0x230] | r7 = *(0x918c);
0x00008f5c mov r6, r1 | r6 = r1;
0x00008f60 ldr r1, [r0, 0x18] | r1 = *((r0 + 0x18));
0x00008f64 add r7, pc, r7 | r7 = pc + r7;
0x00008f68 cmp r1, 0 |
0x00008f6c sub sp, sp, 0x14 |
0x00008f70 mov r5, r0 | r5 = r0;
0x00008f74 mov r4, r2 | r4 = r2;
| if (r1 != 0) {
0x00008f78 beq 0x8f90 |
0x00008f7c ldr r3, [pc, 0x210] |
0x00008f80 mov r0, 0 | r0 = 0;
0x00008f84 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00008f88 ldr r3, [r3, 0x10] | r3 = *(0x91a0);
0x00008f8c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x00008f90 ldrb r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x00008f94 ands r3, r3, 4 | r3 &= 4;
| if (r3 != r3) {
0x00008f98 bne 0x9188 | goto label_3;
| }
0x00008f9c cmp r4, 0 |
| if (r4 == 0) {
0x00008fa0 beq 0x9034 | goto label_2;
| }
0x00008fa4 cmp r4, 1 |
| if (r4 != 1) {
0x00008fa8 bne 0x9060 | goto label_4;
| }
0x00008fac ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x00008fb0 cmp r2, 0 |
| if (r2 == 0) {
0x00008fb4 beq 0x9060 | goto label_4;
| }
0x00008fb8 ldr r1, [r2, 0x10] | r1 = *((r2 + 0x10));
0x00008fbc ldr r0, [r2, 8] | r0 = *((r2 + 8));
0x00008fc0 ldr ip, [r2, 0x1c] | ip = *((r2 + 0x1c));
0x00008fc4 ldr lr, [r6] |
0x00008fc8 add r0, r1, r0 | r0 = r1 + r0;
0x00008fcc add ip, ip, r0 |
0x00008fd0 cmp lr, ip |
| if (lr != ip) {
0x00008fd4 bne 0x9060 | goto label_4;
| }
0x00008fd8 ldr lr, [r2, 0x14] |
0x00008fdc ldr ip, [r6, 4] | ip = *((r6 + 4));
0x00008fe0 tst lr, 8 |
| if ((lr & 8) != 0) {
0x00008fe4 ldreq r3, [r2, 4] | r3 = *((r2 + 4));
| }
| if ((lr & 8) != 0) {
0x00008fe8 subeq r3, r3, r0 | r3 -= r0;
| }
0x00008fec cmp ip, r3 |
| if (ip > r3) {
0x00008ff0 bhi 0x9188 | goto label_3;
| }
0x00008ff4 add r1, r1, ip | r1 += ip;
0x00008ff8 str r1, [r2, 0x10] | *((r2 + 0x10)) = r1;
0x00008ffc ldr r8, [r6, 4] | r8 = *((r6 + 4));
0x00009000 cmp r8, 0 |
| if (r8 == 0) {
0x00009004 beq 0x9010 | goto label_5;
| }
0x00009008 mov r0, r5 | r0 = r5;
0x0000900c bl 0x835c | fcn_0000835c (r0);
| do {
| label_5:
0x00009010 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00009014 mov r0, r5 | r0 = r5;
0x00009018 add r3, r3, r8 | r3 += r8;
0x0000901c str r3, [r5, 0xc] | *((r5 + 0xc)) = r3;
0x00009020 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00009024 mov r4, 0 | r4 = 0;
0x00009028 add r8, r3, r8 | r8 = r3 + r8;
0x0000902c str r8, [r5, 0x10] | *((r5 + 0x10)) = r8;
0x00009030 bl 0x6eac | fcn_00006eac ();
| label_2:
0x00009034 ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
0x00009038 cmp r1, 0 |
| if (r1 != 0) {
0x0000903c beq 0x9054 |
0x00009040 ldr r3, [pc, 0x14c] |
0x00009044 mov r0, 0 | r0 = 0;
0x00009048 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0000904c ldr r3, [r3, 0x14] | r3 = *(0x91a4);
0x00009050 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x00009054 mov r0, r4 | r0 = r4;
0x00009058 add sp, sp, 0x14 |
0x0000905c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x00009060 ldr ip, [r5, 8] | ip = *((r5 + 8));
0x00009064 ldr lr, [ip] |
0x00009068 cmp lr, 0 |
| if (lr == 0) {
0x0000906c beq 0x9188 | goto label_3;
| }
0x00009070 ldr r3, [lr, 0x14] | r3 = *((lr + 0x14));
0x00009074 tst r3, 8 |
| if ((r3 & 8) == 0) {
0x00009078 bne 0x90a0 |
0x0000907c ldrd r2, r3, [lr, 8] | __asm ("ldrd r2, r3, [lr, 8]");
0x00009080 ldr r8, [lr, 0x10] | r8 = *((lr + 0x10));
0x00009084 ldr r0, [lr, 4] | r0 = *((lr + 4));
0x00009088 adds sl, r2, r8 | sl = r2 + r8;
0x0000908c mov r1, 0 | r1 = 0;
0x00009090 adc fp, r3, 0 | __asm ("adc fp, r3, 0");
0x00009094 cmp r1, fp |
0x00009098 cmpeq r0, sl | __asm ("cmpeq r0, sl");
| if (r1 != fp) {
0x0000909c bne 0x90a4 | goto label_6;
| }
| }
0x000090a0 mov ip, lr |
| label_6:
0x000090a4 ldr r1, [ip] | r1 = *(ip);
0x000090a8 mov r0, 0 | r0 = 0;
| label_1:
0x000090ac cmp r0, r4 |
| if (r0 < r4) {
0x000090b0 blt 0x90f8 | goto label_7;
| }
0x000090b4 mov r3, 0 | r3 = 0;
0x000090b8 mov r8, r3 | r8 = r3;
| label_0:
0x000090bc cmp r3, r4 |
0x000090c0 bge 0x9010 |
| } while (r3 >= r4);
0x000090c4 ldr r1, [ip] | r1 = *(ip);
0x000090c8 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x000090cc ldr r2, [r1, 0x10] | r2 = *((r1 + 0x10));
0x000090d0 add r3, r3, 1 | r3++;
0x000090d4 add r2, r2, r0 | r2 += r0;
0x000090d8 str r2, [r1, 0x10] | *((r1 + 0x10)) = r2;
0x000090dc ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x000090e0 add r6, r6, 8 | r6 += 8;
0x000090e4 cmp r2, 0 |
| if (r2 == 0) {
0x000090e8 strne ip, [r5, 8] | *((r5 + 8)) = ip;
| }
0x000090ec add r8, r8, r2 | r8 += r2;
0x000090f0 ldr ip, [ip] | ip = *(ip);
0x000090f4 b 0x90bc | goto label_0;
| label_7:
0x000090f8 cmp r1, 0 |
| if (r1 == 0) {
0x000090fc beq 0x9188 | goto label_3;
| }
0x00009100 ldrd r2, r3, [r1, 8] | __asm ("ldrd r2, r3, [r1, 8]");
0x00009104 ldr lr, [r1, 0x10] |
0x00009108 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x0000910c ldr r3, [sp] | r3 = *(sp);
0x00009110 ldr r8, [r1, 0x1c] | r8 = *((r1 + 0x1c));
0x00009114 add sb, lr, r3 | sb = lr + r3;
0x00009118 add r8, r8, sb | r8 += sb;
0x0000911c ldr sb, [r6, r0, lsl 3] | offset_0 = r0 << 3;
| sb = *((r6 + offset_0));
0x00009120 cmp sb, r8 |
| if (sb != r8) {
0x00009124 bne 0x9188 | goto label_3;
| }
0x00009128 add r8, r6, r0, lsl 3 | r8 = r6 + (r0 << 3);
0x0000912c ldr r8, [r8, 4] | r8 = *((r8 + 4));
0x00009130 ldr sl, [r1, 0x14] | sl = *((r1 + 0x14));
0x00009134 mov r2, r8 | r2 = r8;
0x00009138 mov r3, 0 | r3 = 0;
0x0000913c tst sl, 8 |
0x00009140 strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [var_8h]");
| if ((sl & 8) == 0) {
0x00009144 movne r2, 0 | r2 = 0;
| }
| if ((sl & 8) == 0) {
0x00009148 movne r3, 0 | r3 = 0;
| }
| if ((sl & 8) == 0) {
0x0000914c bne 0x9170 |
0x00009150 ldrd r2, r3, [sp] | __asm ("ldrd r2, r3, [sp]");
0x00009154 ldr sl, [r1, 4] | sl = *((r1 + 4));
0x00009158 adds r2, r2, lr | r2 += lr;
0x0000915c adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00009160 subs r8, sl, r2 | r8 = sl - r2;
0x00009164 rsc sb, r3, 0 | __asm ("rsc sb, r3, 0");
0x00009168 mov r2, r8 | r2 = r8;
0x0000916c mov r3, sb | r3 = sb;
| }
0x00009170 ldrd r8, sb, [sp, 8] | __asm ("ldrd r8, sb, [var_8h]");
0x00009174 cmp r2, r8 |
0x00009178 sbcs r3, r3, sb | __asm ("sbcs r3, r3, sb");
| if (r2 < r8) {
0x0000917c ldrge r1, [r1] | r1 = *(r1);
| }
| if (r2 >= r8) {
0x00009180 addge r0, r0, 1 | r0++;
| goto label_8;
| }
| if (r2 >= r8) {
| label_8:
0x00009184 bge 0x90ac | goto label_1;
| }
| label_3:
0x00009188 mvn r4, 0 | r4 = ~0;
0x0000918c b 0x9034 | 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/usr/lib/libevent_core-2.1.so.6.0.2 @ 0x9da8 */
| #include <stdint.h>
|
; (fcn) sym.evbuffer_peek () | void evbuffer_peek (int32_t arg_20h, int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00009da8 push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00009dac ldr sb, [pc, 0x140] | sb = *(0x00009ef4);
0x00009db0 subs r5, r2, 0 | r5 = r2 - 0;
0x00009db4 add sb, pc, sb | sb = pc + sb;
0x00009db8 mov r7, r0 | r7 = r0;
0x00009dbc mov r6, r1 | r6 = r1;
0x00009dc0 mov r8, r3 | r8 = r3;
0x00009dc4 ldr sl, [sp, 0x20] | sl = *(arg_20h);
| if (r5 != r2) {
0x00009dc8 beq 0x9dd8 |
0x00009dcc ldr r4, [r5, 4] | r4 = *((r5 + 4));
0x00009dd0 cmp r4, 0 |
| if (r4 == 0) {
0x00009dd4 beq 0x9ec8 | goto label_2;
| }
| }
0x00009dd8 ldr r1, [r7, 0x18] | r1 = *((r7 + 0x18));
0x00009ddc cmp r1, 0 |
| if (r1 != 0) {
0x00009de0 beq 0x9df8 |
0x00009de4 ldr r3, [pc, 0x10c] |
0x00009de8 mov r0, 0 | r0 = 0;
0x00009dec ldr r3, [sb, r3] | r3 = *((sb + r3));
0x00009df0 ldr r3, [r3, 0x10] | r3 = *(0x9f04);
0x00009df4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x00009df8 cmp r5, 0 |
| if (r5 != 0) {
0x00009dfc ldreq r1, [r7] | r1 = *(r7);
| }
| if (r5 != 0) {
0x00009e00 moveq r2, r5 | r2 = r5;
| }
| if (r5 != 0) {
0x00009e04 moveq r4, r5 | r4 = r5;
| }
| if (r5 != 0) {
0x00009e08 beq 0x9e3c |
0x00009e0c ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00009e10 cmp sl, 0 |
0x00009e14 ldr r1, [r5, 8] | r1 = *((r5 + 8));
| if (sl <= 0) {
0x00009e18 ldrgt r0, [r3, 8] | r0 = *((r3 + 8));
| }
0x00009e1c ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x00009e20 mov r4, 1 | r4 = 1;
0x00009e24 sub r2, r2, r1 | r2 -= r1;
| if (sl <= 0) {
0x00009e28 addgt r1, r1, r0 | r1 += r0;
| }
| if (sl <= 0) {
0x00009e2c ldrgt r0, [r3, 0x1c] | r0 = *((r3 + 0x1c));
| }
| if (sl <= 0) {
0x00009e30 addgt r1, r0, r1 | r1 = r0 + r1;
| }
| if (sl <= 0) {
0x00009e34 stmgt r8, {r1, r2} | *(r8) = r1;
| *((r8 + 4)) = r2;
| }
0x00009e38 ldr r1, [r3] | r1 = *(r3);
| }
0x00009e3c cmp sl, 0 |
| if (sl != 0) {
0x00009e40 lsreq r3, r6, 0x1f | r3 = r6 >> 0x1f;
| }
| if (sl == 0) {
0x00009e44 movne r3, 0 | r3 = 0;
| }
0x00009e48 cmp r3, 0 |
| if (r3 != 0) {
0x00009e4c beq 0x9e60 |
0x00009e50 cmp r5, 0 |
0x00009e54 ldr r6, [r7, 0xc] | r6 = *((r7 + 0xc));
| if (r5 == 0) {
0x00009e58 ldrne r3, [r5] | r3 = *(r5);
| }
| if (r5 != 0) {
0x00009e5c subne r6, r6, r3 | r6 -= r3;
| goto label_3;
| }
| }
| label_3:
0x00009e60 mvn r0, r6 | r0 = ~r6;
0x00009e64 lsr r0, r0, 0x1f | r0 >>= 0x1f;
0x00009e68 b 0x9ea0 |
| while (r3 == 0) {
0x00009e6c cmp r4, sl |
| if (r4 >= sl) {
0x00009e70 bge 0x9ed0 | goto label_4;
| }
0x00009e74 ldr ip, [r1, 8] | ip = *((r1 + 8));
0x00009e78 ldr r3, [r1, 0x1c] | r3 = *((r1 + 0x1c));
0x00009e7c add r3, r3, ip | r3 += ip;
0x00009e80 str r3, [r8, r4, lsl 3] | offset_0 = r4 << 3;
| *((r8 + offset_0)) = r3;
0x00009e84 ldr ip, [r1, 0x10] | ip = *((r1 + 0x10));
0x00009e88 add r3, r8, r4, lsl 3 | r3 = r8 + (r4 << 3);
0x00009e8c str ip, [r3, 4] | *((r3 + 4)) = ip;
| label_0:
0x00009e90 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00009e94 ldr r1, [r1] | r1 = *(r1);
0x00009e98 add r4, r4, 1 | r4++;
0x00009e9c add r2, r2, r3 | r2 += r3;
0x00009ea0 cmp r1, 0 |
| if (r1 == 0) {
0x00009ea4 beq 0x9ebc | goto label_1;
| }
0x00009ea8 cmp r2, r6 |
| if (r2 >= r6) {
0x00009eac movlt r3, 0 | r3 = 0;
| }
| if (r2 < r6) {
0x00009eb0 andge r3, r0, 1 | r3 = r0 & 1;
| }
0x00009eb4 cmp r3, 0 |
0x00009eb8 beq 0x9e6c |
| }
| label_1:
0x00009ebc ldr r1, [r7, 0x18] | r1 = *((r7 + 0x18));
0x00009ec0 cmp r1, 0 |
| if (r1 != 0) {
0x00009ec4 bne 0x9edc | goto label_5;
| }
| label_2:
0x00009ec8 mov r0, r4 | r0 = r4;
0x00009ecc pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_4:
0x00009ed0 cmp r6, 0 |
| if (r6 >= 0) {
0x00009ed4 bge 0x9e90 | goto label_0;
| }
0x00009ed8 b 0x9ebc | goto label_1;
| label_5:
0x00009edc ldr r3, [pc, 0x14] |
0x00009ee0 mov r0, 0 | r0 = 0;
0x00009ee4 ldr r3, [sb, r3] | r3 = *((sb + r3));
0x00009ee8 ldr r3, [r3, 0x14] | r3 = *(0x9f08);
0x00009eec blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00009ef0 b 0x9ec8 | 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/usr/lib/libevent_core-2.1.so.6.0.2 @ 0xb23c */
| #include <stdint.h>
|
; (fcn) sym.evbuffer_remove_buffer () | void evbuffer_remove_buffer (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| r0 = arg1;
| r1 = arg2;
0x0000b23c push {r0, r1, r4, r5, r6, r7, r8, sb, sl, lr} |
0x0000b240 ldr r5, [r0, 0x18] | r5 = *((r0 + 0x18));
0x0000b244 ldr r4, [r1, 0x18] | r4 = *((r1 + 0x18));
0x0000b248 ldr r8, [pc, 0x29c] | r8 = *(0xb4e8);
0x0000b24c cmp r5, 0 |
0x0000b250 cmpne r4, 0 | __asm ("cmpne r4, 0");
0x0000b254 add r8, pc, r8 | r8 = pc + r8;
0x0000b258 mov r6, r0 | r6 = r0;
0x0000b25c mov r7, r1 | r7 = r1;
0x0000b260 mov sb, r2 | sb = r2;
| if (r5 == 0) {
0x0000b264 beq 0xb28c | goto label_5;
| }
0x0000b268 cmp r5, r4 |
| if (r5 > r4) {
0x0000b26c bhi 0xb4bc | goto label_6;
| }
| do {
| label_2:
0x0000b270 ldr r3, [pc, 0x278] |
0x0000b274 mov r1, r5 | r1 = r5;
0x0000b278 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x0000b27c mov r0, 0 | r0 = 0;
0x0000b280 ldr r3, [r3, 0x10] | r3 = *(0xb4fc);
0x0000b284 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0000b288 b 0xb294 | goto label_7;
| label_5:
0x0000b28c cmp r5, 0 |
0x0000b290 bne 0xb270 |
| } while (r5 != 0);
| label_7:
0x0000b294 mov r3, r5 | r3 = r5;
0x0000b298 cmp r4, 0 |
0x0000b29c cmpne r3, r4 | __asm ("cmpne r3, r4");
0x0000b2a0 mov r5, r4 | r5 = r4;
| if (r4 != 0) {
0x0000b2a4 beq 0xb2c0 |
| label_3:
0x0000b2a8 ldr r3, [pc, 0x240] |
0x0000b2ac mov r1, r5 | r1 = r5;
0x0000b2b0 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x0000b2b4 mov r0, 0 | r0 = 0;
0x0000b2b8 ldr r3, [r3, 0x10] | r3 = *(0xb4fc);
0x0000b2bc blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| }
0x0000b2c0 cmp r6, r7 |
0x0000b2c4 cmpne sb, 0 | __asm ("cmpne sb, 0");
| if (r6 == r7) {
0x0000b2c8 beq 0xb470 | goto label_8;
| }
0x0000b2cc ldrb r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x0000b2d0 tst r3, 4 |
| if ((r3 & 4) != 0) {
0x0000b2d4 bne 0xb478 | goto label_9;
| }
0x0000b2d8 ldrb r4, [r6, 0x1c] | r4 = *((r6 + 0x1c));
0x0000b2dc ands r3, r4, 2 | r3 = r4 & 2;
| if (r3 != r4) {
0x0000b2e0 bne 0xb478 | goto label_9;
| }
0x0000b2e4 ldr r4, [r6, 0xc] | r4 = *((r6 + 0xc));
0x0000b2e8 cmp r4, sb |
| if (r4 <= sb) {
0x0000b2ec ldrhi sl, [r6] | sl = *(r6);
| }
| if (r4 <= sb) {
0x0000b2f0 movhi r4, r3 | r4 = r3;
| }
| if (r4 <= sb) {
0x0000b2f4 movhi r5, sl | r5 = sl;
| }
| if (r4 > sb) {
0x0000b2f8 bhi 0xb3a4 | goto label_10;
| }
0x0000b2fc mov r1, r6 | r1 = r6;
0x0000b300 mov r0, r7 | r0 = r7;
0x0000b304 bl 0x7164 | fcn_00007164 ();
| label_0:
0x0000b308 ldr r5, [r6, 0x18] | r5 = *((r6 + 0x18));
0x0000b30c ldr r1, [r7, 0x18] | r1 = *((r7 + 0x18));
0x0000b310 cmp r5, 0 |
0x0000b314 cmpne r1, 0 | __asm ("cmpne r1, 0");
| if (r5 == 0) {
0x0000b318 beq 0xb480 | goto label_11;
| }
0x0000b31c cmp r5, r1 |
| if (r5 > r1) {
0x0000b320 bhi 0xb4d4 | goto label_12;
| }
| if (r5 == r1) {
0x0000b324 beq 0xb49c | goto label_4;
| }
| label_1:
0x0000b328 ldr r3, [pc, 0x1c0] |
0x0000b32c mov r0, 0 | r0 = 0;
0x0000b330 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x0000b334 ldr r3, [r3, 0x14] | r3 = *(0xb500);
0x0000b338 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000b33c b 0xb490 | goto label_13;
| do {
0x0000b340 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x0000b344 ldr r1, [r2] | r1 = *(r2);
0x0000b348 cmp r1, r5 |
| if (r1 == r5) {
0x0000b34c bne 0xb38c |
0x0000b350 ldr r3, [pc, 0x19c] |
0x0000b354 ldr r2, [pc, 0x19c] | r2 = *(0xb4f4);
0x0000b358 add r3, pc, r3 | r3 = pc + r3;
0x0000b35c add r3, r3, 0x200 | r3 = 0xb6f0;
0x0000b360 add r3, r3, 3 | r3 += 3;
0x0000b364 str r3, [sp, 4] | var_4h = r3;
0x0000b368 ldr r3, [pc, 0x18c] | r3 = *(0xb4f8);
0x0000b36c ldr r1, [pc, 0x18c] | r1 = *(0xb4fc);
0x0000b370 add r3, pc, r3 | r3 = pc + r3;
0x0000b374 str r3, [sp] | *(sp) = r3;
0x0000b378 add r2, pc, r2 | r2 = pc + r2;
0x0000b37c ldr r3, [pc, 0x180] | r3 = *(0xb500);
0x0000b380 add r1, pc, r1 | r1 = pc + r1;
0x0000b384 ldr r0, [pc, 0x17c] | r0 = *(0xb504);
0x0000b388 bl 0x786c | fcn_0000786c ();
| }
0x0000b38c cmp r2, r5 |
| if (r2 != r5) {
0x0000b390 streq r6, [r6, 8] | *((r6 + 8)) = r6;
| }
0x0000b394 mov sl, r5 | sl = r5;
0x0000b398 ldr r5, [r5] | r5 = *(r5);
0x0000b39c add r4, r4, r3 | r4 += r3;
0x0000b3a0 sub sb, sb, r3 | sb -= r3;
| label_10:
0x0000b3a4 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0000b3a8 cmp sb, r3 |
0x0000b3ac bhs 0xb340 |
| } while (sb >= r3);
0x0000b3b0 cmp r4, 0 |
| if (r4 != 0) {
0x0000b3b4 beq 0xb404 |
0x0000b3b8 ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x0000b3bc bl 0xa754 | fcn_0000a754 (r0);
0x0000b3c0 ldr r3, [r7] | r3 = *(r7);
0x0000b3c4 cmp r3, 0 |
0x0000b3c8 ldr r3, [r6] | r3 = *(r6);
| if (r3 != 0) {
0x0000b3cc streq r3, [r7] | *(r7) = r3;
| }
| if (r3 == 0) {
0x0000b3d0 strne r3, [r0] | *(r0) = r3;
| }
0x0000b3d4 mov r3, 0 | r3 = 0;
0x0000b3d8 str sl, [r7, 4] | *((r7 + 4)) = sl;
0x0000b3dc mov r0, r7 | r0 = r7;
0x0000b3e0 str r3, [sl] | *(sl) = r3;
0x0000b3e4 str r5, [r6] | *(r6) = r5;
0x0000b3e8 bl 0x835c | fcn_0000835c (r0);
0x0000b3ec ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x0000b3f0 add r3, r3, r4 | r3 += r4;
0x0000b3f4 str r3, [r7, 0xc] | *((r7 + 0xc)) = r3;
0x0000b3f8 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x0000b3fc add r3, r3, r4 | r3 += r4;
0x0000b400 str r3, [r7, 0x10] | *((r7 + 0x10)) = r3;
| }
| if (r3 != 0) {
0x0000b404 andeq r0, r0, r1 | r0 &= r1;
| }
0x0000b408 ldr r1, [r5, 0x1c] | r1 = *((r5 + 0x1c));
0x0000b40c mov r2, sb | r2 = sb;
0x0000b410 add r1, r1, r3 | r1 += r3;
0x0000b414 mov r0, r7 | r0 = r7;
0x0000b418 bl 0x7038 | fcn_00007038 ();
0x0000b41c ldrd r2, r3, [r5, 8] | __asm ("ldrd r2, r3, [r5, 8]");
0x0000b420 add r4, sb, r4 | r4 = sb + r4;
0x0000b424 adds r0, r2, sb | r0 = r2 + sb;
0x0000b428 adc r1, r3, 0 | __asm ("adc r1, r3, 0");
0x0000b42c ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0000b430 strd r0, r1, [r5, 8] | __asm ("strd r0, r1, [r5, 8]");
0x0000b434 sub r3, r3, sb | r3 -= sb;
0x0000b438 str r3, [r5, 0x10] | *((r5 + 0x10)) = r3;
0x0000b43c ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0000b440 cmp r4, 0 |
0x0000b444 sub r3, r3, r4 | r3 -= r4;
0x0000b448 str r3, [r6, 0xc] | *((r6 + 0xc)) = r3;
0x0000b44c ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x0000b450 add r3, r3, r4 | r3 += r4;
0x0000b454 str r3, [r6, 0x14] | *((r6 + 0x14)) = r3;
| if (r4 == 0) {
0x0000b458 beq 0xb308 | goto label_0;
| }
0x0000b45c mov r0, r7 | r0 = r7;
0x0000b460 bl 0x6eac | fcn_00006eac ();
0x0000b464 mov r0, r6 | r0 = r6;
0x0000b468 bl 0x6eac | fcn_00006eac ();
0x0000b46c b 0xb308 | goto label_0;
| label_8:
0x0000b470 mov r4, 0 | r4 = 0;
0x0000b474 b 0xb308 | goto label_0;
| label_9:
0x0000b478 mvn r4, 0 | r4 = ~0;
0x0000b47c b 0xb308 | goto label_0;
| label_11:
0x0000b480 cmp r5, r1 |
| if (r5 == r1) {
0x0000b484 beq 0xb494 | goto label_14;
| }
0x0000b488 cmp r1, 0 |
| if (r1 != 0) {
0x0000b48c bne 0xb328 | goto label_1;
| }
| label_13:
0x0000b490 mov r1, r5 | r1 = r5;
| label_14:
0x0000b494 cmp r1, 0 |
| if (r1 != 0) {
0x0000b498 beq 0xb4b0 |
| label_4:
0x0000b49c ldr r3, [pc, 0x4c] |
0x0000b4a0 mov r0, 0 | r0 = 0;
0x0000b4a4 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x0000b4a8 ldr r3, [r3, 0x14] | r3 = *(0xb500);
0x0000b4ac blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x0000b4b0 mov r0, r4 | r0 = r4;
0x0000b4b4 add sp, sp, 8 |
0x0000b4b8 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_6:
0x0000b4bc cmp r4, 0 |
| if (r4 == 0) {
0x0000b4c0 movne r3, r5 | r3 = r5;
| }
| if (r4 == 0) {
0x0000b4c4 movne r5, r4 | r5 = r4;
| }
| if (r4 != 0) {
0x0000b4c8 movne r4, r3 | r4 = r3;
| goto label_15;
| }
| if (r4 != 0) {
| label_15:
0x0000b4cc bne 0xb270 | goto label_2;
| }
0x0000b4d0 b 0xb2a8 | goto label_3;
| label_12:
0x0000b4d4 cmp r5, 0 |
| if (r5 == 0) {
0x0000b4d8 movne r3, r5 | r3 = r5;
| }
| if (r5 == 0) {
0x0000b4dc movne r5, r1 | r5 = r1;
| }
| if (r5 != 0) {
0x0000b4e0 movne r1, r3 | r1 = r3;
| goto label_16;
| }
| if (r5 != 0) {
| label_16:
0x0000b4e4 bne 0xb328 | goto label_1;
| }
0x0000b4e8 b 0xb49c | goto label_4;
| }
[*] Function strcat used 1 times libevent_core-2.1.so.6.0.2