[XPERIA X1 Android Development] angusmcb:
Here are the relevant bits from microp.dll

text:100078C8 ReadLedProjectNameFromI2C ; CODE XREF: KLT_IOControl+250p
.text:100078C8 ; DATA XREF: .pdata:1000D0B0o
.text:100078C8
.text:100078C8 var_4 = -4
.text:100078C8
.text:100078C8 STR LR, [SP,#var_4]!
.text:100078CC MOV R3, R0
.text:100078D0 MOV R2, #1
.text:100078D4 MOV R1, #2
.text:100078D8 MOV R0, #0x30
.text:100078DC BL KLTReadByIndex
.text:100078E0 LDR LR, [SP+4+var_4],#4
.text:100078E4 BX LR
.text:100078E4 ; End of function ReadLedProjectNameFromI2C
.text:100078E4

text:100074A8 KLTReadByIndex ; CODE XREF: ReadLedVersionFromI2C+14p
.text:100074A8 ; ReadLedProjectNameFromI2C+14p
.text:100074A8 ; sub_10007D80+20p
.text:100074A8 ; DATA XREF: .pdata:1000D088o
.text:100074A8 buf = R8
.text:100074A8 STMFD SP!, {R4-R9,LR}
.text:100074AC MOV R5, R3
.text:100074B0 MOV R6, R2
.text:100074B4 MOV R7, R1
.text:100074B8 MOV R9, R0
.text:100074BC MOV R0, R7 ; size_t
.text:100074C0 MOV R4, #1
.text:100074C4 BL malloc
.text:100074C8 MOV buf, R0
.text:100074CC MOV R0, #0x20
.text:100074D0 MOV R1, #0x4000000
.text:100074D4 BL getError
.text:100074D8 CMP R0, #0
.text:100074DC LDRNE R0, =aKltreadbyindex ; "[KLTReadByIndex] Start!!\r\n"
.text:100074E0 BLNE NKDbgPrintfW
.text:100074E4 CMP R6, R7
.text:100074E8 BCC loc_10007514
.text:100074EC MOV R1, #0x10000000
.text:100074F0 MOV R0, #0x20
.text:100074F4 BL getError
.text:100074F8 CMP R0, #0
.text:100074FC LDRNE R0, =aKltreadbyind_0 ; "[KLTReadByIndexEnd] Input index (%d) is"...
.text:10007500 MOVNE R2, R7
.text:10007504 MOVNE R1, R6
.text:10007508 BLNE NKDbgPrintfW
.text:1000750C
.text:1000750C loc_1000750C ; CODE XREF: KLTReadByIndex+98j
.text:1000750C MOV R4, #0
.text:10007510 B loc_10007570
.text:10007514 ; ---------------------------------------------------------------------------
.text:10007514
.text:10007514 loc_10007514 ; CODE XREF: KLTReadByIndex+40j
.text:10007514 MOV R3, buf
.text:10007518 MOV R2, R7
.text:1000751C MOV R1, R9
.text:10007520 MOV R0, #0xCC
.text:10007524 BL I2CMgr_ReadMultiBytes
.text:10007528 CMP R0, #0
.text:1000752C BNE loc_10007554
.text:10007530 MOV R1, #0x10000000
.text:10007534 MOV R0, #0x20
.text:10007538 BL getError
.text:1000753C CMP R0, #0
.text:10007540 BEQ loc_1000750C
.text:10007544 LDR R0, =aKltreadbyind_1 ; "[KLTReadByIndex] Failed to run I2CMgr_R"...
.text:10007548 BL NKDbgPrintfW
.text:1000754C MOV R4, #0
.text:10007550 B loc_10007570
.text:10007554 ; ---------------------------------------------------------------------------
.text:10007554
.text:10007554 loc_10007554 ; CODE XREF: KLTReadByIndex+84j
.text:10007554 CMP R5, #0
.text:10007558 BNE loc_10007568
.text:1000755C MOV R0, #4 ; size_t
.text:10007560 BL malloc
.text:10007564 MOV R5, R0
.text:10007568
.text:10007568 loc_10007568 ; CODE XREF: KLTReadByIndex+B0j
.text:10007568 LDRB R3, [buf,R6]
.text:1000756C STR R3, [R5]
.text:10007570
.text:10007570 loc_10007570 ; CODE XREF: KLTReadByIndex+68j
.text:10007570 ; KLTReadByIndex+A8j
.text:10007570 MOV R0, buf ; void *
.text:10007574 BL free
.text:10007578 MOV R1, #0x4000000
.text:1000757C MOV R0, #0x20
.text:10007580 BL getError
.text:10007584 CMP R0, #0
.text:10007588 LDRNE R0, =aKltreadbyind_2 ; "[KLTReadByIndex] End!!\r\n"
.text:1000758C BLNE NKDbgPrintfW
.text:10007590 MOV R0, R4
.text:10007594 LDMFD SP!, {R4-R9,LR}
.text:10007598 BX LR
.text:10007598 ; End of function KLTReadByIndex