; Disassembled using luadec 2.2 rev: 895d923 for Lua 5.3 from https://github.com/viruscamp/luadec ; Command line: -dis update_sd.lua ; Function: 0 ; Defined at line: 0 ; #Upvalues: 1 ; #Parameters: 0 ; Is_vararg: 1 ; Max Stack Size: 23 0 [-]: GETTABUP R0 U0 K0 ; R0 := U0["require"] 1 [-]: LOADK R1 K1 ; R1 := "luaext.sys" 2 [-]: CALL R0 2 2 ; R0 := R0(R1) 3 [-]: GETTABUP R1 U0 K0 ; R1 := U0["require"] 4 [-]: LOADK R2 K2 ; R2 := "luaext.aes" 5 [-]: CALL R1 2 2 ; R1 := R1(R2) 6 [-]: GETTABUP R2 U0 K3 ; R2 := U0["arg"] 7 [-]: GETTABUP R3 U0 K4 ; R3 := U0["string"] 8 [-]: GETTABLE R3 R3 K5 ; R3 := R3["format"] 9 [-]: GETTABUP R4 U0 K6 ; R4 := U0["io"] 10 [-]: GETTABUP R5 U0 K7 ; R5 := U0["ipairs"] 11 [-]: GETTABUP R6 U0 K8 ; R6 := U0["os"] 12 [-]: GETTABUP R7 U0 K9 ; R7 := U0["print"] 13 [-]: GETTABUP R8 U0 K4 ; R8 := U0["string"] 14 [-]: GETTABUP R9 U0 K10 ; R9 := U0["table"] 15 [-]: GETTABUP R10 U0 K11 ; R10 := U0["tonumber"] 16 [-]: NEWTABLE R11 0 0 ; R11 := {} (size = 0,0) 17 [-]: SETUPVAL R11 U0 ; U0 := R11 18 [-]: LOADNIL R11 1 ; R11 to R12 := nil 19 [-]: CLOSURE R13 0 ; R13 := closure(Function #0_0) 20 [-]: CLOSURE R14 1 ; R14 := closure(Function #0_1) 21 [-]: CLOSURE R15 2 ; R15 := closure(Function #0_2) 22 [-]: CLOSURE R16 3 ; R16 := closure(Function #0_3) 23 [-]: CLOSURE R17 4 ; R17 := closure(Function #0_4) 24 [-]: CLOSURE R18 5 ; R18 := closure(Function #0_5) 25 [-]: CLOSURE R19 6 ; R19 := closure(Function #0_6) 26 [-]: CLOSURE R20 7 ; R20 := closure(Function #0_7) 27 [-]: CLOSURE R21 8 ; R21 := closure(Function #0_8) 28 [-]: MOVE R22 R21 ; R22 := R21 29 [-]: CALL R22 1 1 ; := R22() 30 [-]: RETURN R0 1 ; return ; Function: 0_0 ; Defined at line: 20 ; #Upvalues: 1 ; #Parameters: 1 ; Is_vararg: 1 ; Max Stack Size: 6 0 [-]: LOADK R1 K0 ; R1 := "update_sd: " 1 [-]: MOVE R2 R0 ; R2 := R0 2 [-]: CONCAT R0 R1 R2 ; R0 := concat(R1 to R2) 3 [-]: GETTABUP R1 U0 K1 ; R1 := U0["stderr"] 4 [-]: SELF R1 R1 K2 ; R2 := R1; R1 := R1["write"] 5 [-]: SELF R3 R0 K3 ; R4 := R0; R3 := R0["format"] 6 [-]: VARARG R5 0 ; R5 to top := ... 7 [-]: CALL R3 0 0 ; R3 to top := R3(R4 to top) 8 [-]: CALL R1 0 1 ; := R1(R2 to top) 9 [-]: RETURN R0 1 ; return ; Function: 0_1 ; Defined at line: 25 ; #Upvalues: 2 ; #Parameters: 2 ; Is_vararg: 0 ; Max Stack Size: 10 0 [-]: LOADK R2 K0 ; R2 := "/tmp/update_sd-getsum.tmp" 1 [-]: GETTABUP R3 U0 K1 ; R3 := U0["popen"] 2 [-]: LOADK R4 K2 ; R4 := "sha256sum >" 3 [-]: MOVE R5 R2 ; R5 := R2 4 [-]: CONCAT R4 R4 R5 ; R4 := concat(R4 to R5) 5 [-]: LOADK R5 K3 ; R5 := "w" 6 [-]: CALL R3 3 2 ; R3 := R3(R4 to R5) 7 [-]: LT 0 K4 R1 ; if 4096 < R1 then goto 9 else goto 12 8 [-]: JMP R0 3 ; PC += 3 (goto 12) 9 [-]: LOADK R4 K4 ; R4 := 4096 10 [-]: TEST R4 1 ; if not R4 then goto 12 else goto 13 11 [-]: JMP R0 1 ; PC += 1 (goto 13) 12 [-]: MOVE R4 R1 ; R4 := R1 13 [-]: SELF R5 R0 K5 ; R6 := R0; R5 := R0["read"] 14 [-]: MOVE R7 R4 ; R7 := R4 15 [-]: CALL R5 3 2 ; R5 := R5(R6 to R7) 16 [-]: SELF R6 R3 K6 ; R7 := R3; R6 := R3["write"] 17 [-]: MOVE R8 R5 ; R8 := R5 18 [-]: CALL R6 3 1 ; := R6(R7 to R8) 19 [-]: SUB R1 R1 R4 ; R1 := R1 - R4 20 [-]: EQ 0 R1 K7 ; if R1 == 0 then goto 22 else goto 7 21 [-]: JMP R0 -15 ; PC += -15 (goto 7) 22 [-]: SELF R4 R3 K8 ; R5 := R3; R4 := R3["close"] 23 [-]: CALL R4 2 1 ; := R4(R5) 24 [-]: LOADNIL R4 0 ; R4 := nil 25 [-]: GETTABUP R5 U0 K9 ; R5 := U0["open"] 26 [-]: MOVE R6 R2 ; R6 := R2 27 [-]: CALL R5 2 2 ; R5 := R5(R6) 28 [-]: TEST R5 0 ; if R5 then goto 30 else goto 43 29 [-]: JMP R0 13 ; PC += 13 (goto 43) 30 [-]: SELF R6 R5 K5 ; R7 := R5; R6 := R5["read"] 31 [-]: CALL R6 2 2 ; R6 := R6(R7) 32 [-]: TEST R6 0 ; if R6 then goto 34 else goto 38 33 [-]: JMP R0 4 ; PC += 4 (goto 38) 34 [-]: SELF R7 R6 K10 ; R8 := R6; R7 := R6["match"] 35 [-]: LOADK R9 K11 ; R9 := "%x+" 36 [-]: CALL R7 3 2 ; R7 := R7(R8 to R9) 37 [-]: MOVE R4 R7 ; R4 := R7 38 [-]: SELF R7 R5 K8 ; R8 := R5; R7 := R5["close"] 39 [-]: CALL R7 2 1 ; := R7(R8) 40 [-]: GETTABUP R7 U1 K12 ; R7 := U1["remove"] 41 [-]: MOVE R8 R2 ; R8 := R2 42 [-]: CALL R7 2 1 ; := R7(R8) 43 [-]: RETURN R4 2 ; return R4 44 [-]: RETURN R0 1 ; return ; Function: 0_2 ; Defined at line: 50 ; #Upvalues: 3 ; #Parameters: 1 ; Is_vararg: 0 ; Max Stack Size: 12 0 [-]: NEWTABLE R1 0 0 ; R1 := {} (size = 0,0) 1 [-]: LOADK R2 K0 ; R2 := 1 2 [-]: LEN R3 R0 ; R3 := #R0 3 [-]: LOADK R4 K1 ; R4 := 2 4 [-]: FORPREP R2 10 ; R2 -= R4; pc += 10 (goto 15) 5 [-]: LEN R6 R1 ; R6 := #R1 6 [-]: ADD R6 R6 K0 ; R6 := R6 + 1 7 [-]: GETUPVAL R7 U0 ; R7 := U0 8 [-]: SELF R8 R0 K2 ; R9 := R0; R8 := R0["sub"] 9 [-]: MOVE R10 R5 ; R10 := R5 10 [-]: ADD R11 R5 K0 ; R11 := R5 + 1 11 [-]: CALL R8 4 2 ; R8 := R8(R9 to R11) 12 [-]: LOADK R9 K3 ; R9 := 16 13 [-]: CALL R7 3 2 ; R7 := R7(R8 to R9) 14 [-]: SETTABLE R1 R6 R7 ; R1[R6] := R7 15 [-]: FORLOOP R2 -11 ; R2 += R4; if R2 <= R3 then R5 := R2; PC += -11 , goto 5 end 16 [-]: GETTABUP R2 U1 K4 ; R2 := U1["char"] 17 [-]: GETTABUP R3 U2 K5 ; R3 := U2["unpack"] 18 [-]: MOVE R4 R1 ; R4 := R1 19 [-]: CALL R3 2 0 ; R3 to top := R3(R4) 20 [-]: TAILCALL R2 0 0 ; R2 to top := R2(R3 to top) 21 [-]: RETURN R2 0 ; return R2 to top 22 [-]: RETURN R0 1 ; return ; Function: 0_3 ; Defined at line: 58 ; #Upvalues: 5 ; #Parameters: 0 ; Is_vararg: 0 ; Max Stack Size: 9 0 [-]: NEWTABLE R0 8 0 ; R0 := {} (size = 8,0) 1 [-]: LOADK R1 K0 ; R1 := 1955256368 2 [-]: LOADK R2 K1 ; R2 := 3315899413 3 [-]: LOADK R3 K2 ; R3 := 2117357452 4 [-]: LOADK R4 K3 ; R4 := 4287771157 5 [-]: LOADK R5 K4 ; R5 := 4188798088 6 [-]: LOADK R6 K5 ; R6 := 2197438769 7 [-]: LOADK R7 K6 ; R7 := 632650056 8 [-]: LOADK R8 K7 ; R8 := 2567168270 9 [-]: SETLIST R0 8 1 ; R0[0] to R0[7] := R1 to R8 ; R(a)[(c-1)*FPF+i] := R(a+i), 1 <= i <= b, a=0, b=8, c=1, FPF=50 10 [-]: GETUPVAL R1 U0 ; R1 := U0 11 [-]: MOVE R2 R0 ; R2 := R0 12 [-]: CALL R1 2 4 ; R1 to R3 := R1(R2) 13 [-]: JMP R0 5 ; PC += 5 (goto 19) 14 [-]: GETUPVAL R6 U1 ; R6 := U1 15 [-]: LOADK R7 K8 ; R7 := "%08x" 16 [-]: MOVE R8 R5 ; R8 := R5 17 [-]: CALL R6 3 2 ; R6 := R6(R7 to R8) 18 [-]: SETTABLE R0 R4 R6 ; R0[R4] := R6 19 [-]: TFORCALL R1 2 ; R4 to R5 := R1(R2,R3) 20 [-]: TFORLOOP R3 -7 ; if R4 ~= nil then { R3 := R4 ; pc += -7 (goto 14) } 21 [-]: GETUPVAL R1 U2 ; R1 := U2 22 [-]: GETTABUP R2 U3 K9 ; R2 := U3["concat"] 23 [-]: MOVE R3 R0 ; R3 := R0 24 [-]: CALL R2 2 0 ; R2 to top := R2(R3) 25 [-]: CALL R1 0 2 ; R1 := R1(R2 to top) 26 [-]: MOVE R0 R1 ; R0 := R1 27 [-]: GETTABUP R1 U4 K10 ; R1 := U4["new"] 28 [-]: MOVE R2 R0 ; R2 := R0 29 [-]: TAILCALL R1 2 0 ; R1 to top := R1(R2) 30 [-]: RETURN R1 0 ; return R1 to top 31 [-]: RETURN R0 1 ; return ; Function: 0_4 ; Defined at line: 70 ; #Upvalues: 2 ; #Parameters: 2 ; Is_vararg: 0 ; Max Stack Size: 11 0 [-]: NEWTABLE R2 0 0 ; R2 := {} (size = 0,0) 1 [-]: LOADK R3 K0 ; R3 := 1 2 [-]: LOADK R4 K1 ; R4 := 16 3 [-]: LOADK R5 K0 ; R5 := 1 4 [-]: FORPREP R3 8 ; R3 -= R5; pc += 8 (goto 13) 5 [-]: SELF R7 R0 K2 ; R8 := R0; R7 := R0["byte"] 6 [-]: MOVE R9 R6 ; R9 := R6 7 [-]: CALL R7 3 2 ; R7 := R7(R8 to R9) 8 [-]: SELF R8 R1 K2 ; R9 := R1; R8 := R1["byte"] 9 [-]: MOVE R10 R6 ; R10 := R6 10 [-]: CALL R8 3 2 ; R8 := R8(R9 to R10) 11 [-]: BXOR R7 R7 R8 ; R7 := R7 ~ R8 12 [-]: SETTABLE R2 R6 R7 ; R2[R6] := R7 13 [-]: FORLOOP R3 -9 ; R3 += R5; if R3 <= R4 then R6 := R3; PC += -9 , goto 5 end 14 [-]: GETTABUP R3 U0 K3 ; R3 := U0["char"] 15 [-]: GETTABUP R4 U1 K4 ; R4 := U1["unpack"] 16 [-]: MOVE R5 R2 ; R5 := R2 17 [-]: CALL R4 2 0 ; R4 to top := R4(R5) 18 [-]: TAILCALL R3 0 0 ; R3 to top := R3(R4 to top) 19 [-]: RETURN R3 0 ; return R3 to top 20 [-]: RETURN R0 1 ; return ; Function: 0_5 ; Defined at line: 78 ; #Upvalues: 4 ; #Parameters: 1 ; Is_vararg: 0 ; Max Stack Size: 12 0 [-]: GETTABUP R1 U0 K0 ; R1 := U0["rep"] 1 [-]: LOADK R2 K1 ; R2 := "\000" 2 [-]: LOADK R3 K2 ; R3 := 16 3 [-]: CALL R1 3 2 ; R1 := R1(R2 to R3) 4 [-]: GETUPVAL R2 U1 ; R2 := U1 5 [-]: CALL R2 1 2 ; R2 := R2() 6 [-]: NEWTABLE R3 0 0 ; R3 := {} (size = 0,0) 7 [-]: LOADK R4 K3 ; R4 := 1 8 [-]: LEN R5 R0 ; R5 := #R0 9 [-]: LOADK R6 K2 ; R6 := 16 10 [-]: FORPREP R4 16 ; R4 -= R6; pc += 16 (goto 27) 11 [-]: SELF R8 R0 K4 ; R9 := R0; R8 := R0["sub"] 12 [-]: MOVE R10 R7 ; R10 := R7 13 [-]: ADD R11 R7 K5 ; R11 := R7 + 15 14 [-]: CALL R8 4 2 ; R8 := R8(R9 to R11) 15 [-]: GETUPVAL R9 U2 ; R9 := U2 16 [-]: MOVE R10 R1 ; R10 := R1 17 [-]: MOVE R11 R8 ; R11 := R8 18 [-]: CALL R9 3 2 ; R9 := R9(R10 to R11) 19 [-]: MOVE R8 R9 ; R8 := R9 20 [-]: SELF R9 R2 K6 ; R10 := R2; R9 := R2["enc"] 21 [-]: MOVE R11 R8 ; R11 := R8 22 [-]: CALL R9 3 2 ; R9 := R9(R10 to R11) 23 [-]: MOVE R1 R9 ; R1 := R9 24 [-]: LEN R9 R3 ; R9 := #R3 25 [-]: ADD R9 R9 K3 ; R9 := R9 + 1 26 [-]: SETTABLE R3 R9 R1 ; R3[R9] := R1 27 [-]: FORLOOP R4 -17 ; R4 += R6; if R4 <= R5 then R7 := R4; PC += -17 , goto 11 end 28 [-]: SELF R4 R2 K7 ; R5 := R2; R4 := R2["clear"] 29 [-]: CALL R4 2 1 ; := R4(R5) 30 [-]: GETTABUP R4 U3 K8 ; R4 := U3["concat"] 31 [-]: MOVE R5 R3 ; R5 := R3 32 [-]: TAILCALL R4 2 0 ; R4 to top := R4(R5) 33 [-]: RETURN R4 0 ; return R4 to top 34 [-]: RETURN R0 1 ; return ; Function: 0_6 ; Defined at line: 94 ; #Upvalues: 2 ; #Parameters: 3 ; Is_vararg: 0 ; Max Stack Size: 9 0 [-]: GETTABUP R3 U0 K0 ; R3 := U0["open"] 1 [-]: MOVE R4 R1 ; R4 := R1 2 [-]: LOADK R5 K1 ; R5 := "wb" 3 [-]: CALL R3 3 2 ; R3 := R3(R4 to R5) 4 [-]: TEST R3 1 ; if not R3 then goto 6 else goto 12 5 [-]: JMP R0 6 ; PC += 6 (goto 12) 6 [-]: GETUPVAL R4 U1 ; R4 := U1 7 [-]: LOADK R5 K2 ; R5 := "Can\'t create file: %s\n" 8 [-]: MOVE R6 R1 ; R6 := R1 9 [-]: CALL R4 3 1 ; := R4(R5 to R6) 10 [-]: LOADBOOL R4 0 0 ; R4 := false 11 [-]: RETURN R4 2 ; return R4 12 [-]: LT 0 K3 R2 ; if 1024 < R2 then goto 14 else goto 17 13 [-]: JMP R0 3 ; PC += 3 (goto 17) 14 [-]: LOADK R4 K3 ; R4 := 1024 15 [-]: TEST R4 1 ; if not R4 then goto 17 else goto 18 16 [-]: JMP R0 1 ; PC += 1 (goto 18) 17 [-]: MOVE R4 R2 ; R4 := R2 18 [-]: SELF R5 R0 K4 ; R6 := R0; R5 := R0["read"] 19 [-]: MOVE R7 R4 ; R7 := R4 20 [-]: CALL R5 3 2 ; R5 := R5(R6 to R7) 21 [-]: SELF R6 R3 K5 ; R7 := R3; R6 := R3["write"] 22 [-]: MOVE R8 R5 ; R8 := R5 23 [-]: CALL R6 3 1 ; := R6(R7 to R8) 24 [-]: SUB R2 R2 R4 ; R2 := R2 - R4 25 [-]: EQ 0 R2 K6 ; if R2 == 0 then goto 27 else goto 12 26 [-]: JMP R0 -15 ; PC += -15 (goto 12) 27 [-]: SELF R4 R3 K7 ; R5 := R3; R4 := R3["close"] 28 [-]: CALL R4 2 1 ; := R4(R5) 29 [-]: LOADBOOL R4 1 0 ; R4 := true 30 [-]: RETURN R4 2 ; return R4 31 [-]: RETURN R0 1 ; return ; Function: 0_7 ; Defined at line: 112 ; #Upvalues: 2 ; #Parameters: 1 ; Is_vararg: 0 ; Max Stack Size: 6 0 [-]: SELF R1 R0 K0 ; R2 := R0; R1 := R0["seek"] 1 [-]: LOADK R3 K1 ; R3 := "end" 2 [-]: LOADK R4 K2 ; R4 := -100 3 [-]: CALL R1 4 1 ; := R1(R2 to R4) 4 [-]: SELF R1 R0 K3 ; R2 := R0; R1 := R0["read"] 5 [-]: LOADK R3 K4 ; R3 := 4 6 [-]: CALL R1 3 2 ; R1 := R1(R2 to R3) 7 [-]: GETUPVAL R2 U0 ; R2 := U0 8 [-]: LOADK R3 K5 ; R3 := "cam_hw_ver(%s), file_hw_ver(%s)\n" 9 [-]: GETUPVAL R4 U1 ; R4 := U1 10 [-]: MOVE R5 R1 ; R5 := R1 11 [-]: CALL R2 4 1 ; := R2(R3 to R5) 12 [-]: GETUPVAL R2 U1 ; R2 := U1 13 [-]: EQ 1 R2 R1 ; if R2 ~= R1 then goto 15 else goto 20 14 [-]: JMP R0 5 ; PC += 5 (goto 20) 15 [-]: GETUPVAL R2 U0 ; R2 := U0 16 [-]: LOADK R3 K6 ; R3 := "Skip update\n" 17 [-]: CALL R2 2 1 ; := R2(R3) 18 [-]: LOADBOOL R2 0 0 ; R2 := false 19 [-]: RETURN R2 2 ; return R2 20 [-]: LOADBOOL R2 1 0 ; R2 := true 21 [-]: RETURN R2 2 ; return R2 22 [-]: RETURN R0 1 ; return ; Function: 0_8 ; Defined at line: 125 ; #Upvalues: 12 ; #Parameters: 0 ; Is_vararg: 0 ; Max Stack Size: 12 0 [-]: GETUPVAL R0 U0 ; R0 := U0 1 [-]: LEN R0 R0 ; R0 := #R0 2 [-]: EQ 1 R0 K0 ; if R0 ~= 2 then goto 4 else goto 8 3 [-]: JMP R0 4 ; PC += 4 (goto 8) 4 [-]: GETUPVAL R0 U1 ; R0 := U1 5 [-]: LOADK R1 K1 ; R1 := "need arg: fw_name hw_ver\n" 6 [-]: CALL R0 2 1 ; := R0(R1) 7 [-]: RETURN R0 1 ; return 8 [-]: GETTABUP R0 U0 K2 ; R0 := U0[1] 9 [-]: GETTABUP R1 U0 K0 ; R1 := U0[2] 10 [-]: SETUPVAL R1 U3 ; U3 := R1 11 [-]: SETUPVAL R0 U2 ; U2 := R0 12 [-]: LOADK R0 K3 ; R0 := "/home/app/sd/" 13 [-]: GETUPVAL R1 U2 ; R1 := U2 14 [-]: CONCAT R0 R0 R1 ; R0 := concat(R0 to R1) 15 [-]: GETTABUP R1 U4 K4 ; R1 := U4["open"] 16 [-]: MOVE R2 R0 ; R2 := R0 17 [-]: LOADK R3 K5 ; R3 := "rb" 18 [-]: CALL R1 3 2 ; R1 := R1(R2 to R3) 19 [-]: TEST R1 1 ; if not R1 then goto 21 else goto 26 20 [-]: JMP R0 5 ; PC += 5 (goto 26) 21 [-]: GETUPVAL R2 U1 ; R2 := U1 22 [-]: LOADK R3 K6 ; R3 := "Can\'t open file: %s\n" 23 [-]: MOVE R4 R0 ; R4 := R0 24 [-]: CALL R2 3 1 ; := R2(R3 to R4) 25 [-]: RETURN R0 1 ; return 26 [-]: SELF R2 R1 K7 ; R3 := R1; R2 := R1["seek"] 27 [-]: LOADK R4 K8 ; R4 := "end" 28 [-]: CALL R2 3 2 ; R2 := R2(R3 to R4) 29 [-]: LT 0 R2 K9 ; if R2 < 164 then goto 31 else goto 39 30 [-]: JMP R0 8 ; PC += 8 (goto 39) 31 [-]: SELF R3 R1 K10 ; R4 := R1; R3 := R1["close"] 32 [-]: CALL R3 2 1 ; := R3(R4) 33 [-]: GETUPVAL R3 U1 ; R3 := U1 34 [-]: LOADK R4 K11 ; R4 := "File(%s) size(%d) too small\n" 35 [-]: MOVE R5 R0 ; R5 := R0 36 [-]: MOVE R6 R2 ; R6 := R2 37 [-]: CALL R3 4 1 ; := R3(R4 to R6) 38 [-]: RETURN R0 1 ; return 39 [-]: GETUPVAL R3 U5 ; R3 := U5 40 [-]: MOVE R4 R1 ; R4 := R1 41 [-]: CALL R3 2 2 ; R3 := R3(R4) 42 [-]: TEST R3 1 ; if not R3 then goto 44 else goto 47 43 [-]: JMP R0 3 ; PC += 3 (goto 47) 44 [-]: SELF R3 R1 K10 ; R4 := R1; R3 := R1["close"] 45 [-]: CALL R3 2 1 ; := R3(R4) 46 [-]: RETURN R0 1 ; return 47 [-]: SELF R3 R1 K7 ; R4 := R1; R3 := R1["seek"] 48 [-]: LOADK R5 K12 ; R5 := "set" 49 [-]: CALL R3 3 1 ; := R3(R4 to R5) 50 [-]: GETUPVAL R3 U6 ; R3 := U6 51 [-]: MOVE R4 R1 ; R4 := R1 52 [-]: SUB R5 R2 K13 ; R5 := R2 - 32 53 [-]: CALL R3 3 2 ; R3 := R3(R4 to R5) 54 [-]: TEST R3 1 ; if not R3 then goto 56 else goto 63 55 [-]: JMP R0 7 ; PC += 7 (goto 63) 56 [-]: SELF R4 R1 K10 ; R5 := R1; R4 := R1["close"] 57 [-]: CALL R4 2 1 ; := R4(R5) 58 [-]: GETUPVAL R4 U1 ; R4 := U1 59 [-]: LOADK R5 K14 ; R5 := "Can\'t get sum for file: %s\n" 60 [-]: MOVE R6 R0 ; R6 := R0 61 [-]: CALL R4 3 1 ; := R4(R5 to R6) 62 [-]: RETURN R0 1 ; return 63 [-]: GETUPVAL R4 U7 ; R4 := U7 64 [-]: MOVE R5 R3 ; R5 := R3 65 [-]: CALL R4 2 2 ; R4 := R4(R5) 66 [-]: MOVE R3 R4 ; R3 := R4 67 [-]: GETUPVAL R4 U8 ; R4 := U8 68 [-]: MOVE R5 R3 ; R5 := R3 69 [-]: CALL R4 2 2 ; R4 := R4(R5) 70 [-]: MOVE R3 R4 ; R3 := R4 71 [-]: SELF R4 R1 K15 ; R5 := R1; R4 := R1["read"] 72 [-]: LOADK R6 K13 ; R6 := 32 73 [-]: CALL R4 3 2 ; R4 := R4(R5 to R6) 74 [-]: EQ 1 R3 R4 ; if R3 ~= R4 then goto 76 else goto 82 75 [-]: JMP R0 6 ; PC += 6 (goto 82) 76 [-]: SELF R5 R1 K10 ; R6 := R1; R5 := R1["close"] 77 [-]: CALL R5 2 1 ; := R5(R6) 78 [-]: GETUPVAL R5 U1 ; R5 := U1 79 [-]: LOADK R6 K16 ; R6 := "Invalid update file\n" 80 [-]: CALL R5 2 1 ; := R5(R6) 81 [-]: RETURN R0 1 ; return 82 [-]: SELF R5 R1 K7 ; R6 := R1; R5 := R1["seek"] 83 [-]: LOADK R7 K12 ; R7 := "set" 84 [-]: CALL R5 3 1 ; := R5(R6 to R7) 85 [-]: LOADK R5 K17 ; R5 := "/tmp/update_sd-fwhead.tmp" 86 [-]: GETUPVAL R6 U9 ; R6 := U9 87 [-]: MOVE R7 R1 ; R7 := R1 88 [-]: MOVE R8 R5 ; R8 := R5 89 [-]: LOADK R9 K18 ; R9 := 64 90 [-]: CALL R6 4 2 ; R6 := R6(R7 to R9) 91 [-]: SELF R7 R1 K10 ; R8 := R1; R7 := R1["close"] 92 [-]: CALL R7 2 1 ; := R7(R8) 93 [-]: TEST R6 1 ; if not R6 then goto 95 else goto 96 94 [-]: JMP R0 1 ; PC += 1 (goto 96) 95 [-]: RETURN R0 1 ; return 96 [-]: LOADK R7 K19 ; R7 := " >/dev/null 2>&1" 97 [-]: GETTABUP R8 U10 K20 ; R8 := U10["execute"] 98 [-]: LOADK R9 K21 ; R9 := "/home/bin/flash_eraseall /dev/mtd10" 99 [-]: MOVE R10 R7 ; R10 := R7 100 [-]: CONCAT R9 R9 R10 ; R9 := concat(R9 to R10) 101 [-]: CALL R8 2 1 ; := R8(R9) 102 [-]: GETTABUP R8 U10 K20 ; R8 := U10["execute"] 103 [-]: LOADK R9 K22 ; R9 := "nandwrite -p -s 0 /dev/mtd10 " 104 [-]: MOVE R10 R0 ; R10 := R0 105 [-]: MOVE R11 R7 ; R11 := R7 106 [-]: CONCAT R9 R9 R11 ; R9 := concat(R9 to R11) 107 [-]: CALL R8 2 1 ; := R8(R9) 108 [-]: GETTABUP R8 U10 K20 ; R8 := U10["execute"] 109 [-]: LOADK R9 K23 ; R9 := "nandwrite -p -s 0x3100000 /dev/mtd10 " 110 [-]: MOVE R10 R5 ; R10 := R5 111 [-]: MOVE R11 R7 ; R11 := R7 112 [-]: CONCAT R9 R9 R11 ; R9 := concat(R9 to R11) 113 [-]: CALL R8 2 1 ; := R8(R9) 114 [-]: GETUPVAL R8 U11 ; R8 := U11 115 [-]: LOADK R9 K24 ; R9 := "1" 116 [-]: CALL R8 2 1 ; := R8(R9) 117 [-]: RETURN R0 1 ; return