Update lens.rb

In the last GPL dump (ftp://ftp.supermicro.nl/GPL/SMT/SDK_SMT_X9_317.tar.gz) Supermicro was so kind to leave debugging symbols in some of the object files.

This allowed me to fill in some of the RFB protocol blanks.

One thing I'm not sure about is whether not to add the respective disassembly output for these findings.

Pro:
  * Improves audit-ability
  * Authoritive source instead of 'because erik-smit said so'

Con: 
  * Aten/Supermicro might frown upon disassemblies being posted of their software
  * Could clutter/decrease readability of documentation

Examples:

P.S.: I tried to highlight the relevant parts in these code blocks, but did not succeed. 

Server-init:
```
		EXPORT RFBProtocol::ProcServerInit(void)
RFBProtocol::ProcServerInit(void)	; CODE XREF: RFBProtocol::ProcServerInit(void)+8j
					; DATA XREF: .got:_ZN11RFBProtocol14ProcServerInitEv_ptro

var_68		= -0x68

		STMFD	SP!, {R4-R6,LR}
		SUB	SP, SP,	#0x6C
		MOV	R5, R0
		BL	GetCurrentThread(void)
		STR	R0, [SP,#0x7C+var_68]
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWriteStart(void)
		MOV	R1, #0x1E0
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite16(ushort)
		MOV	R1, #0x280
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite16(ushort)
		MOV	R1, #0x20
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite8(uchar)
		MOV	R1, #0x18
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite8(uchar)
		MOV	R1, #0
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite8(uchar)
		MOV	R1, #1
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite8(uchar)
		MOV	R1, #0xFF
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite16(ushort)
		MOV	R1, #0xFF
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite16(ushort)
		MOV	R1, #0xFF
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite16(ushort)
		MOV	R1, #0x10
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite8(uchar)
		LDR	R4, =aAtenIkvmServer ; "ATEN iKVM Server"
		MOV	R1, #8
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite8(uchar)
		MOV	R1, #0
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite8(uchar)
		MOV	R6, R4
		MOV	R1, #3
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWriteSkip(uint)
		LDMIA	R6!, {R0-R3}
		MOV	R12, SP
		STMIA	R12!, {R0-R3}
		LDR	LR, [R4,#(aAtenIkvmServer+0x10 - 0x17C94)]
		MOV	R0, SP		; s
		STRB	LR, [R12]
		BL	strlen
		MOV	R4, R0
		MOV	R1, R0
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite32(uint)
		MOV	R2, R4
		MOV	R1, SP
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite(uchar *,uint)
		MOV	R1, #4
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWriteSkip(uint)
		LDR	R1, [SP,#0x7C+var_68]
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite32(uint)
		LDR	R3, [R5,#0x10]
		MOV	R6, SP
		LDR	R0, [R3,#0x4C]
		BL	<b>j_CheckIKVMVideoEnable</b>
		AND	R1, R0,	#0xFF
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite8(uchar)
		LDR	R3, [R5,#0x10]
		LDR	R0, [R3,#0x4C]
		BL	j_CheckIKVMKMEnable
		AND	R1, R0,	#0xFF
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite8(uchar)
		LDR	R3, [R5,#0x10]
		LDR	R0, [R3,#0x4C]
		BL	_j_CheckIKVMKickEnable
		AND	R1, R0,	#0xFF
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite8(uchar)
		LDR	R3, [R5,#0x10]
		LDR	R0, [R3,#0x4C]
		BL	j_CheckVUSBEnable
		AND	R1, R0,	#0xFF
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWrite8(uchar)
		LDR	R0, [R5,#8]
		BL	NtwStream::StreamWriteFlush(void)
		MOV	R0, #1
		ADD	SP, SP,	#0x6C
		LDMFD	SP!, {R4-R6,PC}
; End of function RFBProtocol::ProcServerInit(void)
```

front-ground-event (0x04):
```
.text:00011040                 EXPORT RFBProtocol::FrontGroundEvent(void)
.text:00011040 RFBProtocol::FrontGroundEvent(void)     ; CODE XREF: RFBProtocol::FrontGroundEvent(void)+8j
.text:00011040                                         ; DATA XREF: .got:_ZN11RFBProtocol16FrontGroundEventEv_ptro
.text:00011040
.text:00011040 var_7C          = -0x7C
.text:00011040 var_78          = -0x78
.text:00011040 var_70          = -0x70
.text:00011040 var_60          = -0x60
.text:00011040 var_48          = -0x48
.text:00011040 var_44          = -0x44
.text:00011040 var_40          = -0x40
.text:00011040 var_3C          = -0x3C
.text:00011040 var_38          = -0x38
.text:00011040 var_34          = -0x34
.text:00011040 var_30          = -0x30
.text:00011040 var_1C          = -0x1C
.text:00011040
.text:00011040                 STMFD   SP!, {R4-R8,LR}
.text:00011044                 SUB     SP, SP, #0x74
.text:00011048                 STR     R0, [SP,#0x8C+var_1C]
.text:0001104C                 ADD     R4, SP, #0x8C+var_30
.text:00011050                 LDR     R5, [R0,#4]
.text:00011054                 MOV     R7, R0
.text:00011058                 LDMIA   R4!, {R0-R3}
.text:0001105C                 ADD     LR, SP, #0x8C+var_78
.text:00011060                 LDR     R6, [R5]
.text:00011064                 STMIA   LR!, {R0-R3}
.text:00011068                 LDMIA   R4, {R0,R1}
.text:0001106C                 ADD     R12, SP, #0x8C+var_70
.text:00011070                 STMIA   LR, {R0,R1}
.text:00011074                 LDMIA   R12, {R0-R3}
.text:00011078                 ADD     R4, SP, #0x8C+var_60
.text:0001107C                 STMEA   SP, {R0-R3}
.text:00011080                 ADD     R12, SP, #0x8C+var_78
.text:00011084                 STR     R8, [SP,#0x8C+var_7C]
.text:00011088                 MOV     R1, R5
.text:0001108C                 LDMIA   R12, {R2,R3}
.text:00011090                 MOV     R0, R4
.text:00011094                 MOV     R5, R4
.text:00011098                 MOV     LR, PC
.text:0001109C                 LDR     PC, [R6,#0x30]
.text:000110A0                 LDMIA   R5!, {R0-R3}
.text:000110A4                 ADD     R12, SP, #0x8C+var_48
.text:000110A8                 STMIA   R12!, {R0-R3}
.text:000110AC                 LDMIA   R5, {R0,R1}
.text:000110B0                 STMIA   R12, {R0,R1}
.text:000110B4                 LDR     R0, [R7,#8]
.text:000110B8                 BL      NtwStream::StreamWriteStart(void)
.text:000110BC                 MOV     R1, #4
.text:000110C0                 LDR     R0, [R7,#8]
.text:000110C4                 BL      NtwStream::StreamWrite8(uchar)
.text:000110C8                 LDR     R1, [SP,#0x8C+var_48]
.text:000110CC                 LDR     R0, [R7,#8]
.text:000110D0                 BL      NtwStream::StreamWrite32(uint)
.text:000110D4                 LDR     R1, [SP,#0x8C+var_44]
.text:000110D8                 LDR     R0, [R7,#8]
.text:000110DC                 BL      NtwStream::StreamWrite32(uint)
.text:000110E0                 LDR     R1, [SP,#0x8C+var_40]
.text:000110E4                 LDR     R0, [R7,#8]
.text:000110E8                 BL      NtwStream::StreamWrite32(uint)
.text:000110EC                 LDR     R1, [SP,#0x8C+var_3C]
.text:000110F0                 LDR     R0, [R7,#8]
.text:000110F4                 BL      NtwStream::StreamWrite32(uint)
.text:000110F8                 LDR     R1, [SP,#0x8C+var_38]
.text:000110FC                 LDR     R0, [R7,#8]
.text:00011100                 BL      NtwStream::StreamWrite32(uint)
.text:00011104                 LDR     R2, [SP,#0x8C+var_34]
.text:00011108                 CMP     R2, #0
.text:0001110C                 BLE     loc_1111C
.text:00011110                 LDR     R3, [SP,#0x8C+var_38]
.text:00011114                 CMP     R3, #1
.text:00011118                 BEQ     loc_11130
.text:0001111C
.text:0001111C loc_1111C                               ; CODE XREF: RFBProtocol::FrontGroundEvent(void)+CCj
.text:0001111C                                         ; RFBProtocol::FrontGroundEvent(void)+FCj
.text:0001111C                 LDR     R0, [R7,#8]
.text:00011120                 BL      NtwStream::StreamWriteFlush(void)
.text:00011124                 MOV     R0, #1
.text:00011128                 ADD     SP, SP, #0x74
.text:0001112C                 LDMFD   SP!, {R4-R8,PC}
.text:00011130 ; ---------------------------------------------------------------------------
.text:00011130
.text:00011130 loc_11130                               ; CODE XREF: RFBProtocol::FrontGroundEvent(void)+D8j
.text:00011130                 LDR     R1, [R8]
.text:00011134                 LDR     R0, [R7,#8]
.text:00011138                 BL      NtwStream::StreamWrite(uchar *,uint)
.text:0001113C                 B       loc_1111C
.text:0001113C ; End of function RFBProtocol::FrontGroundEvent(void)
```

Keep-alive (0x22):
```
.text:00010FF8                 EXPORT RFBProtocol::KeepAliveEvent(void)
.text:00010FF8 RFBProtocol::KeepAliveEvent(void)       ; CODE XREF: RFBProtocol::KeepAliveEvent(void)+8j
.text:00010FF8                                         ; DATA XREF: .got:_ZN11RFBProtocol14KeepAliveEventEv_ptro
.text:00010FF8                 STMFD   SP!, {R4,R5,LR}
.text:00010FFC                 MOV     R5, R0
.text:00011000                 LDR     R0, [R0,#8]
.text:00011004                 BL      NtwStream::StreamRead8(void)
.text:00011008                 MOV     R4, R0
.text:0001100C                 LDR     R0, [R5,#8]
.text:00011010                 BL      NtwStream::StreamWriteStart(void)
.text:00011014                 AND     R4, R4, #0xFF
.text:00011018                 MOV     R1, #0x16
.text:0001101C                 LDR     R0, [R5,#8]
.text:00011020                 BL      NtwStream::StreamWrite8(uchar)
.text:00011024                 MOV     R1, R4
.text:00011028                 LDR     R0, [R5,#8]
.text:0001102C                 BL      NtwStream::StreamWrite8(uchar)
.text:00011030                 LDR     R0, [R5,#8]
.text:00011034                 BL      NtwStream::StreamWriteFlush(void)
.text:00011038                 MOV     R0, #1
.text:0001103C                 LDMFD   SP!, {R4,R5,PC}
.text:0001103C ; End of function RFBProtocol::KeepAliveEvent(void)
```

mouse-get-info (0x37):

```
.text:00011A90 RFBProtocol::MouseGetInfo(void)         ; CODE XREF: RFBProtocol::MouseGetInfo(void)+8j
.text:00011A90                                         ; DATA XREF: .got:_ZN11RFBProtocol12MouseGetInfoEv_ptro
.text:00011A90
.text:00011A90 var_1C          = -0x1C
.text:00011A90 var_18          = -0x18
.text:00011A90 var_14          = -0x14
.text:00011A90 var_C           = -0xC
.text:00011A90
.text:00011A90                 STMFD   SP!, {R4,R5,LR}
.text:00011A94                 SUB     SP, SP, #0x10
.text:00011A98                 MOV     R4, R0
.text:00011A9C                 BL      j_GetDBPowerStatus
.text:00011AA0                 MOV     R5, R0
.text:00011AA4                 AND     R5, R5, #0xFF
.text:00011AA8                 MOV     R1, R5
.text:00011AAC                 LDR     R0, =aPowerStatusD ; "Power Status == %d\n"
.text:00011AB0                 BL      printf
.text:00011AB4                 LDR     R2, [R4,#4]
.text:00011AB8                 ADD     R0, SP, #0x1C+var_14
.text:00011ABC                 LDR     R3, [R2]
.text:00011AC0                 MOV     R1, R2
.text:00011AC4                 MOV     LR, PC
.text:00011AC8                 LDR     PC, [R3,#0x10]
.text:00011ACC                 ADD     R2, SP, #0x1C+var_C
.text:00011AD0                 LDMDB   R2, {R1,R2}
.text:00011AD4                 LDR     R0, [R4,#8]
.text:00011AD8                 STMEA   SP, {R1,R2}
.text:00011ADC                 BL      NtwStream::StreamWriteStart(void)
.text:00011AE0                 MOV     R1, #0x37
.text:00011AE4                 LDR     R0, [R4,#8]
.text:00011AE8                 BL      NtwStream::StreamWrite8(uchar)
.text:00011AEC                 LDRB    R1, [SP,#0x1C+var_18]
.text:00011AF0                 LDR     R0, [R4,#8]
.text:00011AF4                 BL      NtwStream::StreamWrite8(uchar)
.text:00011AF8                 LDRB    R1, [SP,#0x1C+var_1C]
.text:00011AFC                 LDR     R0, [R4,#8]
.text:00011B00                 BL      NtwStream::StreamWrite8(uchar)
.text:00011B04                 MOV     R1, R5
.text:00011B08                 LDR     R0, [R4,#8]
.text:00011B0C                 BL      NtwStream::StreamWrite8(uchar)
.text:00011B10                 LDR     R0, [R4,#8]
.text:00011B14                 BL      NtwStream::StreamWriteFlush(void)
.text:00011B18                 ADD     SP, SP, #0x10
.text:00011B1C                 LDMFD   SP!, {R4,R5,PC}
.text:00011B1C ; End of function RFBProtocol::MouseGetInfo(void)
```

get-viewer-lang (0x3c):

```
.text:00010F3C                 EXPORT RFBProtocol::GetViewerLang(void)
.text:00010F3C RFBProtocol::GetViewerLang(void)        ; CODE XREF: RFBProtocol::GetViewerLang(void)+8j
.text:00010F3C                                         ; DATA XREF: .got:_ZN11RFBProtocol13GetViewerLangEv_ptro
.text:00010F3C                 STMFD   SP!, {R4,LR}
.text:00010F40                 MOV     R4, R0
.text:00010F44                 LDR     R0, [R0,#8]
.text:00010F48                 BL      NtwStream::StreamWriteStart(void)
.text:00010F4C                 MOV     R1, #0x3C
.text:00010F50                 LDR     R0, [R4,#8]
.text:00010F54                 BL      NtwStream::StreamWrite8(uchar)
.text:00010F58                 LDR     R2, [R4,#0x10]
.text:00010F5C                 LDR     R0, [R4,#8]
.text:00010F60                 LDR     R3, [R2,#0x4C]
.text:00010F64                 LDR     R1, [R3,#0x15C]
.text:00010F68                 BL      NtwStream::StreamWrite32(uint)
.text:00010F6C                 LDR     R2, [R4,#0x10]
.text:00010F70                 LDR     R0, [R4,#8]
.text:00010F74                 LDR     R3, [R2,#0x4C]
.text:00010F78                 LDR     R1, [R3,#0x160]
.text:00010F7C                 BL      NtwStream::StreamWrite32(uint)
.text:00010F80                 LDR     R0, [R4,#8]
.text:00010F84                 LDMFD   SP!, {R4,LR}
.text:00010F88                 B       NtwStream::StreamWriteFlush(void)
.text:00010F88 ; End of function RFBProtocol::GetViewerLang(void)
```

Thoughts?