.text:004D56F8 .text:004D56F8 # =============== S U B R O U T I N E ======================================= .text:004D56F8 .text:004D56F8 .text:004D56F8 .globl sub_4D56F8 .text:004D56F8 sub_4D56F8: # CODE XREF: getWPSPinCode+54p .text:004D56F8 # rt5592_wlan_Op+2C74p .text:004D56F8 # DATA XREF: ... .text:004D56F8 .text:004D56F8 var_88 = -0x88 .text:004D56F8 var_84 = -0x84 .text:004D56F8 var_80 = -0x80 .text:004D56F8 var_7C = -0x7C .text:004D56F8 var_78 = -0x78 .text:004D56F8 var_74 = -0x74 .text:004D56F8 var_70 = -0x70 .text:004D56F8 var_6C = -0x6C .text:004D56F8 var_68 = -0x68 .text:004D56F8 var_64 = -0x64 .text:004D56F8 saved_gp = -0x60 .text:004D56F8 mac_address = -0x58 .text:004D56F8 info_log_mac_address= -0x38 .text:004D56F8 oui = -0x20 .text:004D56F8 nic = -0x1C .text:004D56F8 saved_s0 = -0x18 .text:004D56F8 saved_s1 = -0x14 .text:004D56F8 saved_s2 = -0x10 .text:004D56F8 saved_s3 = -0xC .text:004D56F8 saved_s4 = -8 .text:004D56F8 saved_ra = -4 .text:004D56F8 .text:004D56F8 li $gp, 0x1ACF08 .text:004D5700 addu $gp, $t9 .text:004D5704 addiu $sp, -0x98 .text:004D5708 sw $ra, 0x98+saved_ra($sp) .text:004D570C sw $s4, 0x98+saved_s4($sp) .text:004D5710 sw $s3, 0x98+saved_s3($sp) .text:004D5714 sw $s2, 0x98+saved_s2($sp) .text:004D5718 sw $s1, 0x98+saved_s1($sp) .text:004D571C sw $s0, 0x98+saved_s0($sp) .text:004D5720 sw $gp, 0x98+saved_gp($sp) .text:004D5724 la $t9, memset .text:004D5728 addiu $s2, $sp, 0x98+mac_address .text:004D572C move $a1, $zero .text:004D5730 li $a2, 0x20 # ' ' .text:004D5734 move $s4, $a0 .text:004D5738 sw $zero, 0x98+oui($sp) .text:004D573C move $a0, $s2 .text:004D5740 jalr $t9 ; memset .text:004D5744 sw $zero, 0x98+nic($sp) .text:004D5748 lw $gp, 0x98+saved_gp($sp) .text:004D574C addiu $s0, $sp, 0x98+info_log_mac_address .text:004D5750 la $t9, memset .text:004D5754 li $a2, 0x14 .text:004D5758 move $a0, $s0 .text:004D575C jalr $t9 ; memset .text:004D5760 move $a1, $zero .text:004D5764 lw $gp, 0x98+saved_gp($sp) .text:004D5768 li $a1, 0x96B .text:004D576C la $s1, 0x5A0000 .text:004D5770 la $t9, lockAndGetInfo_log .text:004D5774 nop .text:004D5778 jalr $t9 ; lockAndGetInfo_log .text:004D577C addiu $a0, $s1, (aOptReleaseR_20 - 0x5A0000) # "/opt/release/rt6856/RT288x_SDK/source/u"... .text:004D5780 lw $gp, 0x98+saved_gp($sp) .text:004D5784 lw $a1, 8($v0) .text:004D5788 la $t9, strcpy .text:004D578C nop .text:004D5790 jalr $t9 ; strcpy .text:004D5794 move $a0, $s0 .text:004D5798 lw $gp, 0x98+saved_gp($sp) .text:004D579C addiu $a0, $s1, (aOptReleaseR_20 - 0x5A0000) # "/opt/release/rt6856/RT288x_SDK/source/u"... .text:004D57A0 la $t9, unlockInfo_log .text:004D57A4 nop .text:004D57A8 jalr $t9 ; unlockInfo_log .text:004D57AC li $a1, 0x96D .text:004D57B0 lw $gp, 0x98+saved_gp($sp) .text:004D57B4 lb $a1, 0x98+info_log_mac_address+5($sp) .text:004D57B8 lb $a0, 0x98+info_log_mac_address+4($sp) .text:004D57BC lb $v0, 0x98+info_log_mac_address+2($sp) .text:004D57C0 lb $v1, 0x98+info_log_mac_address+3($sp) .text:004D57C4 lb $t0, 0x98+info_log_mac_address+6($sp) .text:004D57C8 lb $t1, 0x98+info_log_mac_address+7($sp) .text:004D57CC lb $t2, 0x98+info_log_mac_address+8($sp) .text:004D57D0 lb $t3, 0x98+info_log_mac_address+9($sp) .text:004D57D4 lb $t4, 0x98+info_log_mac_address+0xA($sp) .text:004D57D8 lb $t5, 0x98+info_log_mac_address+0xB($sp) .text:004D57DC sw $a1, 0x1C($sp) .text:004D57E0 la $a1, 0x5A0000 .text:004D57E4 la $t9, sprintf .text:004D57E8 lb $a2, 0x98+info_log_mac_address($sp) .text:004D57EC lb $a3, 0x98+info_log_mac_address+1($sp) .text:004D57F0 sw $a0, 0x18($sp) .text:004D57F4 sw $v0, 0x10($sp) .text:004D57F8 sw $v1, 0x14($sp) .text:004D57FC sw $t0, 0x20($sp) .text:004D5800 sw $t1, 0x24($sp) .text:004D5804 sw $t2, 0x28($sp) .text:004D5808 sw $t3, 0x2C($sp) .text:004D580C sw $t4, 0x30($sp) .text:004D5810 sw $t5, 0x34($sp) .text:004D5814 move $a0, $s2 .text:004D5818 jalr $t9 ; sprintf .text:004D581C addiu $a1, (aCCCCCCCCCCCC - 0x5A0000) # "%c%c:%c%c:%c%c:%c%c:%c%c:%c%c" .text:004D5820 lw $gp, 0x98+saved_gp($sp) .text:004D5824 addiu $s3, $sp, 0x98+mac_address+3 .text:004D5828 addiu $s1, $sp, 0x98+mac_address+2 .text:004D582C li $s0, 4 .text:004D5830 .text:004D5830 memmove_loop: # CODE XREF: sub_4D56F8+158j .text:004D5830 la $t9, memmove .text:004D5834 move $a0, $s1 .text:004D5838 move $a1, $s3 .text:004D583C li $a2, 2 .text:004D5840 jalr $t9 ; memmove # // mac_address[2] = mac_address[3]; .text:004D5840 # // mac_address[3] = mac_address[4]; .text:004D5840 # memmove((mac_address+2), (mac_address+3), 2); .text:004D5844 addiu $s0, -1 .text:004D5848 addiu $s1, 2 .text:004D584C lw $gp, 0x98+saved_gp($sp) .text:004D5850 bgez $s0, memmove_loop .text:004D5854 addiu $s3, 3 .text:004D5858 la $t9, strlen .text:004D585C nop .text:004D5860 jalr $t9 ; strlen .text:004D5864 addiu $a0, $sp, 0x98+mac_address .text:004D5868 lw $gp, 0x98+saved_gp($sp) .text:004D586C addiu $a2, $v0, -0xC .text:004D5870 la $t9, memset .text:004D5874 addiu $a0, $sp, 0x98+mac_address+0xC .text:004D5878 jalr $t9 ; memset # // NULL out the remaining, unused bytes of mac_address .text:004D5878 # memset(mac_address+12, 0, strlen(mac_address)-12); .text:004D587C move $a1, $zero .text:004D5880 lw $gp, 0x98+saved_gp($sp) .text:004D5884 addiu $a0, $sp, 0x98+mac_address .text:004D5888 la $a1, 0x5A0000 .text:004D588C la $t9, sscanf .text:004D5890 addiu $a1, (a06x06x - 0x5A0000) # "%06X%06X" .text:004D5894 addiu $a2, $sp, 0x98+oui .text:004D5898 jalr $t9 ; sscanf # sscanf(mac_address, "%06X%06X", &oui, &nic); .text:004D589C addiu $a3, $sp, 0x98+nic .text:004D58A0 lw $a1, 0x98+nic($sp) .text:004D58A4 li $v0, 0x55AA55 .text:004D58AC xor $a1, $v0 # $a1 = nic ^ 0x55AA55; .text:004D58B0 andi $v0, $a1, 0xF .text:004D58B4 sll $a0, $v0, 8 .text:004D58B8 sll $v1, $v0, 4 .text:004D58BC addu $v1, $a0 .text:004D58C0 sll $a0, $v0, 12 .text:004D58C4 addu $v1, $a0 .text:004D58C8 sll $a0, $v0, 16 .text:004D58CC addu $v1, $a0 .text:004D58D0 sll $v0, 20 .text:004D58D4 addu $v1, $v0 .text:004D58D8 lui $v0, 0x6B5F .text:004D58DC xor $a1, $v1 .text:004D58E0 ori $t1, $v0, 0xCA6B .text:004D58E4 multu $a1, $t1 .text:004D58E8 sw $v1, 0x98+oui($sp) .text:004D58EC lui $t0, 0xF .text:004D58F0 ori $a2, $t0, 0x423F .text:004D58F4 lw $gp, 0x98+saved_gp($sp) .text:004D58F8 mfhi $a0 .text:004D58FC srl $a0, 22 .text:004D5900 sll $v1, $a0, 5 .text:004D5904 subu $v1, $a0 .text:004D5908 sll $v0, $v1, 6 .text:004D590C subu $v0, $v1 .text:004D5910 sll $v0, 3 .text:004D5914 addu $v0, $a0 .text:004D5918 sll $v1, $v0, 2 .text:004D591C addu $v0, $v1 .text:004D5920 sll $v0, 7 .text:004D5924 subu $a3, $a1, $v0 .text:004D5928 sltu $a2, $a3 .text:004D592C bnez $a2, loc_4D5980 .text:004D5930 sw $a3, 0x98+nic($sp) .text:004D5934 li $v0, 0x38E38E39 .text:004D593C multu $a3, $v0 .text:004D5940 ori $a1, $t0, 0x4240 .text:004D5944 mfhi $v0 .text:004D5948 srl $v0, 1 .text:004D594C sll $a0, $v0, 3 .text:004D5950 addu $a0, $v0 .text:004D5954 subu $a0, $a3, $a0 .text:004D5958 sll $v1, $a0, 5 .text:004D595C subu $v1, $a0 .text:004D5960 sll $v0, $v1, 6 .text:004D5964 subu $v0, $v1 .text:004D5968 sll $v0, 3 .text:004D596C addu $v0, $a0 .text:004D5970 sll $v0, 6 .text:004D5974 addu $v0, $a3, $v0 .text:004D5978 addu $v0, $a1 .text:004D597C sw $v0, 0x98+nic($sp) .text:004D5980 .text:004D5980 loc_4D5980: # CODE XREF: sub_4D56F8+234j .text:004D5980 lw $v0, 0x98+nic($sp) .text:004D5984 lui $t2, 0x431B .text:004D5988 sll $a2, $v0, 2 .text:004D598C addu $a2, $v0 .text:004D5990 sll $a2, 1 .text:004D5994 multu $a2, $t1 .text:004D5998 lui $v0, 0xA7C .text:004D599C srl $t5, $a2, 5 .text:004D59A0 li $v0, 0xA7C5AC5 .text:004D59A4 li $t2, 0x431BDE83 .text:004D59A8 li $t3, 0x10624DD3 .text:004D59B0 li $t4, 0xD1B71759 .text:004D59B8 li $t7, 0xCCCCCCCD .text:004D59C0 lui $t6, 0x51EB .text:004D59C4 mfhi $t0 .text:004D59C8 li $t6, 0x51EB851F .text:004D59CC srl $t0, 22 .text:004D59D0 multu $t5, $v0 .text:004D59D4 la $a1, 0x5A0000 .text:004D59D8 la $t9, sprintf .text:004D59DC move $a0, $s4 .text:004D59E0 addiu $a1, (a08d - 0x5A0000) # "%08d" .text:004D59E4 mfhi $t5 .text:004D59E8 srl $t5, 7 .text:004D59EC nop .text:004D59F0 multu $a2, $t2 .text:004D59F4 mfhi $t2 .text:004D59F8 srl $t2, 18 .text:004D59FC nop .text:004D5A00 multu $a2, $t3 .text:004D5A04 mfhi $t3 .text:004D5A08 srl $t3, 6 .text:004D5A0C nop .text:004D5A10 multu $a2, $t4 .text:004D5A14 mfhi $t4 .text:004D5A18 srl $t4, 13 .text:004D5A1C nop .text:004D5A20 multu $a2, $t7 .text:004D5A24 mfhi $s0 .text:004D5A28 srl $s0, 3 .text:004D5A2C nop .text:004D5A30 multu $a2, $t6 .text:004D5A34 mfhi $t6 .text:004D5A38 srl $t6, 5 .text:004D5A3C nop .text:004D5A40 multu $t0, $t7 .text:004D5A44 mfhi $v1 .text:004D5A48 srl $v1, 3 .text:004D5A4C sll $v0, $v1, 2 .text:004D5A50 multu $t5, $t7 .text:004D5A54 addu $v0, $v1 .text:004D5A58 sll $v0, 1 .text:004D5A5C subu $t0, $v0 .text:004D5A60 sll $v1, $t0, 1 .text:004D5A64 addu $v1, $t0 .text:004D5A68 mfhi $a3 .text:004D5A6C srl $a3, 3 .text:004D5A70 sll $v0, $a3, 2 .text:004D5A74 multu $t2, $t7 .text:004D5A78 addu $v0, $a3 .text:004D5A7C sll $v0, 1 .text:004D5A80 subu $t5, $v0 .text:004D5A84 sll $t1, $t5, 1 .text:004D5A88 addu $t1, $t5 .text:004D5A8C mfhi $t0 .text:004D5A90 srl $t0, 3 .text:004D5A94 sll $v0, $t0, 2 .text:004D5A98 multu $t3, $t7 .text:004D5A9C addu $v0, $t0 .text:004D5AA0 sll $v0, 1 .text:004D5AA4 subu $t2, $v0 .text:004D5AA8 addu $v1, $t2 .text:004D5AAC addu $v1, $t1 .text:004D5AB0 mfhi $a3 .text:004D5AB4 srl $a3, 3 .text:004D5AB8 sll $v0, $a3, 2 .text:004D5ABC multu $t4, $t7 .text:004D5AC0 addu $v0, $a3 .text:004D5AC4 sll $v0, 1 .text:004D5AC8 subu $t3, $v0 .text:004D5ACC sll $a3, $t3, 1 .text:004D5AD0 addu $a3, $t3 .text:004D5AD4 mfhi $t0 .text:004D5AD8 srl $t0, 3 .text:004D5ADC sll $v0, $t0, 2 .text:004D5AE0 multu $s0, $t7 .text:004D5AE4 addu $v0, $t0 .text:004D5AE8 sll $v0, 1 .text:004D5AEC subu $t4, $v0 .text:004D5AF0 addu $v1, $t4 .text:004D5AF4 addu $v1, $a3 .text:004D5AF8 mfhi $t1 .text:004D5AFC srl $t1, 3 .text:004D5B00 sll $v0, $t1, 2 .text:004D5B04 multu $t6, $t7 .text:004D5B08 addu $v0, $t1 .text:004D5B0C sll $v0, 1 .text:004D5B10 subu $s0, $v0 .text:004D5B14 sll $t0, $s0, 1 .text:004D5B18 addu $t0, $s0 .text:004D5B1C mfhi $a3 .text:004D5B20 srl $a3, 3 .text:004D5B24 sll $v0, $a3, 2 .text:004D5B28 addu $v0, $a3 .text:004D5B2C sll $v0, 1 .text:004D5B30 subu $t6, $v0 .text:004D5B34 addu $v1, $t6 .text:004D5B38 addu $v1, $t0 .text:004D5B3C multu $v1, $t7 .text:004D5B40 li $a3, 0xA .text:004D5B44 mfhi $t7 .text:004D5B48 srl $t7, 3 .text:004D5B4C sll $v0, $t7, 2 .text:004D5B50 addu $v0, $t7 .text:004D5B54 sll $v0, 1 .text:004D5B58 subu $t7, $v1, $v0 .text:004D5B5C lui $v0, 0x6666 .text:004D5B60 subu $a3, $t7 .text:004D5B64 li $v0, 0x66666667 .text:004D5B68 mult $a3, $v0 .text:004D5B6C sra $v1, $a3, 31 .text:004D5B70 mfhi $v0 .text:004D5B74 sra $v0, 2 .text:004D5B78 subu $v0, $v1 .text:004D5B7C sll $v1, $v0, 2 .text:004D5B80 addu $v1, $v0 .text:004D5B84 sll $v1, 1 .text:004D5B88 subu $a3, $v1 .text:004D5B8C addu $a2, $a3 .text:004D5B90 sw $a3, 0x98+oui($sp) .text:004D5B94 jalr $t9 .text:004D5B98 sw $a2, 0x98+nic($sp) .text:004D5B9C lw $v0, 0x98+nic($sp) .text:004D5BA0 lw $gp, 0x98+saved_gp($sp) .text:004D5BA4 lw $ra, 0x98+saved_ra($sp) .text:004D5BA8 lw $s4, 0x98+saved_s4($sp) .text:004D5BAC lw $s3, 0x98+saved_s3($sp) .text:004D5BB0 lw $s2, 0x98+saved_s2($sp) .text:004D5BB4 lw $s1, 0x98+saved_s1($sp) .text:004D5BB8 lw $s0, 0x98+saved_s0($sp) .text:004D5BBC jr $ra .text:004D5BC0 addiu $sp, 0x98 .text:004D5BC0 # End of function sub_4D56F8 .text:004D5BC0