void FUN_80030564(int *param_1,uint param_2)
{
byte bVar1;
ushort uVar2;
byte extraout_r1;
ushort extraout_r1_00;
int extraout_r1_01;
int extraout_r1_02;
uint extraout_r1_03;
uint extraout_r1_04;
uint uVar3;
uint uVar4;
int *piVar5;
int iVar6;
uVar3 = 0;
do {
uVar4 = 0;
piVar5 = param_1;
while (uVar4 < param_2 >> 2) {
divide(uVar4 + uVar3,0xff);
uVar4 = uVar4 + 1;
*piVar5 = extraout_r1_01;
piVar5 = piVar5 + 1;
}
uVar4 = 0;
piVar5 = param_1;
while (uVar4 < param_2 >> 2) {
iVar6 = *piVar5;
divide(uVar4 + uVar3,0xff);
if (extraout_r1_02 != iVar6) {
return;
}
uVar4 = uVar4 + 1;
piVar5 = piVar5 + 1;
}
uVar3 = uVar3 + 1;
} while (uVar3 < 2);
uVar3 = 0;
do {
uVar4 = 0;
piVar5 = param_1;
while (uVar4 < param_2 >> 1) {
divide(uVar4 + uVar3,0xff);
uVar4 = uVar4 + 1;
*(ushort *)piVar5 = extraout_r1_00;
piVar5 = (int *)((int)piVar5 + 2);
}
uVar4 = 0;
piVar5 = param_1;
while (uVar4 < param_2 >> 1) {
uVar2 = *(ushort *)piVar5;
divide(uVar4 + uVar3,0xff);
if (extraout_r1_03 != uVar2) {
return;
}
uVar4 = uVar4 + 1;
piVar5 = (int *)((int)piVar5 + 2);
}
uVar3 = uVar3 + 1;
} while (uVar3 < 2);
uVar3 = 0;
do {
uVar4 = 0;
piVar5 = param_1;
while (uVar4 < param_2) {
divide(uVar4 + uVar3,0xff);
uVar4 = uVar4 + 1;
*(byte *)piVar5 = extraout_r1;
piVar5 = (int *)((int)piVar5 + 1);
}
uVar4 = 0;
piVar5 = param_1;
while (uVar4 < param_2) {
bVar1 = *(byte *)piVar5;
divide(uVar4 + uVar3,0xff);
if (extraout_r1_04 != bVar1) {
return;
}
uVar4 = uVar4 + 1;
piVar5 = (int *)((int)piVar5 + 1);
}
uVar3 = uVar3 + 1;
} while (uVar3 < 2);
uVar3 = 0;
while (uVar3 < param_2) {
uVar3 = uVar3 + 1;
*(byte *)param_1 = 0;
param_1 = (int *)((int)param_1 + 1);
}
return;
}
case ARM_COND_LOWER_SAME:
//For execute on lower or the same C needs to be cleared and Z needs to be set
if((core->status->flags.C == 0) && (core->status->flags.Z))
execute = 1;
break;
case ARM_COND_LESS_THAN_EQUAL:
//For execute on less than or equal than N needs to be not equal to V and Z needs to be set
if((core->status->flags.N != core->status->flags.V) && (core->status->flags.Z))
execute = 1;
break;
case ARM_COND_LOWER_SAME:
//For execute on lower or the same C needs to be cleared and Z needs to be set
if((core->status->flags.C == 0) || (core->status->flags.Z))
execute = 1;
break;
case ARM_COND_LESS_THAN_EQUAL:
//For execute on less than or equal than N needs to be not equal to V and Z needs to be set
if((core->status->flags.N != core->status->flags.V) || (core->status->flags.Z))
execute = 1;
break;
7:Storage depth: 240Kbit
@pcprogrammer
First, your work is highly appreciated.
But do the daily water level reports really help anyone?7:Storage depth: 240KbitSource??
@pcprogrammer
First, your work is highly appreciated.
But do the daily water level reports really help anyone?
int FUN_8002cf28(uint param_1)
{
uint *puVar1;
int iVar2;
uint uVar3;
int iVar4;
uint uVar5;
uint uVar6;
int unaff_r5;
FUN_8002fb5c(); //Already called from FUN_80018464 and therefore does nothing
puVar1 = DAT_8002d040; //0x80857C80
uVar5 = DAT_8002d040[0x10]; //*0x80857CC0 = 0x00000010
if (uVar5 <= param_1) //16 <= 6032 ?? cmp r1,r4 | r1 = 0x00000010, r4 = 0x00001790 | carry not set ???
{
uVar5 = param_1 + 3 & 0xfffffffc; //Make it on a word boundary.
}
uVar5 = uVar5 + 0xc; //uvar5 = 0x1C
pa:0x8002CF34 0xE59F6104 YES ldr r6, [pc, #260] r0:0x00000001 r1:0x00000080 r2:0x00000178 r3:0xFFFFFFB8 r4:0x00001790 r5:0x80857C8C r6:0x80857C80 r7:0x80192E6B cpsr:0x20000053
pa:0x8002CF38 0xE5961040 YES ldr r1, [r6, #64] r0:0x00000001 r1:0x00000010 r2:0x00000178 r3:0xFFFFFFB8 r4:0x00001790 r5:0x80857C8C r6:0x80857C80 r7:0x80192E6B cpsr:0x20000053
pa:0x8002CF3C 0xE1510004 YES cmp r1, r4 r0:0x00000001 r1:0x00000010 r2:0x00000178 r3:0xFFFFFFB8 r4:0x00001790 r5:0x80857C8C r6:0x80857C80 r7:0x80192E6B cpsr:0x80000053
pa:0x8002CF40 0x92840003 NO addls r0, r4, #3 r0:0x00000001 r1:0x00000010 r2:0x00000178 r3:0xFFFFFFB8 r4:0x00001790 r5:0x80857C8C r6:0x80857C80 r7:0x80192E6B cpsr:0x80000053
pa:0x8002CF44 0x93C01003 NO bicls r1, r0, #3 r0:0x00000001 r1:0x00000010 r2:0x00000178 r3:0xFFFFFFB8 r4:0x00001790 r5:0x80857C8C r6:0x80857C80 r7:0x80192E6B cpsr:0x80000053
pa:0x8002CF48 0xE5960000 YES ldr r0, [r6, #0] r0:0x00000000 r1:0x00000010 r2:0x00000178 r3:0xFFFFFFB8 r4:0x00001790 r5:0x80857C8C r6:0x80857C80 r7:0x80192E6B cpsr:0x80000053
pa:0x8002CF4C 0xE281400C YES add r4, r1, #12 r0:0x00000000 r1:0x00000010 r2:0x00000178 r3:0xFFFFFFB8 r4:0x0000001C r5:0x80857C8C r6:0x80857C80 r7:0x80192E6B cpsr:0x80000053
LAB_80000634 XREF[1]: 80000628(j)
80000634 02 2c cmp r4,#0x2
80000636 0b d3 bcc LAB_80000650
80000638 67 08 lsr r7,r4,#0x1
8000063a 32 04 lsl count,r6,#0x10
8000063c 7f 00 lsl r7,r7,#0x1
8000063e 32 43 orr count,r6
80000640 79 00 lsl data,r7,#0x1
80000642 28 00 mov dest,r5
80000644 00 91 str data,[sp,#0x0]=>local_20
80000646 00 f0 3a e9 blx FUN_800008bc undefined FUN_800008bc()
8000064a 00 99 ldr data,[sp,#0x0]=>local_20
8000064c e4 1b sub r4,r4,r7
8000064e 4d 19 add r5,data,r5
b) They help me For me it helps to write about what I encounter and sometimes brings light to my brain.
Question.
Is there someone with a 1013D scope and a good I2C sniffer willing to capture the data communication between the fpga and the special chip.
I saved the "turn on procedure" of the scope, with "Saleae Logic 2" (my prog version is 2.3.26)
I hope it can be open without hardware device too.
Thanks very much.
.
.
...hope that you are willing to capture more if needed.
BUt it should be very hard to read for people just searching for some funded infos on the scope.
Instead of a daily diary i would suggest a seperated thread of its own - "Hacking the tablet scope" .
Or a detailed diary on github or something else