[*] 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 system 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 system used 1 times libevent_core-2.1.so.6.0.2