[*] Binary protection state of motion

  
  	Full RELRO     Canary found      NX disabled  PIE enabled  No RPATH     No RUNPATH   No Symbols


[*] Function fprintf tear down of motion

    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/motion @ 0x58a8 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.light_estimate ()        | void light_estimate () {
    0x000058a8 lui gp, 2                 |     
    0x000058ac addiu gp, gp, 0x6918      |     
    0x000058b0 addu gp, gp, t9           |     gp += t9;
    0x000058b4 addiu sp, sp, -0x70       |     
    0x000058b8 sw s1, 0x4c(sp)           |     *(var_4ch) = s1;
    0x000058bc lw s1, -0x7d80(gp)        |     s1 = *((gp - 8032));
    0x000058c0 sw gp, 0x18(sp)           |     *(var_18h) = gp;
    0x000058c4 sw ra, 0x6c(sp)           |     *(var_6ch) = ra;
    0x000058c8 lw v0, (s1)               |     v0 = *(s1);
    0x000058cc sw fp, 0x68(sp)           |     *(var_68h) = fp;
    0x000058d0 sw s7, 0x64(sp)           |     *(var_64h) = s7;
    0x000058d4 sw s6, 0x60(sp)           |     *(var_60h) = s6;
    0x000058d8 sw s5, 0x5c(sp)           |     *(var_5ch) = s5;
    0x000058dc sw s4, 0x58(sp)           |     *(var_58h) = s4;
    0x000058e0 sw s3, 0x54(sp)           |     *(var_54h) = s3;
    0x000058e4 sw s2, 0x50(sp)           |     *(var_50h) = s2;
    0x000058e8 sw s0, 0x48(sp)           |     *(var_48h) = s0;
    0x000058ec sw v0, 0x44(sp)           |     *(var_44h) = v0;
    0x000058f0 move v0, zero             |     v0 = 0;
                                         |     if (a0 == 0) {
    0x000058f4 beqz a0, 0x599c           |         goto label_2;
                                         |     }
    0x000058f8 move s0, a1               |     s0 = a1;
                                         |     if (a1 == 0) {
    0x000058fc beqz a1, 0x599c           |         goto label_2;
                                         |     }
    0x00005900 lw s2, 4(a0)              |     s2 = *((a0 + 1));
    0x00005904 lw t9, -0x7d3c(gp)        |     t9 = sym.imp.av_image_read_pixels_c;
    0x00005908 move s4, a0               |     s4 = a0;
    0x0000590c move s5, a2               |     s5 = a2;
    0x00005910 move a1, s2               |     a1 = s2;
    0x00005914 move a2, zero             |     a2 = 0;
    0x00005918 move a0, s0               |     a0 = s0;
    0x0000591c jalr t9                   |     t9 ();
    0x00005920 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x00005924 beqz v0, 0x5998           |         goto label_0;
                                         |     }
    0x00005928 lw t9, -0x7d3c(gp)        |     t9 = sym.imp.av_image_read_pixels_c;
                                         |     if (s5 == 0) {
    0x0000592c beqz s5, 0x5998           |         goto label_0;
                                         |     }
    0x00005930 move a2, zero             |     a2 = 0;
    0x00005934 move a1, s2               |     a1 = s2;
    0x00005938 move a0, s5               |     a0 = s5;
    0x0000593c jalr t9                   |     t9 ();
    0x00005940 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x00005944 beqz v0, 0x5998           |         goto label_0;
                                         |     }
    0x00005948 lw t9, -0x7bb8(gp)        |     t9 = sym.imp.av_image_get_width;
    0x0000594c move a0, s0               |     a0 = s0;
    0x00005950 jalr t9                   |     t9 ();
    0x00005954 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005958 move a0, s0               |     a0 = s0;
    0x0000595c lw t9, -0x7d94(gp)        |     t9 = sym.imp.av_image_get_height;
    0x00005960 move s3, v0               |     s3 = v0;
    0x00005964 jalr t9                   |     t9 ();
    0x00005968 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x0000596c move a0, s5               |     a0 = s5;
    0x00005970 lw t9, -0x7bb8(gp)        |     t9 = sym.imp.av_image_get_width;
    0x00005974 move s6, v0               |     s6 = v0;
    0x00005978 jalr t9                   |     t9 ();
    0x0000597c lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (s3 != v0) {
    0x00005980 bne s3, v0, 0x5998        |         goto label_0;
                                         |     }
    0x00005984 lw t9, -0x7d94(gp)        |     t9 = sym.imp.av_image_get_height;
    0x00005988 move a0, s5               |     a0 = s5;
    0x0000598c jalr t9                   |     t9 ();
    0x00005990 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005994 beq s6, v0, 0x59d8        |     
                                         |     while (s3 != v0) {
                                         | label_0:
    0x00005998 move v0, zero             |         v0 = 0;
                                         | label_2:
    0x0000599c lw a0, 0x44(sp)           |         a0 = *(var_44h);
    0x000059a0 lw v1, (s1)               |         v1 = *(s1);
    0x000059a4 lw ra, 0x6c(sp)           |         ra = *(var_6ch);
                                         |         if (a0 != v1) {
    0x000059a8 bne a0, v1, 0x5d6c        |             goto label_5;
                                         |         }
    0x000059ac lw fp, 0x68(sp)           |         fp = *(var_68h);
    0x000059b0 lw s7, 0x64(sp)           |         s7 = *(var_64h);
    0x000059b4 lw s6, 0x60(sp)           |         s6 = *(var_60h);
    0x000059b8 lw s5, 0x5c(sp)           |         s5 = *(var_5ch);
    0x000059bc lw s4, 0x58(sp)           |         s4 = *(var_58h);
    0x000059c0 lw s3, 0x54(sp)           |         s3 = *(var_54h);
    0x000059c4 lw s2, 0x50(sp)           |         s2 = *(var_50h);
    0x000059c8 lw s1, 0x4c(sp)           |         s1 = *(var_4ch);
    0x000059cc lw s0, 0x48(sp)           |         s0 = *(var_48h);
    0x000059d0 addiu sp, sp, 0x70        |         
    0x000059d4 jr ra                     |         return v0;
    0x000059d8 lw t9, -0x7d18(gp)        |         t9 = sym.imp.av_image_get_type_c;
    0x000059dc move a1, s2               |         a1 = s2;
    0x000059e0 move a0, s0               |         a0 = s0;
    0x000059e4 jalr t9                   |         t9 ();
    0x000059e8 move s3, v0               |         s3 = v0;
    0x000059ec addiu v0, zero, 5         |         v0 = 5;
    0x000059f0 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x000059f4 bne s3, v0, 0x5998        |         
                                         |     }
    0x000059f8 lw t9, -0x7d18(gp)        |     t9 = sym.imp.av_image_get_type_c;
    0x000059fc move a1, s2               |     a1 = s2;
    0x00005a00 move a0, s5               |     a0 = s5;
    0x00005a04 jalr t9                   |     t9 ();
    0x00005a08 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != s3) {
    0x00005a0c bne v0, s3, 0x5998        |         goto label_0;
                                         |     }
    0x00005a10 lw t9, -0x7ce8(gp)        |     t9 = sym.imp.av_image_get_lod;
    0x00005a14 move a0, s0               |     a0 = s0;
    0x00005a18 lw s6, 4(s4)              |     s6 = *((s4 + 1));
    0x00005a1c jalr t9                   |     t9 ();
    0x00005a20 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005a24 move a2, zero             |     a2 = 0;
    0x00005a28 move a1, v0               |     a1 = v0;
    0x00005a2c lw t9, -0x7e64(gp)        |     t9 = sym.imp.av_image_copy;
    0x00005a30 move a0, s0               |     a0 = s0;
    0x00005a34 jalr t9                   |     t9 ();
    0x00005a38 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005a3c move a3, zero             |     a3 = 0;
    0x00005a40 addiu a2, zero, 0x22      |     a2 = 0x22;
    0x00005a44 lw t9, -0x7cd4(gp)        |     t9 = sym.imp.av_pixop_single;
    0x00005a48 move a1, s6               |     a1 = s6;
    0x00005a4c move a0, v0               |     a0 = v0;
    0x00005a50 sw v0, 0x2c(sp)           |     *(var_2ch) = v0;
    0x00005a54 move s3, v0               |     s3 = v0;
    0x00005a58 jalr t9                   |     t9 ();
    0x00005a5c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005a60 lw t9, -0x7ce8(gp)        |     t9 = sym.imp.av_image_get_lod;
    0x00005a64 move a0, s5               |     a0 = s5;
    0x00005a68 jalr t9                   |     t9 ();
    0x00005a6c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005a70 move a2, zero             |     a2 = 0;
    0x00005a74 move a1, v0               |     a1 = v0;
    0x00005a78 lw t9, -0x7e64(gp)        |     t9 = sym.imp.av_image_copy;
    0x00005a7c move a0, s5               |     a0 = s5;
    0x00005a80 jalr t9                   |     t9 ();
    0x00005a84 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005a88 move a3, zero             |     a3 = 0;
    0x00005a8c addiu a2, zero, 0x22      |     a2 = 0x22;
    0x00005a90 lw t9, -0x7cd4(gp)        |     t9 = sym.imp.av_pixop_single;
    0x00005a94 move a1, s6               |     a1 = s6;
    0x00005a98 move a0, v0               |     a0 = v0;
    0x00005a9c sw v0, 0x30(sp)           |     *(var_30h) = v0;
    0x00005aa0 move s2, v0               |     s2 = v0;
    0x00005aa4 jalr t9                   |     t9 ();
    0x00005aa8 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005aac addiu v0, zero, 0x27      |     v0 = 0x27;
    0x00005ab0 move a3, zero             |     a3 = 0;
    0x00005ab4 lw t9, -0x7c30(gp)        |     t9 = sym.imp.av_pixop_double;
    0x00005ab8 move a1, s2               |     a1 = s2;
    0x00005abc move a0, s3               |     a0 = s3;
    0x00005ac0 move a2, s6               |     a2 = s6;
    0x00005ac4 sw zero, 0x14(sp)         |     *(var_14h) = 0;
    0x00005ac8 sw v0, 0x10(sp)           |     *(var_10h_2) = v0;
    0x00005acc jalr t9                   |     t9 ();
    0x00005ad0 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005ad4 addiu a2, sp, 0x38        |     a2 = sp + 0x38;
    0x00005ad8 move a1, s6               |     a1 = s6;
    0x00005adc lw t9, -0x7d3c(gp)        |     t9 = sym.imp.av_image_read_pixels_c;
    0x00005ae0 move a0, s0               |     a0 = s0;
    0x00005ae4 sw v0, 0x34(sp)           |     *(var_34h) = v0;
    0x00005ae8 move s2, v0               |     s2 = v0;
    0x00005aec jalr t9                   |     t9 ();
    0x00005af0 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005af4 addiu a2, sp, 0x3c        |     a2 = sp + 0x3c;
    0x00005af8 move a1, s6               |     a1 = s6;
    0x00005afc lw t9, -0x7d3c(gp)        |     t9 = sym.imp.av_image_read_pixels_c;
    0x00005b00 move a0, s5               |     a0 = s5;
    0x00005b04 move s7, v0               |     s7 = v0;
    0x00005b08 jalr t9                   |     t9 ();
    0x00005b0c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005b10 addiu a2, sp, 0x40        |     a2 = sp + 0x40;
    0x00005b14 move a1, s6               |     a1 = s6;
    0x00005b18 lw t9, -0x7d3c(gp)        |     t9 = sym.imp.av_image_read_pixels_c;
    0x00005b1c move a0, s2               |     a0 = s2;
    0x00005b20 move s2, v0               |     s2 = v0;
    0x00005b24 jalr t9                   |     t9 ();
    0x00005b28 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005b2c move a0, s0               |     a0 = s0;
    0x00005b30 lw t9, -0x7bb8(gp)        |     t9 = sym.imp.av_image_get_width;
    0x00005b34 move s3, v0               |     s3 = v0;
    0x00005b38 jalr t9                   |     t9 ();
    0x00005b3c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005b40 move a0, s0               |     a0 = s0;
    0x00005b44 lw t9, -0x7d94(gp)        |     t9 = sym.imp.av_image_get_height;
    0x00005b48 sw v0, 0x24(sp)           |     *(var_24h_2) = v0;
    0x00005b4c jalr t9                   |     t9 ();
    0x00005b50 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005b54 lw a0, (s4)               |     a0 = *(s4);
    0x00005b58 lw t9, -0x7f6c(gp)        |     t9 = sym.hist_clear;
    0x00005b5c sw v0, 0x20(sp)           |     *(var_20h) = v0;
    0x00005b60 bal 0x8574                |     sym_hist_clear ();
    0x00005b64 lw v0, 0x20(sp)           |     v0 = *(var_20h);
    0x00005b68 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 <= 0) {
    0x00005b6c blez v0, 0x5c40           |         goto label_6;
                                         |     }
    0x00005b70 lw a2, 0x24(sp)           |     a2 = *(var_24h_2);
    0x00005b74 move fp, zero             |     fp = 0;
    0x00005b78 ori t2, zero, 0xffff      |     t2 = 0xffff;
    0x00005b7c lw s0, 0x38(sp)           |     s0 = *(var_38h);
                                         | label_1:
    0x00005b80 lw s6, 0x3c(sp)           |     s6 = *(var_3ch);
    0x00005b84 lw a1, 0x40(sp)           |     a1 = *(var_40h);
    0x00005b88 mul s0, fp, s0            |     __asm ("mul s0, fp, s0");
    0x00005b8c mul s6, fp, s6            |     __asm ("mul s6, fp, s6");
    0x00005b90 mul a1, fp, a1            |     __asm ("mul a1, fp, a1");
                                         |     if (a2 <= 0) {
    0x00005b94 blez a2, 0x5c34           |         goto label_7;
                                         |     }
    0x00005b98 addu s5, a2, s0           |     s5 = a2 + s0;
    0x00005b9c subu s6, s6, s0           |     __asm ("subu s6, s6, s0");
    0x00005ba0 subu a1, a1, s0           |     __asm ("subu a1, a1, s0");
    0x00005ba4 lbux v1, s0(s7)           |     __asm ("lbux v1, s0(s7)");
                                         |     do {
    0x00005ba8 addiu v1, v1, -0xb        |         v1 += -0xb;
    0x00005bac sltiu v1, v1, 0xe5        |         v1 = (v1 < 0xe5) ? 1 : 0;
                                         |         if (v1 != 0) {
    0x00005bb0 beql v1, zero, 0x5c2c     |             
    0x00005bb4 addiu s0, s0, 1           |             s0++;
    0x00005bb8 addu v1, s6, s0           |             v1 = s6 + s0;
    0x00005bbc lbux v1, v1(s2)           |             __asm ("lbux v1, v1(s2)");
    0x00005bc0 addiu v1, v1, -0xb        |             v1 += -0xb;
    0x00005bc4 andi v1, v1, 0xff         |             v1 &= 0xff;
    0x00005bc8 sltiu v1, v1, 0xe5        |             v1 = (v1 < 0xe5) ? 1 : 0;
                                         |             if (v1 == 0) {
    0x00005bcc beql v1, zero, 0x5c2c     |                 goto label_8;
                                         |             }
    0x00005bd0 addiu s0, s0, 1           |             s0++;
    0x00005bd4 addu v1, a1, s0           |             v1 = a1 + s0;
    0x00005bd8 lw a0, (s4)               |             a0 = *(s4);
    0x00005bdc lbux v1, v1(s3)           |             __asm ("lbux v1, v1(s3)");
    0x00005be0 lw t4, (a0)               |             t4 = *(a0);
    0x00005be4 sll t3, v1, 2             |             t3 = v1 << 2;
    0x00005be8 slt v1, t3, t4            |             v1 = (t3 < t4) ? 1 : 0;
    0x00005bec lw t3, 0xc(a0)            |             t3 = *((a0 + 3));
                                         |             if (v1 == 0) {
    0x00005bf0 bnel v1, zero, 0x5d1c     |                 goto label_9;
                                         |             }
    0x00005bf4 lw t5, 4(a0)              |             t5 = *((a0 + 1));
    0x00005bf8 slt v1, t3, t5            |             v1 = (t3 < t5) ? 1 : 0;
                                         |             if (v1 != 0) {
    0x00005bfc movz t3, t5, v1           |                 t3 = t5;
                                         |             }
    0x00005c00 subu v1, t3, t4           |             __asm ("subu v1, t3, t4");
    0x00005c04 lw t3, 0xc(a0)            |             t3 = *((a0 + 3));
    0x00005c08 srav v1, v1, t3           |             __asm ("srav v1, v1, t3");
    0x00005c0c sll v1, v1, 1             |             v1 <<= 1;
    0x00005c10 addu v1, a0, v1           |             v1 = a0 + v1;
    0x00005c14 lhu t3, 0x10(v1)          |             t3 = *((v1 + 8));
    0x00005c18 addiu t3, t3, 1           |             t3++;
    0x00005c1c andi t3, t3, 0xffff       |             t3 &= 0xffff;
    0x00005c20 sh t3, 0x10(v1)           |             *((v1 + 8)) = t3;
                                         |             if (t3 == t2) {
    0x00005c24 beq t3, t2, 0x5d40        |                 goto label_10;
                                         |             }
                                         | label_3:
    0x00005c28 addiu s0, s0, 1           |             s0++;
                                         |         }
                                         | label_8:
    0x00005c2c lbux v1, s0(s7)           |         __asm ("lbux v1, s0(s7)");
    0x00005c30 bnel s0, s5, 0x5ba8       |         
                                         |     } while (s0 == s5);
                                         | label_7:
    0x00005c34 addiu fp, fp, 1           |     fp++;
    0x00005c38 lw s0, 0x38(sp)           |     s0 = *(var_38h);
                                         |     if (v0 == fp) {
    0x00005c3c bnel v0, fp, 0x5b80       |         goto label_1;
                                         |     }
                                         | label_6:
    0x00005c40 lw t9, -0x7cb0(gp)        |     t9 = sym.imp.av_image_delete;
    0x00005c44 lw a0, 0x2c(sp)           |     a0 = *(var_2ch);
    0x00005c48 jalr t9                   |     t9 ();
    0x00005c4c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005c50 lw t9, -0x7cb0(gp)        |     t9 = sym.imp.av_image_delete;
    0x00005c54 lw a0, 0x30(sp)           |     a0 = *(var_30h);
    0x00005c58 jalr t9                   |     t9 ();
    0x00005c5c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005c60 lw t9, -0x7cb0(gp)        |     t9 = sym.imp.av_image_delete;
    0x00005c64 lw a0, 0x34(sp)           |     a0 = *(var_34h);
    0x00005c68 jalr t9                   |     t9 ();
    0x00005c6c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005c70 lw t9, -0x7f68(gp)        |     t9 = sym.hist_peak;
    0x00005c74 lw a0, (s4)               |     a0 = *(s4);
    0x00005c78 bal 0x85a4                |     sym_hist_peak ();
    0x00005c7c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005c80 lw t9, -0x7f9c(gp)        |     t9 = *(gp);
    0x00005c84 move a0, v0               |     a0 = v0;
    0x00005c88 bal 0xf6f0                |     fcn_0000f6f0 ();
    0x00005c8c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005c90 move a0, v0               |     a0 = v0;
    0x00005c94 lw v0, -0x7fd8(gp)        |     v0 = *(gp);
    0x00005c98 lw t9, -0x7fcc(gp)        |     t9 = *(gp);
    0x00005c9c lw a1, 0xe24(v0)          |     a1 = *((v0 + 905));
    0x00005ca0 bal 0xee40                |     fcn_0000ee40 ();
    0x00005ca4 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005ca8 move a0, v0               |     a0 = v0;
    0x00005cac lw v0, -0x7fd8(gp)        |     v0 = *(gp);
    0x00005cb0 lw t9, -0x7f64(gp)        |     t9 = *(gp);
    0x00005cb4 lw a1, 0xe28(v0)          |     a1 = *((v0 + 906));
    0x00005cb8 bal 0xf170                |     fcn_0000f170 ();
    0x00005cbc lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005cc0 lw t9, -0x7f60(gp)        |     t9 = *(gp);
    0x00005cc4 move a0, v0               |     a0 = v0;
    0x00005cc8 bal 0xfdc0                |     fcn_0000fdc0 ();
    0x00005ccc lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005cd0 move a0, v0               |     a0 = v0;
    0x00005cd4 move a1, v1               |     a1 = v1;
    0x00005cd8 lw v0, -0x7fd8(gp)        |     v0 = *(gp);
    0x00005cdc lw t9, -0x7f5c(gp)        |     t9 = *(gp);
    0x00005ce0 lw a2, 0xe30(v0)          |     a2 = *((v0 + 908));
    0x00005ce4 lw a3, 0xe34(v0)          |     a3 = *((v0 + 909));
    0x00005ce8 bal 0xf820                |     fcn_0000f820 ();
    0x00005cec lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005cf0 move a0, v0               |     a0 = v0;
    0x00005cf4 lw t9, -0x7ccc(gp)        |     t9 = sym.imp.exp;
    0x00005cf8 move a1, v1               |     a1 = v1;
    0x00005cfc jalr t9                   |     t9 ();
    0x00005d00 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005d04 move a0, v0               |     a0 = v0;
    0x00005d08 lw t9, -0x7f58(gp)        |     t9 = *(gp);
    0x00005d0c move a1, v1               |     a1 = v1;
    0x00005d10 bal 0xff00                |     fcn_0000ff00 ();
    0x00005d14 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005d18 b 0x599c                  |     goto label_2;
                                         | label_9:
    0x00005d1c move v1, zero             |     v1 = 0;
    0x00005d20 srav v1, v1, t3           |     __asm ("srav v1, v1, t3");
    0x00005d24 sll v1, v1, 1             |     v1 <<= 1;
    0x00005d28 addu v1, a0, v1           |     v1 = a0 + v1;
    0x00005d2c lhu t3, 0x10(v1)          |     t3 = *((v1 + 8));
    0x00005d30 addiu t3, t3, 1           |     t3++;
    0x00005d34 andi t3, t3, 0xffff       |     t3 &= 0xffff;
    0x00005d38 sh t3, 0x10(v1)           |     *((v1 + 8)) = t3;
                                         |     if (t3 != t2) {
    0x00005d3c bne t3, t2, 0x5c28        |         goto label_3;
                                         |     }
                                         | label_10:
    0x00005d40 lw t9, -0x7f54(gp)        |     t9 = sym.hist_rescale;
    0x00005d44 sw a1, 0x28(sp)           |     *(var_28h) = a1;
    0x00005d48 sw v0, 0x24(sp)           |     *(var_24h_2) = v0;
    0x00005d4c sw a2, 0x20(sp)           |     *(var_20h) = a2;
    0x00005d50 bal 0x8738                |     sym_hist_rescale ();
    0x00005d54 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00005d58 ori t2, zero, 0xffff      |     t2 = 0xffff;
    0x00005d5c lw a1, 0x28(sp)           |     a1 = *(var_28h);
    0x00005d60 lw v0, 0x24(sp)           |     v0 = *(var_24h_2);
    0x00005d64 lw a2, 0x20(sp)           |     a2 = *(var_20h);
    0x00005d68 b 0x5c28                  |     goto label_3;
                                         | label_5:
    0x00005d6c lw t9, -0x7df4(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x00005d70 jalr t9                   |     t9 ();
    0x00005d74 nop                       |     
    0x00005d78 nop                       |     
    0x00005d7c nop                       |     
    0x00005d80 lui gp, 2                 |     
    0x00005d84 addiu gp, gp, 0x6440      |     
    0x00005d88 addu gp, gp, t9           |     gp += t9;
    0x00005d8c addiu sp, sp, -0x28       |     
    0x00005d90 sw gp, 0x18(sp)           |     *(var_18h_2) = gp;
    0x00005d94 sw ra, 0x24(sp)           |     *(var_24h) = ra;
    0x00005d98 move v0, a2               |     v0 = a2;
    0x00005d9c beqz a2, 0x5dd8           |     
                                         |     while (1) {
                                         | label_4:
    0x00005da0 lw a3, -0x7fdc(gp)        |         a3 = *((gp - 8183));
    0x00005da4 sll a0, a0, 2             |         a0 <<= 2;
                                         |         /* section..data.rel.ro */
    0x00005da8 addiu a3, a3, 0x3fc4      |         a3 += 0x3fc4;
    0x00005dac lw a2, -0x7fd8(gp)        |         a2 = *(gp);
    0x00005db0 lw t9, -0x7bf8(gp)        |         t9 = sym.imp.__fprintf_chk
    0x00005db4 lwx a3, a0(a3)            |         __asm ("lwx a3, a0(a3)");
    0x00005db8 sw a1, 0x10(sp)           |         *(var_10h) = a1;
                                         |         /* esilref: '&s&s
' */
    0x00005dbc addiu a2, a2, 0xe38       |         a2 += 0xe38;
    0x00005dc0 addiu a1, zero, 1         |         a1 = 1;
    0x00005dc4 move a0, v0               |         a0 = v0;
    0x00005dc8 jalr t9                   |         t9 ();
    0x00005dcc lw ra, 0x24(sp)           |         ra = *(var_24h);
    0x00005dd0 addiu sp, sp, 0x28        |         
    0x00005dd4 jr ra                     |         return v0;
                                         |         if (a0 == 0) {
    0x00005dd8 beql a0, zero, 0x5dec     |             goto label_11;
                                         |         }
    0x00005ddc lw v0, -0x7e38(gp)        |         v0 = *((gp - 8078));
    0x00005de0 lw v0, -0x7d58(gp)        |         v0 = *((gp - 8022));
    0x00005de4 lw v0, (v0)               |         v0 = *(v0);
    0x00005de8 b 0x5da0                  |         
                                         |     }
                                         | label_11:
    0x00005dec lw v0, (v0)               |     v0 = *(v0);
    0x00005df0 b 0x5da0                  |     goto label_4;
                                         | }

[*] Function fprintf used 2 times motion