[*] Binary protection state of temperature_ctrld

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


[*] Function strcpy tear down of temperature_ctrld

    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/temperature_ctrld @ 0xa0e4 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.humidity_base_update_safety_state ()         | void humidity_base_update_safety_state () {
    0x0000a0e4 lui gp, 4                                     |     
    0x0000a0e8 addiu gp, gp, 0x7f2c                          |     
    0x0000a0ec addu gp, gp, t9                               |     gp += t9;
    0x0000a0f0 addiu sp, sp, -0x30                           |     
    0x0000a0f4 sw s0, 0x24(sp)                               |     *(var_24h) = s0;
    0x0000a0f8 lw s0, 0x20(a0)                               |     s0 = *((a0 + 8));
    0x0000a0fc sw gp, 0x18(sp)                               |     *(var_18h) = gp;
    0x0000a100 sw s1, 0x28(sp)                               |     *(var_28h) = s1;
    0x0000a104 sw ra, 0x2c(sp)                               |     *(var_2ch) = ra;
    0x0000a108 move s1, a0                                   |     s1 = a0;
                                                             |     if (s0 == 0) {
    0x0000a10c beqz s0, 0xa160                               |         goto label_0;
                                                             |     }
    0x0000a110 addiu v0, zero, 4                             |     v0 = 4;
    0x0000a114 lw t9, -0x7f44(gp)                            |     t9 = *(gp);
                                                             |     if (s0 != v0) {
    0x0000a118 bne s0, v0, 0xa1ac                            |         goto label_1;
                                                             |     }
    0x0000a11c lw a0, 0x1c(a0)                               |     a0 = *((a0 + 7));
    0x0000a120 jalr t9                                       |     t9 ();
    0x0000a124 lw gp, 0x18(sp)                               |     gp = *(var_18h);
    0x0000a128 lw a0, 0x10(s1)                               |     a0 = *((s1 + 4));
    0x0000a12c lw t9, -0x7f84(gp)                            |     t9 = *(gp);
    0x0000a130 move a1, v0                                   |     a1 = v0;
    0x0000a134 jalr t9                                       |     t9 ();
    0x0000a138 lw ra, 0x2c(sp)                               |     ra = *(var_2ch);
                                                             |     if (v0 >= 0) {
    0x0000a13c bgez v0, 0xa14c                               |         goto label_2;
                                                             |     }
    0x0000a140 sw zero, 0x20(s1)                             |     *((s1 + 8)) = 0;
    0x0000a144 move s0, zero                                 |     s0 = 0;
    0x0000a148 lw ra, 0x2c(sp)                               |     ra = *(var_2ch);
                                                             |     do {
                                                             | label_2:
    0x0000a14c move v0, s0                                   |         v0 = s0;
    0x0000a150 lw s1, 0x28(sp)                               |         s1 = *(var_28h);
    0x0000a154 lw s0, 0x24(sp)                               |         s0 = *(var_24h);
    0x0000a158 addiu sp, sp, 0x30                            |         
    0x0000a15c jr ra                                         |         return v0;
                                                             | label_0:
    0x0000a160 lw t9, -0x7f70(gp)                            |         t9 = *(gp);
    0x0000a164 move a0, a1                                   |         a0 = a1;
    0x0000a168 lw a1, 0x1c(s1)                               |         a1 = *((s1 + 7));
    0x0000a16c jalr t9                                       |         t9 ();
    0x0000a170 lw gp, 0x18(sp)                               |         gp = *(var_18h);
    0x0000a174 lw a0, 0x10(s1)                               |         a0 = *((s1 + 4));
    0x0000a178 lw t9, -0x7f80(gp)                            |         t9 = *(gp);
    0x0000a17c move a1, v0                                   |         a1 = v0;
    0x0000a180 jalr t9                                       |         t9 ();
    0x0000a184 lw ra, 0x2c(sp)                               |         ra = *(var_2ch);
    0x0000a188 blez v0, 0xa14c                               |         
                                                             |     } while (v0 <= 0);
    0x0000a18c addiu v0, zero, 4                             |     v0 = 4;
    0x0000a190 addiu s0, zero, 4                             |     s0 = 4;
    0x0000a194 sw v0, 0x20(s1)                               |     *((s1 + 8)) = v0;
    0x0000a198 move v0, s0                                   |     v0 = s0;
    0x0000a19c lw s1, 0x28(sp)                               |     s1 = *(var_28h);
    0x0000a1a0 lw s0, 0x24(sp)                               |     s0 = *(var_24h);
    0x0000a1a4 addiu sp, sp, 0x30                            |     
    0x0000a1a8 jr ra                                         |     return v0;
                                                             | label_1:
    0x0000a1ac lw a2, -0x7fc8(gp)                            |     a2 = *(gp);
    0x0000a1b0 lw t9, -0x7b74(gp)                            |     t9 = sym.imp.__syslog_chk;
    0x0000a1b4 move a3, s0                                   |     a3 = s0;
                                                             |     /* str.Unknown_safety_state__d */
    0x0000a1b8 addiu a2, a2, 0x2fb0                          |     a2 += 0x2fb0;
    0x0000a1bc addiu a1, zero, 1                             |     a1 = 1;
    0x0000a1c0 addiu a0, zero, 4                             |     a0 = 4;
    0x0000a1c4 jalr t9                                       |     t9 ();
    0x0000a1c8 lw gp, 0x18(sp)                               |     gp = *(var_18h);
    0x0000a1cc sw zero, 0x10(sp)                             |     *(var_10h) = 0;
    0x0000a1d0 addiu a2, zero, 0x73                          |     a2 = 0x73;
    0x0000a1d4 lw a3, -0x7fc8(gp)                            |     a3 = *(gp);
    0x0000a1d8 lw a1, -0x7fc8(gp)                            |     a1 = *(gp);
    0x0000a1dc lw t9, -0x7a70(gp)                            |     t9 = sym.imp.g_assertion_message_expr;
                                                             |     /* str.humidity_base_update_safety_state */
    0x0000a1e0 addiu a3, a3, 0x372c                          |     a3 += 0x372c;
                                                             |     /* str.humidity_base.c */
    0x0000a1e4 addiu a1, a1, 0x3680                          |     a1 += 0x3680;
    0x0000a1e8 move a0, zero                                 |     a0 = 0;
    0x0000a1ec jalr t9                                       |     t9 ();
    0x0000a1f0 lui gp, 4                                     |     
    0x0000a1f4 addiu gp, gp, 0x7e20                          |     
    0x0000a1f8 addu gp, gp, t9                               |     gp += t9;
    0x0000a1fc addiu sp, sp, -0x28                           |     
    0x0000a200 lw t9, -0x7f1c(gp)                            |     t9 = sym.humidity_base_get_type;
    0x0000a204 sw gp, 0x10(sp)                               |     *(var_10h_2) = gp;
    0x0000a208 sw s1, 0x20(sp)                               |     *(var_20h) = s1;
    0x0000a20c sw s0, 0x1c(sp)                               |     *(var_1ch) = s0;
    0x0000a210 sw ra, 0x24(sp)                               |     *(var_24h_2) = ra;
    0x0000a214 move s0, a0                                   |     s0 = a0;
    0x0000a218 move s1, a1                                   |     s1 = a1;
    0x0000a21c bal 0x9ee0                                    |     sym_humidity_base_get_type ();
    0x0000a220 lw gp, 0x10(sp)                               |     gp = *(var_10h_2);
                                                             |     if (s0 != 0) {
    0x0000a224 beqz s0, 0xa26c                               |         
    0x0000a228 lw v1, (s0)                                   |         v1 = *(s0);
    0x0000a22c lw t9, -0x7b70(gp)                            |         t9 = sym.imp.g_type_check_instance_is_a;
                                                             |         if (v1 != 0) {
    0x0000a230 beqz v1, 0xa240                               |             
    0x0000a234 lw v1, (v1)                                   |             v1 = *(v1);
    0x0000a238 lw ra, 0x24(sp)                               |             ra = *(var_24h_2);
                                                             |             if (v1 == v0) {
    0x0000a23c beq v1, v0, 0xa258                            |                 goto label_3;
                                                             |             }
                                                             |         }
    0x0000a240 move a1, v0                                   |         a1 = v0;
    0x0000a244 move a0, s0                                   |         a0 = s0;
    0x0000a248 jalr t9                                       |         t9 ();
    0x0000a24c lw gp, 0x10(sp)                               |         gp = *(var_10h_2);
                                                             |         if (v0 == 0) {
    0x0000a250 beqz v0, 0xa26c                               |             goto label_4;
                                                             |         }
    0x0000a254 lw ra, 0x24(sp)                               |         ra = *(var_24h_2);
                                                             | label_3:
    0x0000a258 sw s1, 0xc(s0)                                |         *((s0 + 3)) = s1;
    0x0000a25c lw s1, 0x20(sp)                               |         s1 = *(var_20h);
    0x0000a260 lw s0, 0x1c(sp)                               |         s0 = *(var_1ch);
    0x0000a264 addiu sp, sp, 0x28                            |         
    0x0000a268 jr ra                                         |         return v0;
                                                             |     }
                                                             | label_4:
    0x0000a26c lw a2, -0x7fc8(gp)                            |     a2 = *(gp);
    0x0000a270 lw a1, -0x7fc8(gp)                            |     a1 = *(gp);
    0x0000a274 lw ra, 0x24(sp)                               |     ra = *(var_24h_2);
    0x0000a278 lw s1, 0x20(sp)                               |     s1 = *(var_20h);
    0x0000a27c lw s0, 0x1c(sp)                               |     s0 = *(var_1ch);
    0x0000a280 lw t9, -0x7b30(gp)                            |     t9 = sym.imp.g_return_if_fail_warning;
                                                             |     /* str.IS_HUMIDITY_BASE_self_ */
    0x0000a284 addiu a2, a2, 0x3668                          |     a2 += 0x3668;
                                                             |     /* str.humidity_base_set_sensor_id */
    0x0000a288 addiu a1, a1, 0x3710                          |     a1 += 0x3710;
    0x0000a28c move a0, zero                                 |     a0 = 0;
    0x0000a290 addiu sp, sp, 0x28                            |     
    0x0000a294 jr t9                                         |     return t9 ();
                                                             | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/temperature_ctrld @ 0x18348 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.temperature_controller_setup_params ()       | void temperature_controller_setup_params () {
    0x00018348 lui gp, 4                                     |     
    0x0001834c addiu gp, gp, -0x6338                         |     
    0x00018350 addu gp, gp, t9                               |     gp += t9;
    0x00018354 addiu sp, sp, -0x40                           |     
    0x00018358 lw v0, 0x1c(a0)                               |     v0 = *((a0 + 7));
    0x0001835c sw gp, 0x10(sp)                               |     *(var_10h) = gp;
    0x00018360 sw s3, 0x28(sp)                               |     *(var_28h) = s3;
    0x00018364 sw s2, 0x24(sp)                               |     *(var_24h) = s2;
    0x00018368 sw ra, 0x3c(sp)                               |     *(var_3ch) = ra;
    0x0001836c sw s7, 0x38(sp)                               |     *(var_38h) = s7;
    0x00018370 sw s6, 0x34(sp)                               |     *(var_34h) = s6;
    0x00018374 sw s5, 0x30(sp)                               |     *(var_30h) = s5;
    0x00018378 sw s4, 0x2c(sp)                               |     *(var_2ch) = s4;
    0x0001837c sw s1, 0x20(sp)                               |     *(var_20h) = s1;
    0x00018380 sw s0, 0x1c(sp)                               |     *(var_1ch) = s0;
    0x00018384 move s2, a0                                   |     s2 = a0;
    0x00018388 move s3, a3                                   |     s3 = a3;
                                                             |     if (v0 <= 0) {
    0x0001838c blez v0, 0x18428                              |         goto label_2;
                                                             |     }
    0x00018390 move s4, a2                                   |     s4 = a2;
    0x00018394 addiu s0, a0, 0x24                            |     s0 = a0 + 0x24;
    0x00018398 move s1, zero                                 |     s1 = 0;
    0x0001839c b 0x183c0                                     |     
                                                             |     while (v0 == 0) {
    0x000183a0 lw a0, (s0)                                   |         a0 = *(s0);
    0x000183a4 addiu s1, s1, 1                               |         s1++;
    0x000183a8 bal 0x71c4                                    |         sym_temperature_base_setup_events ();
    0x000183ac lw v0, 0x1c(s2)                               |         v0 = *((s2 + 7));
    0x000183b0 lw gp, 0x10(sp)                               |         gp = *(var_10h);
    0x000183b4 slt v0, s1, v0                                |         v0 = (s1 < v0) ? 1 : 0;
    0x000183b8 addiu s0, s0, 4                               |         s0 += 4;
                                                             |         if (v0 == 0) {
    0x000183bc beqz v0, 0x18428                              |             goto label_2;
                                                             |         }
    0x000183c0 lw t9, -0x7df8(gp)                            |         t9 = sym.temperature_base_read_params;
    0x000183c4 lw a0, (s0)                                   |         a0 = *(s0);
    0x000183c8 move a1, s4                                   |         a1 = s4;
    0x000183cc bal 0x7d58                                    |         sym_temperature_base_read_params ();
    0x000183d0 lw gp, 0x10(sp)                               |         gp = *(var_10h);
    0x000183d4 addiu a1, zero, 1                             |         a1 = 1;
    0x000183d8 lw t9, -0x7df4(gp)                            |         t9 = sym.temperature_base_setup_events;
    0x000183dc beqz v0, 0x183a0                              |         
                                                             |     }
    0x000183e0 lw a2, -0x7fc8(gp)                            |     a2 = *(gp);
    0x000183e4 lw t9, -0x7b74(gp)                            |     t9 = sym.imp.__syslog_chk;
    0x000183e8 move a3, s1                                   |     a3 = s1;
                                                             |     /* str.Failure_reported_when_reading_parameter_file_for_temperature_sensor_number__d__n */
    0x000183ec addiu a2, a2, 0x5820                          |     a2 += 0x5820;
    0x000183f0 addiu a0, zero, 3                             |     a0 = 3;
    0x000183f4 jalr t9                                       |     t9 ();
    0x000183f8 lw ra, 0x3c(sp)                               |     ra = *(var_3ch);
    0x000183fc lw s7, 0x38(sp)                               |     s7 = *(var_38h);
    0x00018400 lw s6, 0x34(sp)                               |     s6 = *(var_34h);
    0x00018404 lw s5, 0x30(sp)                               |     s5 = *(var_30h);
    0x00018408 lw s4, 0x2c(sp)                               |     s4 = *(var_2ch);
    0x0001840c lw s3, 0x28(sp)                               |     s3 = *(var_28h);
    0x00018410 lw s2, 0x24(sp)                               |     s2 = *(var_24h);
    0x00018414 lw s1, 0x20(sp)                               |     s1 = *(var_20h);
    0x00018418 lw s0, 0x1c(sp)                               |     s0 = *(var_1ch);
    0x0001841c addiu v0, zero, -1                            |     v0 = -1;
    0x00018420 addiu sp, sp, 0x40                            |     
    0x00018424 jr ra                                         |     return v0;
                                                             | label_2:
    0x00018428 lw v0, 0x20(s2)                               |     v0 = *((s2 + 8));
    0x0001842c lw t9, -0x7df0(gp)                            |     t9 = sym.temperature_status_get_type;
                                                             |     if (v0 > 0) {
    0x00018430 bgtz v0, 0x18558                              |         goto label_3;
                                                             |     }
    0x00018434 lw v0, 0xa8(s2)                               |     v0 = *((s2 + 42));
                                                             |     if (v0 <= 0) {
    0x00018438 blezl v0, 0x185c0                             |         goto label_4;
                                                             |     }
    0x0001843c lw v0, 0xcc(s2)                               |     v0 = *((s2 + 51));
                                                             | label_1:
    0x00018440 lw s4, -0x7fc8(gp)                            |     s4 = *(gp);
    0x00018444 lw s5, -0x7fc8(gp)                            |     s5 = *(gp);
    0x00018448 addiu s0, s2, 0xac                            |     s0 = s2 + 0xac;
    0x0001844c move s1, zero                                 |     s1 = 0;
                                                             |     /* esilref: 'Fan' */
    0x00018450 addiu s4, s4, 0x5f68                          |     s4 += 0x5f68;
                                                             |     /* esilref: 'fan' */
    0x00018454 addiu s5, s5, 0x4980                          |     s5 += 0x4980;
    0x00018458 b 0x184d0                                     |     
                                                             |     while (v0 == 0) {
                                                             | label_0:
    0x0001845c lw t9, -0x7f00(gp)                            |         t9 = sym.base_device_get_type;
    0x00018460 lw s6, (s0)                                   |         s6 = *(s0);
    0x00018464 bal 0xcbe8                                    |         sym_base_device_get_type ();
    0x00018468 lw gp, 0x10(sp)                               |         gp = *(var_10h);
    0x0001846c move a0, s6                                   |         a0 = s6;
    0x00018470 move a1, v0                                   |         a1 = v0;
    0x00018474 lw t9, -0x7bb0(gp)                            |         t9 = sym.imp.g_type_check_instance_cast;
    0x00018478 addiu s0, s0, 4                               |         s0 += 4;
    0x0001847c jalr t9                                       |         t9 ();
    0x00018480 lw gp, 0x10(sp)                               |         gp = *(var_10h);
    0x00018484 lw v0, (v0)                                   |         v0 = *(v0);
    0x00018488 lw s7, -4(s0)                                 |         s7 = *((s0 - 1));
    0x0001848c lw t9, -0x7f00(gp)                            |         t9 = sym.base_device_get_type;
    0x00018490 lw s6, 0x64(v0)                               |         s6 = *((v0 + 25));
    0x00018494 bal 0xcbe8                                    |         sym_base_device_get_type ();
    0x00018498 lw gp, 0x10(sp)                               |         gp = *(var_10h);
    0x0001849c move a1, v0                                   |         a1 = v0;
    0x000184a0 lw t9, -0x7bb0(gp)                            |         t9 = sym.imp.g_type_check_instance_cast;
    0x000184a4 move a0, s7                                   |         a0 = s7;
    0x000184a8 jalr t9                                       |         t9 ();
    0x000184ac move a0, v0                                   |         a0 = v0;
    0x000184b0 move a2, s4                                   |         a2 = s4;
    0x000184b4 move t9, s6                                   |         t9 = s6;
    0x000184b8 move a1, s5                                   |         a1 = s5;
    0x000184bc jalr t9                                       |         t9 ();
    0x000184c0 lw v0, 0xa8(s2)                               |         v0 = *((s2 + 42));
    0x000184c4 slt v0, s1, v0                                |         v0 = (s1 < v0) ? 1 : 0;
    0x000184c8 lw gp, 0x10(sp)                               |         gp = *(var_10h);
                                                             |         if (v0 == 0) {
    0x000184cc beqz v0, 0x185bc                              |             goto label_5;
                                                             |         }
    0x000184d0 lw t9, -0x7f00(gp)                            |         t9 = sym.base_device_get_type;
    0x000184d4 lw s6, (s0)                                   |         s6 = *(s0);
    0x000184d8 bal 0xcbe8                                    |         sym_base_device_get_type ();
    0x000184dc lw gp, 0x10(sp)                               |         gp = *(var_10h);
    0x000184e0 move a1, v0                                   |         a1 = v0;
    0x000184e4 lw t9, -0x7bb0(gp)                            |         t9 = sym.imp.g_type_check_instance_cast;
    0x000184e8 move a0, s6                                   |         a0 = s6;
    0x000184ec jalr t9                                       |         t9 ();
    0x000184f0 lw gp, 0x10(sp)                               |         gp = *(var_10h);
    0x000184f4 addiu a3, zero, 1                             |         a3 = 1;
    0x000184f8 move a2, s4                                   |         a2 = s4;
    0x000184fc lw t9, -0x7e30(gp)                            |         t9 = sym.base_device_read_params;
    0x00018500 move a1, s3                                   |         a1 = s3;
    0x00018504 move a0, v0                                   |         a0 = v0;
    0x00018508 bal 0xdd04                                    |         sym_base_device_read_params ();
    0x0001850c lw gp, 0x10(sp)                               |         gp = *(var_10h);
    0x00018510 lw t9, -0x7f00(gp)                            |         t9 = sym.base_device_get_type;
                                                             |         if (v0 != 0) {
    0x00018514 bnez v0, 0x186b0                              |             goto label_6;
                                                             |         }
    0x00018518 lw s6, (s0)                                   |         s6 = *(s0);
    0x0001851c bal 0xcbe8                                    |         sym_base_device_get_type ();
    0x00018520 lw gp, 0x10(sp)                               |         gp = *(var_10h);
    0x00018524 move a1, v0                                   |         a1 = v0;
    0x00018528 move a0, s6                                   |         a0 = s6;
    0x0001852c lw t9, -0x7bb0(gp)                            |         t9 = sym.imp.g_type_check_instance_cast;
    0x00018530 addiu s1, s1, 1                               |         s1++;
    0x00018534 jalr t9                                       |         t9 ();
    0x00018538 lw v0, 0x194(v0)                              |         v0 = *(v0);
    0x0001853c lw gp, 0x10(sp)                               |         gp = *(var_10h);
    0x00018540 beqz v0, 0x1845c                              |         
                                                             |     }
    0x00018544 lw t9, -0x7dec(gp)                            |     t9 = sym.fan_base_setup_events;
    0x00018548 lw a0, (s0)                                   |     a0 = *(s0);
    0x0001854c bal 0x10b20                                   |     sym_fan_base_setup_events ();
    0x00018550 lw gp, 0x10(sp)                               |     gp = *(var_10h);
    0x00018554 b 0x1845c                                     |     goto label_0;
                                                             | label_3:
    0x00018558 bal 0x64e4                                    |     sym_temperature_status_get_type ();
    0x0001855c nop                                           |     
    0x00018560 lw gp, 0x10(sp)                               |     gp = *(var_10h);
    0x00018564 move a1, zero                                 |     a1 = 0;
    0x00018568 lw t9, -0x7a78(gp)                            |     t9 = sym.imp.g_object_new;
    0x0001856c move a0, v0                                   |     a0 = v0;
    0x00018570 jalr t9                                       |     t9 ();
    0x00018574 lw gp, 0x10(sp)                               |     gp = *(var_10h);
    0x00018578 sw v0, 0x10c(s2)                              |     *(s2) = v0;
    0x0001857c lw t9, -0x7f94(gp)                            |     t9 = sym.temperature_base_get_type;
    0x00018580 move s0, v0                                   |     s0 = v0;
    0x00018584 bal 0x6d50                                    |     sym_temperature_base_get_type ();
    0x00018588 lw gp, 0x10(sp)                               |     gp = *(var_10h);
    0x0001858c move a1, v0                                   |     a1 = v0;
    0x00018590 lw t9, -0x7bb0(gp)                            |     t9 = sym.imp.g_type_check_instance_cast;
    0x00018594 move a0, s0                                   |     a0 = s0;
    0x00018598 jalr t9                                       |     t9 ();
    0x0001859c lw gp, 0x10(sp)                               |     gp = *(var_10h);
    0x000185a0 move a0, v0                                   |     a0 = v0;
    0x000185a4 lw t9, -0x7df4(gp)                            |     t9 = sym.temperature_base_setup_events;
    0x000185a8 move a1, zero                                 |     a1 = 0;
    0x000185ac bal 0x71c4                                    |     sym_temperature_base_setup_events ();
    0x000185b0 lw v0, 0xa8(s2)                               |     v0 = *((s2 + 42));
    0x000185b4 lw gp, 0x10(sp)                               |     gp = *(var_10h);
                                                             |     if (v0 > 0) {
    0x000185b8 bgtz v0, 0x18440                              |         goto label_1;
                                                             |     }
                                                             | label_5:
    0x000185bc lw v0, 0xcc(s2)                               |     v0 = *((s2 + 51));
                                                             | label_4:
    0x000185c0 lw s3, -0x7fc8(gp)                            |     s3 = *(gp);
                                                             |     if (v0 <= 0) {
    0x000185c4 blez v0, 0x186fc                              |         goto label_7;
                                                             |     }
    0x000185c8 lw s4, -0x7fc8(gp)                            |     s4 = *(gp);
    0x000185cc addiu s0, s2, 0xd0                            |     s0 = s2 + 0xd0;
    0x000185d0 move s1, zero                                 |     s1 = 0;
                                                             |     /* esilref: 'Heater' */
    0x000185d4 addiu s3, s3, 0x5f7c                          |     s3 += 0x5f7c;
                                                             |     /* str.heater */
    0x000185d8 addiu s4, s4, 0x4b20                          |     s4 += 0x4b20;
    0x000185dc b 0x18654                                     |     
                                                             |     while (v0 == 0) {
    0x000185e0 lw s5, (s0)                                   |         s5 = *(s0);
    0x000185e4 bal 0xcbe8                                    |         sym_base_device_get_type ();
    0x000185e8 lw gp, 0x10(sp)                               |         gp = *(var_10h);
    0x000185ec move a0, s5                                   |         a0 = s5;
    0x000185f0 move a1, v0                                   |         a1 = v0;
    0x000185f4 lw t9, -0x7bb0(gp)                            |         t9 = sym.imp.g_type_check_instance_cast;
    0x000185f8 addiu s1, s1, 1                               |         s1++;
    0x000185fc jalr t9                                       |         t9 ();
    0x00018600 lw gp, 0x10(sp)                               |         gp = *(var_10h);
    0x00018604 lw v0, (v0)                                   |         v0 = *(v0);
    0x00018608 lw s6, (s0)                                   |         s6 = *(s0);
    0x0001860c lw t9, -0x7f00(gp)                            |         t9 = sym.base_device_get_type;
    0x00018610 lw s5, 0x64(v0)                               |         s5 = *((v0 + 25));
    0x00018614 bal 0xcbe8                                    |         sym_base_device_get_type ();
    0x00018618 lw gp, 0x10(sp)                               |         gp = *(var_10h);
    0x0001861c move a1, v0                                   |         a1 = v0;
    0x00018620 move a0, s6                                   |         a0 = s6;
    0x00018624 lw t9, -0x7bb0(gp)                            |         t9 = sym.imp.g_type_check_instance_cast;
    0x00018628 addiu s0, s0, 4                               |         s0 += 4;
    0x0001862c jalr t9                                       |         t9 ();
    0x00018630 move a0, v0                                   |         a0 = v0;
    0x00018634 move a2, s3                                   |         a2 = s3;
    0x00018638 move t9, s5                                   |         t9 = s5;
    0x0001863c move a1, s4                                   |         a1 = s4;
    0x00018640 jalr t9                                       |         t9 ();
    0x00018644 lw v0, 0xcc(s2)                               |         v0 = *((s2 + 51));
    0x00018648 slt v0, s1, v0                                |         v0 = (s1 < v0) ? 1 : 0;
    0x0001864c lw gp, 0x10(sp)                               |         gp = *(var_10h);
                                                             |         if (v0 == 0) {
    0x00018650 beqz v0, 0x186fc                              |             goto label_7;
                                                             |         }
    0x00018654 lw t9, -0x7f00(gp)                            |         t9 = sym.base_device_get_type;
    0x00018658 lw s5, (s0)                                   |         s5 = *(s0);
    0x0001865c bal 0xcbe8                                    |         sym_base_device_get_type ();
    0x00018660 lw gp, 0x10(sp)                               |         gp = *(var_10h);
    0x00018664 move a1, v0                                   |         a1 = v0;
    0x00018668 lw t9, -0x7bb0(gp)                            |         t9 = sym.imp.g_type_check_instance_cast;
    0x0001866c move a0, s5                                   |         a0 = s5;
    0x00018670 jalr t9                                       |         t9 ();
    0x00018674 lw gp, 0x10(sp)                               |         gp = *(var_10h);
    0x00018678 lw a1, 0x50(sp)                               |         a1 = *(arg_50h);
    0x0001867c addiu a3, zero, 1                             |         a3 = 1;
    0x00018680 lw t9, -0x7e30(gp)                            |         t9 = sym.base_device_read_params;
    0x00018684 move a2, s3                                   |         a2 = s3;
    0x00018688 move a0, v0                                   |         a0 = v0;
    0x0001868c bal 0xdd04                                    |         sym_base_device_read_params ();
    0x00018690 lw gp, 0x10(sp)                               |         gp = *(var_10h);
    0x00018694 lw t9, -0x7f00(gp)                            |         t9 = sym.base_device_get_type;
    0x00018698 beqz v0, 0x185e0                              |         
                                                             |     }
    0x0001869c lw a2, -0x7fc8(gp)                            |     a2 = *(gp);
    0x000186a0 lw t9, -0x7b74(gp)                            |     t9 = sym.imp.__syslog_chk;
    0x000186a4 move a3, s1                                   |     a3 = s1;
                                                             |     /* str.Failure_reported_when_reading_parameter_file_for_heater_number__d__n */
    0x000186a8 addiu a2, a2, 0x5798                          |     a2 += 0x5798;
    0x000186ac b 0x186c0                                     |     goto label_8;
                                                             | label_6:
    0x000186b0 lw a2, -0x7fc8(gp)                            |     a2 = *(gp);
    0x000186b4 lw t9, -0x7b74(gp)                            |     t9 = sym.imp.__syslog_chk;
    0x000186b8 move a3, s1                                   |     a3 = s1;
                                                             |     /* str.Failure_reported_when_reading_parameter_file_for_fan_number__d__n */
    0x000186bc addiu a2, a2, 0x5714                          |     a2 += 0x5714;
                                                             | label_8:
    0x000186c0 addiu a1, zero, 1                             |     a1 = 1;
    0x000186c4 addiu a0, zero, 3                             |     a0 = 3;
    0x000186c8 jalr t9                                       |     t9 ();
    0x000186cc lw ra, 0x3c(sp)                               |     ra = *(var_3ch);
    0x000186d0 lw s7, 0x38(sp)                               |     s7 = *(var_38h);
    0x000186d4 lw s6, 0x34(sp)                               |     s6 = *(var_34h);
    0x000186d8 lw s5, 0x30(sp)                               |     s5 = *(var_30h);
    0x000186dc lw s4, 0x2c(sp)                               |     s4 = *(var_2ch);
    0x000186e0 lw s3, 0x28(sp)                               |     s3 = *(var_28h);
    0x000186e4 lw s2, 0x24(sp)                               |     s2 = *(var_24h);
    0x000186e8 lw s1, 0x20(sp)                               |     s1 = *(var_20h);
    0x000186ec lw s0, 0x1c(sp)                               |     s0 = *(var_1ch);
    0x000186f0 addiu v0, zero, -1                            |     v0 = -1;
    0x000186f4 addiu sp, sp, 0x40                            |     
    0x000186f8 jr ra                                         |     return v0;
                                                             | label_7:
    0x000186fc lw t9, -0x7de8(gp)                            |     t9 = sym.temperature_logger_start_log;
    0x00018700 move a0, s2                                   |     a0 = s2;
    0x00018704 bal 0x2088c                                   |     sym_temperature_logger_start_log ();
    0x00018708 lw ra, 0x3c(sp)                               |     ra = *(var_3ch);
    0x0001870c lw s7, 0x38(sp)                               |     s7 = *(var_38h);
    0x00018710 lw s6, 0x34(sp)                               |     s6 = *(var_34h);
    0x00018714 lw s5, 0x30(sp)                               |     s5 = *(var_30h);
    0x00018718 lw s4, 0x2c(sp)                               |     s4 = *(var_2ch);
    0x0001871c lw s3, 0x28(sp)                               |     s3 = *(var_28h);
    0x00018720 lw s2, 0x24(sp)                               |     s2 = *(var_24h);
    0x00018724 lw s1, 0x20(sp)                               |     s1 = *(var_20h);
    0x00018728 lw s0, 0x1c(sp)                               |     s0 = *(var_1ch);
    0x0001872c move v0, zero                                 |     v0 = 0;
    0x00018730 addiu sp, sp, 0x40                            |     
    0x00018734 jr ra                                         |     return v0;
                                                             | }

[*] Function strcpy used 1 times temperature_ctrld