Skip to content

Instantly share code, notes, and snippets.

@Gkiokan
Created April 23, 2026 12:22
Show Gist options
  • Select an option

  • Save Gkiokan/f027af4728981ec6bd2466cfcc8e00ef to your computer and use it in GitHub Desktop.

Select an option

Save Gkiokan/f027af4728981ec6bd2466cfcc8e00ef to your computer and use it in GitHub Desktop.
pa5x_main_fnc
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 FUN_00000f2e_MAIN(void)
{
undefined2 uVar1;
short sVar2;
undefined2 uVar3;
short sVar4;
bool bVar5;
undefined4 *puVar6;
code *pcVar7;
char cVar8;
undefined1 uVar9;
short sVar10;
int iVar11;
undefined4 uVar12;
uint uVar13;
int *piVar14;
int iVar15;
int extraout_r1;
int extraout_r1_00;
uint extraout_r1_01;
uint uVar16;
byte bVar17;
ushort uVar18;
int *piVar19;
uint uVar20;
code *pcVar21;
uint uVar22;
int iVar23;
ushort *puVar24;
undefined1 *puVar25;
undefined1 *puVar26;
uint uVar27;
uint uVar28_MAYBE_RAW_SIGNAL;
byte *pbVar28;
ushort uVar29;
int unaff_r11;
undefined2 uStack00000004;
int *in_stack_00000008;
undefined2 uStack00000018;
byte bStack0000001a;
byte bStack0000001b;
undefined1 in_stack_0000001c;
byte bVar15_EXTRACT_2BIT_COMMAND_TYPE;
pcVar7 = _DAT_0000170c;
puVar6 = DAT_00000fa8;
iVar15 = DAT_00000fa4;
cVar8 = *(char *)(unaff_r11 + DAT_00000fa0_OFFSET_CURRENT_STATE);
if (cVar8 != '\x03') {
LAB_00000eb6:
if (cVar8 != '\x04') {
return 0;
}
LAB_00000d4c:
iVar15 = DAT_00000fd8;
piVar19 = *(int **)(DAT_00000fd8 + 4);
if (*(code **)(*piVar19 + 0x14) == DAT_00000fdc_MAYBE_TOGGLE_PIN_TO_SEND_DATA) {
uVar13 = 0;
if ((uint)(piVar19[3] - piVar19[4]) < (uint)piVar19[2]) {
uVar13 = piVar19[2] - (piVar19[3] - piVar19[4]);
}
}
else {
uVar13 = (**(code **)(*piVar19 + 0x14))(piVar19);
}
uVar27 = (uint)*(byte *)(unaff_r11 + DAT_00000fac);
if (uVar27 <= uVar13) {
iVar15 = *(int *)(iVar15 + 4);
iVar23 = DAT_00000fcc_TX_PACKET_HEADER + unaff_r11;
uVar13 = 0;
if ((uint)(*(int *)(iVar15 + 0xc) - *(int *)(iVar15 + 0x10)) < *(uint *)(iVar15 + 8)) {
FUN_00001744_BUFFER_OVERFLOW_RECOVER_RECALIBRATION();
iVar15 = extraout_r1;
}
if (uVar13 < uVar27) {
FUN_00001740_DONOTHING();
iVar15 = extraout_r1_00;
}
iVar11 = 0;
_uStack00000018 = *(uint *)(iVar15 + 0xc);
if (uVar27 != 0) {
do {
uVar13 = _uStack00000018 + 1;
puVar25 = (undefined1 *)(iVar23 + iVar11);
iVar11 = iVar11 + 1;
*(undefined1 *)(*(int *)(iVar15 + 0x18) + (*(uint *)(iVar15 + 0x14) & _uStack00000018)) =
*puVar25;
_uStack00000018 = uVar13;
} while (iVar11 < (int)uVar27);
}
*(uint *)(iVar15 + 0xc) = _uStack00000018;
*(undefined1 *)(unaff_r11 + DAT_00000fa0_OFFSET_CURRENT_STATE) = 3;
}
return 0;
}
piVar19 = (int *)*DAT_00000fa8;
if ((char)piVar19[7] != '\0') {
uVar13 = piVar19[3] - piVar19[4];
if ((uVar13 & 0xffff) != 0) {
uStack00000004 = (undefined2)uVar13;
if ((uVar13 & 0xffff) == 0) {
puVar26 = &DAT_20000c20;
uRam20000c2e = uStack00000004;
iRam20000c28 = unaff_r11 + 0x29;
uRam20000c2c = uStack00000004;
}
else {
puVar25 = (undefined1 *)(unaff_r11 + 0x29);
while( true ) {
uVar27 = _uStack00000018;
if (*(code **)(*piVar19 + 0x10) == pcVar7) {
_uStack00000018 = _uStack00000018 & 0xffffff00;
uVar9 = 0;
if (piVar19[3] != piVar19[4]) {
_uStack00000018 = CONCAT31(SUB43(uVar27,1),1);
uVar9 = *(undefined1 *)(piVar19[6] + (piVar19[4] & piVar19[5]));
piVar19[4] = piVar19[4] + 1;
}
*puVar25 = uVar9;
puVar26 = _DAT_00001710;
}
else {
uVar9 = (**(code **)(*piVar19 + 0x10))(piVar19,&stack0x00000018);
*puVar25 = uVar9;
puVar26 = _DAT_00001710;
}
_DAT_00001710 = puVar26;
if ((undefined1 *)((uVar13 & 0xffff) + 0x29 + unaff_r11) == puVar25 + 1) break;
puVar25 = puVar25 + 1;
piVar19 = (int *)*puVar6;
}
*(undefined2 *)(puVar26 + 0xc) = 0;
*(undefined1 **)(puVar26 + 8) = (undefined1 *)(unaff_r11 + 0x29);
*(undefined2 *)(puVar26 + 0xe) = uStack00000004;
}
iVar23 = unaff_r11 + 0x29;
uVar13 = 0;
LAB_00001490:
pbVar28 = (byte *)(iVar23 + uVar13);
bVar15_EXTRACT_2BIT_COMMAND_TYPE = *pbVar28 >> 6;
puVar26[0x1c] = bVar15_EXTRACT_2BIT_COMMAND_TYPE;
uVar27 = (int)(uint)*pbVar28 >> 5 & 1;
puVar26[0x1e] = (char)uVar27;
uVar20 = (int)(uint)*pbVar28 >> 4 & 1;
uVar9 = (undefined1)uVar20;
puVar26[0x1d] = uVar9;
uVar16 = *pbVar28 & 0xf;
puVar26[0x1f] = (char)uVar16;
if (uVar27 == 1) {
uVar27 = uVar13 + 1 & 0xffff;
sVar4 = (short)(uVar13 + 1);
*(short *)(puVar26 + 0xc) = sVar4;
uVar29 = (ushort)*(byte *)(iVar23 + uVar27);
*(ushort *)(puVar26 + 0x20) = (ushort)*(byte *)(iVar23 + uVar27);
pcVar7 = _DAT_00001714;
piVar19 = *(int **)(uVar16 * 4 + *(int *)(puVar26 + 4));
if (piVar19 != (int *)0x0) {
uVar18 = uVar29;
if (uVar29 != 0) {
do {
if (uVar29 == uVar18) {
puVar26[0x2c] = bVar15_EXTRACT_2BIT_COMMAND_TYPE;
puVar26[0x2d] = puVar26[0x1d];
}
*(short *)(puVar26 + 0xc) = (short)(uVar27 + 1);
puVar26[0x24] = *(undefined1 *)(iVar23 + (uVar27 + 1 & 0xffff));
if (bVar15_EXTRACT_2BIT_COMMAND_TYPE == 0) {
*(short *)(puVar26 + 0xc) = (short)(uVar27 + 2);
puVar26[0x2e] = *(undefined1 *)(iVar23 + (uVar27 + 2 & 0xffff));
pcVar21 = *(code **)(*piVar19 + 8);
if (pcVar21 == pcVar7) goto LAB_00001518;
LAB_00001584:
piVar14 = (int *)(*pcVar21)(piVar19,_DAT_00001718);
(**(code **)(*piVar14 + 8))();
}
else {
if (bVar15_EXTRACT_2BIT_COMMAND_TYPE == 1) {
*(short *)(puVar26 + 0xc) = (short)(uVar27 + 2);
puVar26[0x2e] = *(undefined1 *)(iVar23 + (uVar27 + 2 & 0xffff));
*(short *)(puVar26 + 0xc) = (short)(uVar27 + 3);
puVar26[0x2f] = *(undefined1 *)(iVar23 + (uVar27 + 3 & 0xffff));
}
else if (bVar15_EXTRACT_2BIT_COMMAND_TYPE == 2) {
*(short *)(puVar26 + 0xc) = (short)(uVar27 + 2);
puVar26[0x2e] = *(undefined1 *)(iVar23 + (uVar27 + 2 & 0xffff));
*(short *)(puVar26 + 0xc) = (short)(uVar27 + 3);
puVar26[0x2f] = *(undefined1 *)(iVar23 + (uVar27 + 3 & 0xffff));
*(short *)(puVar26 + 0xc) = (short)(uVar27 + 4);
puVar26[0x30] = *(undefined1 *)(iVar23 + (uVar27 + 4 & 0xffff));
}
pcVar21 = *(code **)(*piVar19 + 8);
if (pcVar21 != pcVar7) goto LAB_00001584;
LAB_00001518:
if (puVar26[0x2d] == '\x01') {
*(undefined1 **)(*(int *)piVar19[1] + 4) = puVar26 + 0x24;
in_stack_00000008 = *(int **)piVar19[1];
}
else if (puVar26[0x2d] == '\0') {
*(undefined1 **)(*(int *)piVar19[2] + 4) = puVar26 + 0x24;
in_stack_00000008 = *(int **)piVar19[2];
}
(**(code **)(*in_stack_00000008 + 8))();
}
uVar29 = uVar29 - 1;
if (uVar29 == 0) goto LAB_00001594;
bVar15_EXTRACT_2BIT_COMMAND_TYPE = puVar26[0x1c];
iVar23 = *(int *)(puVar26 + 8);
uVar27 = (uint)*(ushort *)(puVar26 + 0xc);
uVar18 = *(ushort *)(puVar26 + 0x20);
} while( true );
}
goto LAB_00001480;
}
sVar2 = *(short *)(puVar26 + 0x20);
sVar10 = sVar2;
if (bVar15_EXTRACT_2BIT_COMMAND_TYPE == 2) {
do {
if (sVar10 == sVar2) {
puVar26[0x2c] = 2;
puVar26[0x2d] = uVar9;
}
*(short *)(puVar26 + 0xc) = (short)(uVar27 + 1);
sVar10 = sVar10 + -1;
puVar26[0x24] = *(undefined1 *)(iVar23 + (uVar27 + 1 & 0xffff));
*(short *)(puVar26 + 0xc) = (short)(uVar27 + 2);
puVar26[0x2e] = *(undefined1 *)(iVar23 + (uVar27 + 2 & 0xffff));
uVar16 = uVar27 + 3;
*(short *)(puVar26 + 0xc) = (short)uVar16;
uVar13 = uVar27 + 4;
uVar27 = uVar13 & 0xffff;
puVar26[0x2f] = *(undefined1 *)(iVar23 + (uVar16 & 0xffff));
*(short *)(puVar26 + 0xc) = (short)uVar13;
puVar26[0x30] = *(undefined1 *)(iVar23 + uVar27);
} while (sVar10 != 0);
uVar29 = sVar4 + sVar2 * 4;
}
else if (bVar15_EXTRACT_2BIT_COMMAND_TYPE == 0) {
do {
if (sVar10 == sVar2) {
puVar26[0x2c] = 0;
puVar26[0x2d] = uVar9;
}
uVar16 = uVar27 + 1;
*(short *)(puVar26 + 0xc) = (short)uVar16;
uVar13 = uVar27 + 2;
uVar27 = uVar13 & 0xffff;
puVar26[0x24] = *(undefined1 *)(iVar23 + (uVar16 & 0xffff));
*(short *)(puVar26 + 0xc) = (short)uVar13;
sVar10 = sVar10 + -1;
puVar26[0x2e] = *(undefined1 *)(iVar23 + uVar27);
} while (sVar10 != 0);
uVar29 = sVar4 + sVar2 * 2;
}
else if (bVar15_EXTRACT_2BIT_COMMAND_TYPE == 1) {
do {
if (sVar2 == sVar10) {
puVar26[0x2c] = 1;
puVar26[0x2d] = uVar9;
}
*(short *)(puVar26 + 0xc) = (short)(uVar27 + 1);
sVar10 = sVar10 + -1;
puVar26[0x24] = *(undefined1 *)(iVar23 + (uVar27 + 1 & 0xffff));
uVar16 = uVar27 + 2;
*(short *)(puVar26 + 0xc) = (short)uVar16;
uVar13 = uVar27 + 3;
uVar27 = uVar13 & 0xffff;
puVar26[0x2e] = *(undefined1 *)(iVar23 + (uVar16 & 0xffff));
*(short *)(puVar26 + 0xc) = (short)uVar13;
puVar26[0x2f] = *(undefined1 *)(iVar23 + uVar27);
} while (sVar10 != 0);
uVar29 = sVar4 + sVar2 * 3;
}
else {
uVar13 = uVar13 + 2;
do {
uVar27 = uVar13 & 0xffff;
if (sVar2 == sVar10) {
puVar26[0x2c] = bVar15_EXTRACT_2BIT_COMMAND_TYPE;
puVar26[0x2d] = uVar9;
}
*(short *)(puVar26 + 0xc) = (short)uVar13;
sVar10 = sVar10 + -1;
uVar13 = uVar27 + 1;
puVar26[0x24] = *(undefined1 *)(iVar23 + uVar27);
} while (sVar10 != 0);
uVar29 = sVar4 + sVar2;
}
}
else {
piVar19 = *(int **)(uVar16 * 4 + *(int *)(puVar26 + 4));
if (piVar19 != (int *)0x0) {
puVar26[0x2c] = bVar15_EXTRACT_2BIT_COMMAND_TYPE;
sVar4 = *(short *)(puVar26 + 0xc);
*(ushort *)(puVar26 + 0xc) = sVar4 + 1U;
puVar26[0x24] = *(undefined1 *)(iVar23 + (uint)(ushort)(sVar4 + 1U));
puVar26[0x2d] = uVar9;
if (bVar15_EXTRACT_2BIT_COMMAND_TYPE == 0) {
*(ushort *)(puVar26 + 0xc) = sVar4 + 2U;
puVar26[0x2e] = *(undefined1 *)(iVar23 + (uint)(ushort)(sVar4 + 2U));
}
else if (bVar15_EXTRACT_2BIT_COMMAND_TYPE == 1) {
*(ushort *)(puVar26 + 0xc) = sVar4 + 2U;
puVar26[0x2e] = *(undefined1 *)(iVar23 + (uint)(ushort)(sVar4 + 2U));
*(ushort *)(puVar26 + 0xc) = sVar4 + 3U;
puVar26[0x2f] = *(undefined1 *)(iVar23 + (uint)(ushort)(sVar4 + 3U));
}
else if (bVar15_EXTRACT_2BIT_COMMAND_TYPE == 2) {
*(ushort *)(puVar26 + 0xc) = sVar4 + 2U;
puVar26[0x2e] = *(undefined1 *)(iVar23 + (uint)(ushort)(sVar4 + 2U));
*(ushort *)(puVar26 + 0xc) = sVar4 + 3U;
puVar26[0x2f] = *(undefined1 *)(iVar23 + (uint)(ushort)(sVar4 + 3U));
*(ushort *)(puVar26 + 0xc) = sVar4 + 4U;
puVar26[0x30] = *(undefined1 *)(iVar23 + (uint)(ushort)(sVar4 + 4U));
}
if (*(code **)(*piVar19 + 8) == _DAT_00001714) {
if (uVar20 == 1) {
*(undefined4 *)(*(int *)piVar19[1] + 4) = 0x20000c44;
piVar19 = *(int **)piVar19[1];
}
else {
*(undefined4 *)(*(int *)piVar19[2] + 4) = _DAT_00001718;
piVar19 = *(int **)piVar19[2];
}
}
else {
piVar19 = (int *)(**(code **)(*piVar19 + 8))(piVar19,0x20000c44);
}
(**(code **)(*piVar19 + 8))();
uVar27 = (uint)*(ushort *)(puVar26 + 0xc);
goto LAB_00001480;
}
sVar4 = *(short *)(puVar26 + 0xc);
puVar26[0x2c] = bVar15_EXTRACT_2BIT_COMMAND_TYPE;
uVar29 = sVar4 + 1;
*(ushort *)(puVar26 + 0xc) = uVar29;
puVar26[0x24] = *(undefined1 *)(iVar23 + (uint)uVar29);
puVar26[0x2d] = uVar9;
if (bVar15_EXTRACT_2BIT_COMMAND_TYPE == 0) {
uVar29 = sVar4 + 2;
*(ushort *)(puVar26 + 0xc) = uVar29;
puVar26[0x2e] = *(undefined1 *)(iVar23 + (uint)uVar29);
}
else if (bVar15_EXTRACT_2BIT_COMMAND_TYPE == 1) {
*(ushort *)(puVar26 + 0xc) = sVar4 + 2U;
puVar26[0x2e] = *(undefined1 *)(iVar23 + (uint)(ushort)(sVar4 + 2U));
uVar29 = sVar4 + 3;
*(ushort *)(puVar26 + 0xc) = uVar29;
puVar26[0x2f] = *(undefined1 *)(iVar23 + (uint)uVar29);
}
else if (bVar15_EXTRACT_2BIT_COMMAND_TYPE == 2) {
*(ushort *)(puVar26 + 0xc) = sVar4 + 2U;
puVar26[0x2e] = *(undefined1 *)(iVar23 + (uint)(ushort)(sVar4 + 2U));
*(ushort *)(puVar26 + 0xc) = sVar4 + 3U;
puVar26[0x2f] = *(undefined1 *)(iVar23 + (uint)(ushort)(sVar4 + 3U));
uVar29 = sVar4 + 4;
*(ushort *)(puVar26 + 0xc) = uVar29;
puVar26[0x30] = *(undefined1 *)(iVar23 + (uint)uVar29);
}
}
piVar19 = (int *)*puVar6;
*(ushort *)(puVar26 + 0xc) = uVar29 + 1;
}
goto LAB_0000167a;
}
if (*(int *)(DAT_00000fa4 + 0xc) << 0x18 < 0) {
return 0;
}
iVar23 = 0x230;
uVar13 = (uint)*(byte *)(unaff_r11 + 0x230);
if (uVar13 == 0) {
if (*(int *)(DAT_00000fa4 + 0x10) << 0x1f < 0) goto LAB_00001032;
*(undefined1 *)(unaff_r11 + DAT_00000fac) = 0;
uVar13 = (uint)*(ushort *)(iVar15 + 0x32);
if (uVar13 == DAT_00000fb0) {
uVar13 = FUN_000016aa_INTERPOLATED_COORDINATE_REFINER();
}
uVar27 = uVar13 & 0xff;
*(char *)(unaff_r11 + DAT_00000fb4) = (char)uVar13;
if (uVar27 == 0xff) {
FUN_00001a14_COMMUNICATION_ERROR_RESET_HANDLER();
}
*(undefined1 *)(unaff_r11 + DAT_00000fb8) = *(undefined1 *)(unaff_r11 + 0x23c);
iVar23 = DAT_00000fbc;
*(undefined1 *)(unaff_r11 + 0x23c) = *(undefined1 *)(unaff_r11 + DAT_00000fbc);
iVar11 = DAT_00000fc0_HISTORY_BUFFER_ARRAY;
*(undefined1 *)(unaff_r11 + iVar23) =
*(undefined1 *)(unaff_r11 + DAT_00000fc0_HISTORY_BUFFER_ARRAY);
*(char *)(unaff_r11 + iVar11) = (char)uVar27;
uVar20 = (uint)*(byte *)(unaff_r11 + DAT_00000fc4_HISTORY_COUNT);
uVar13 = 0;
uVar16 = 0;
while( true ) {
uVar16 = uVar16 + 1 & 0xff;
uVar13 = uVar13 + uVar27 & 0xffff;
if (uVar20 < uVar16) break;
uVar27 = (uint)*(byte *)(unaff_r11 + uVar16 + DAT_00000fc0_HISTORY_BUFFER_ARRAY);
}
cVar8 = FUN_00006ec8_INTEGER_DIVISION(uVar13,uVar20 + 1);
*(char *)(unaff_r11 + DAT_00000fb4) = cVar8;
if (uVar20 < 3) {
*(char *)(unaff_r11 + DAT_00000fc4_HISTORY_COUNT) = (char)(uVar20 + 1);
}
if (*(char *)(unaff_r11 + DAT_00000fc8) != cVar8) {
*(char *)(unaff_r11 + DAT_00000fc8) = cVar8;
*(undefined1 *)(unaff_r11 + DAT_00000fcc_TX_PACKET_HEADER) = 0x12;
*(undefined1 *)(unaff_r11 + DAT_00000fd0_MAYBE_TX_LENGTH) = 6;
*(char *)(unaff_r11 + DAT_00000fd4) = cVar8;
*(undefined1 *)(unaff_r11 + DAT_00000fac) = 3;
if (-1 < *(int *)(iVar15 + 0xc) << 0x18) {
FUN_00001880_MAIN_COORDINATE_ENGINE();
}
*(undefined1 *)(unaff_r11 + DAT_00000fa0_OFFSET_CURRENT_STATE) = 4;
goto LAB_00000d4c;
}
if (-1 < *(int *)(iVar15 + 0xc) << 0x18) {
FUN_00001752_CONDITIONAL_RECALCULATION();
}
cVar8 = *(char *)(unaff_r11 + DAT_00000fa0_OFFSET_CURRENT_STATE);
goto LAB_00000eb6;
}
goto LAB_00001004;
LAB_00001594:
uVar27 = (uint)*(ushort *)(puVar26 + 0xc);
LAB_00001480:
uVar13 = uVar27 + 1 & 0xffff;
*(short *)(puVar26 + 0xc) = (short)(uVar27 + 1);
if (*(ushort *)(puVar26 + 0xe) <= uVar13) goto LAB_000019f6;
iVar23 = *(int *)(puVar26 + 8);
goto LAB_00001490;
LAB_000019f6:
piVar19 = (int *)*puVar6;
LAB_0000167a:
*(undefined1 *)(piVar19 + 7) = 0;
if (*(int *)(iVar15 + 0xc) << 0x18 < 0) {
FUN_00000eb0_COORDINATE_BUFFER_COMMITTER();
}
iVar23 = 0x230;
uVar13 = (uint)*(byte *)(unaff_r11 + 0x230);
if (uVar13 == 0) {
FUN_00000c84_TEMP_AVERAGING();
uVar13 = extraout_r1_01;
}
LAB_00001004:
iVar11 = uVar13 * -0x22 + 0x394;
*(int *)(unaff_r11 + 0x22c) = iVar11;
*(undefined1 *)(unaff_r11 + iVar23) = 0;
*(short *)(iVar15 + 0x2e) = (short)iVar11;
FUN_0000595c_HARDWARE_ABSTRACTION_LAYER();
if (-1 < *(int *)(iVar15 + 0x10) << 0x1f) {
uVar12 = FUN_00000c8e_COMMITMENT();
return uVar12;
}
LAB_00001032:
iVar11 = 0;
puVar24 = (ushort *)(iVar15 + 0x34);
iVar23 = _DAT_00001368;
do {
FUN_00006c8e(*puVar24,*(undefined2 *)(iVar15 + 0x30),iVar23);
_uStack00000018 = CONCAT22(_bStack0000001a,*(undefined2 *)(iVar15 + 0x20));
FUN_00006c34(iVar23,&stack0x00000018,*(undefined2 *)(iVar15 + 0x30),iVar11);
iVar23 = iVar23 + 0xc;
*(undefined2 *)(iVar15 + 0x20) = uStack00000018;
*(byte *)(iVar15 + 0x22) = bStack0000001a;
*(byte *)(iVar15 + 0x23) = bStack0000001b;
*(undefined1 *)(iVar15 + 0x24) = in_stack_0000001c;
uVar29 = *puVar24;
uVar27 = (uint)uVar29;
uVar18 = puVar24[1];
uVar13 = (uint)uVar18;
if (uVar27 < uVar13) {
uVar16 = uVar13 - uVar27;
if (uVar16 <= bStack0000001b) {
bVar5 = false;
if (bStack0000001a < uVar16) goto LAB_000016f8;
goto LAB_000016d2;
}
if ((byte)puVar24[4] < *(byte *)(iVar15 + 0x26)) {
*(byte *)(puVar24 + 4) = (byte)puVar24[4] + 1;
goto LAB_000010a6;
}
puVar24[1] = uVar29;
*(undefined1 *)(puVar24 + 2) = 0;
*(undefined1 *)(puVar24 + 4) = 0;
puVar24[3] = 0;
}
else {
*(undefined1 *)(puVar24 + 4) = 0;
uVar16 = uVar27 - uVar13;
bVar5 = true;
if (*(byte *)(iVar15 + 0x22) < uVar16) {
LAB_000016f8:
if ((uVar16 <= *(byte *)(iVar15 + 0x23)) && (!bVar5)) goto LAB_000016d2;
}
else {
LAB_000016d2:
uVar16 = (uint)CONCAT21(uVar18,(char)puVar24[2]) * 0xff + uVar27 * 0x100;
uVar13 = uVar16 >> 0x10;
uVar18 = (ushort)(uVar16 >> 0x10);
puVar24[1] = uVar18;
*(char *)(puVar24 + 2) = (char)(uVar16 >> 8);
}
LAB_000010a6:
puVar24[3] = 0;
if ((int)(uint)*(byte *)(iVar15 + 0x22) < (int)(uVar27 - uVar13)) {
puVar24[3] = uVar29 - uVar18;
}
}
iVar11 = iVar11 + 1;
puVar24 = puVar24 + 5;
} while (iVar11 != 0xe);
if (*(short *)(iVar15 + 0x18) == 0) {
uVar27 = (uint)*(ushort *)(iVar15 + 0x20);
uVar13 = (uint)*(byte *)(iVar15 + 0x24);
uVar16 = uVar27 + uVar13;
}
else {
uVar27 = (uint)*(ushort *)(iVar15 + 0x20);
uVar13 = (uint)*(byte *)(iVar15 + 0x24);
uVar16 = uVar27 - uVar13;
}
uVar20 = (uint)(uVar16 < *(ushort *)(iVar15 + 0xb2)) << 0xc |
(uint)(uVar16 < *(ushort *)(iVar15 + 0xa8)) << 0xb |
(uint)(uVar16 < *(ushort *)(iVar15 + 0x9e)) << 10 |
(uint)(uVar16 < *(ushort *)(iVar15 + 0x94)) << 9 |
(uint)(uVar16 < *(ushort *)(iVar15 + 0x8a)) << 8 |
(uint)(uVar16 < *(ushort *)(iVar15 + 0x80)) << 7 |
(uint)(uVar16 < *(ushort *)(iVar15 + 0x76)) << 6 |
(uint)(uVar16 < *(ushort *)(iVar15 + 0x6c)) << 5 |
(uint)(uVar16 < *(ushort *)(iVar15 + 0x62)) << 4 |
(uint)(uVar16 < *(ushort *)(iVar15 + 0x44)) << 1 |
(uint)(uVar16 < *(ushort *)(iVar15 + 0x3a)) |
(uint)(uVar16 < *(ushort *)(iVar15 + 0x4e)) << 2 |
(uint)(uVar16 < *(ushort *)(iVar15 + 0x58)) << 3;
if (*(ushort *)(iVar15 + 0xbc) <= uVar16) {
uVar13 = FUN_00001a38_SYNC_SCAN_FORCE_UPDATE();
}
uVar16 = (uint)*DAT_0000136c_MAYBE_SENSITIVY;
pbVar28 = DAT_0000136c_MAYBE_SENSITIVY;
if (uVar16 == 0) {
uVar13 = FUN_00001a2c_FORCE_ACTIVE_SCAN_HANDLER();
}
*pbVar28 = (byte)(uVar16 - 1);
if ((uVar16 - 1 & 0xff) != 0) {
uVar13 = FUN_00001a52_MASTER_INIT_HARDWARE_CALIBRATION();
}
pbVar28 = DAT_00001370;
uVar27 = uVar27 - uVar13;
DAT_00001370[1] = 0;
bVar15_EXTRACT_2BIT_COMMAND_TYPE = *pbVar28;
uVar13 = (uint)*(ushort *)(iVar15 + 0x3a);
bVar17 = pbVar28[1];
if (uVar27 < uVar13) {
uVar16 = uVar13;
if (uVar13 == 0) {
uVar22 = 0;
}
else {
bVar17 = 1;
uVar22 = 1;
bVar15_EXTRACT_2BIT_COMMAND_TYPE = 0;
}
}
else {
uVar22 = 0;
uVar16 = uVar22;
}
uVar28_MAYBE_RAW_SIGNAL = (uint)*(ushort *)(iVar15 + 0x44);
if ((uVar27 < uVar28_MAYBE_RAW_SIGNAL) && (uVar16 < uVar28_MAYBE_RAW_SIGNAL)) {
bVar15_EXTRACT_2BIT_COMMAND_TYPE = 1;
bVar17 = 1;
uVar22 = 1;
uVar16 = uVar28_MAYBE_RAW_SIGNAL;
}
uVar28_MAYBE_RAW_SIGNAL = (uint)*(ushort *)(iVar15 + 0x4e);
if ((uVar27 < uVar28_MAYBE_RAW_SIGNAL) && (uVar16 < uVar28_MAYBE_RAW_SIGNAL)) {
bVar17 = 1;
uVar22 = 1;
bVar15_EXTRACT_2BIT_COMMAND_TYPE = 2;
uVar16 = uVar28_MAYBE_RAW_SIGNAL;
}
uVar28_MAYBE_RAW_SIGNAL = (uint)*(ushort *)(iVar15 + 0x58);
if ((uVar27 < uVar28_MAYBE_RAW_SIGNAL) && (uVar16 < uVar28_MAYBE_RAW_SIGNAL)) {
bVar17 = 1;
uVar22 = 1;
bVar15_EXTRACT_2BIT_COMMAND_TYPE = 3;
uVar16 = uVar28_MAYBE_RAW_SIGNAL;
}
uVar28_MAYBE_RAW_SIGNAL = (uint)*(ushort *)(iVar15 + 0x62);
if ((uVar27 < uVar28_MAYBE_RAW_SIGNAL) && (uVar16 < uVar28_MAYBE_RAW_SIGNAL)) {
bVar17 = 1;
uVar22 = 1;
bVar15_EXTRACT_2BIT_COMMAND_TYPE = 4;
uVar16 = uVar28_MAYBE_RAW_SIGNAL;
}
uVar28_MAYBE_RAW_SIGNAL = (uint)*(ushort *)(iVar15 + 0x6c);
if ((uVar27 < uVar28_MAYBE_RAW_SIGNAL) && (uVar16 < uVar28_MAYBE_RAW_SIGNAL)) {
bVar17 = 1;
uVar22 = 1;
bVar15_EXTRACT_2BIT_COMMAND_TYPE = 5;
uVar16 = uVar28_MAYBE_RAW_SIGNAL;
}
uVar28_MAYBE_RAW_SIGNAL = (uint)*(ushort *)(iVar15 + 0x76);
if ((uVar27 < uVar28_MAYBE_RAW_SIGNAL) && (uVar16 < uVar28_MAYBE_RAW_SIGNAL)) {
bVar17 = 1;
uVar22 = 1;
bVar15_EXTRACT_2BIT_COMMAND_TYPE = 6;
uVar16 = uVar28_MAYBE_RAW_SIGNAL;
}
uVar28_MAYBE_RAW_SIGNAL = (uint)*(ushort *)(iVar15 + 0x80);
if ((uVar27 < uVar28_MAYBE_RAW_SIGNAL) && (uVar16 < uVar28_MAYBE_RAW_SIGNAL)) {
bVar17 = 1;
uVar22 = 1;
bVar15_EXTRACT_2BIT_COMMAND_TYPE = 7;
uVar16 = uVar28_MAYBE_RAW_SIGNAL;
}
uVar28_MAYBE_RAW_SIGNAL = (uint)*(ushort *)(iVar15 + 0x8a);
if ((uVar27 < uVar28_MAYBE_RAW_SIGNAL) && (uVar16 < uVar28_MAYBE_RAW_SIGNAL)) {
bVar17 = 1;
uVar22 = 1;
bVar15_EXTRACT_2BIT_COMMAND_TYPE = 8;
uVar16 = uVar28_MAYBE_RAW_SIGNAL;
}
uVar28_MAYBE_RAW_SIGNAL = (uint)*(ushort *)(iVar15 + 0x94);
if ((uVar27 < uVar28_MAYBE_RAW_SIGNAL) && (uVar16 < uVar28_MAYBE_RAW_SIGNAL)) {
bVar17 = 1;
uVar22 = 1;
bVar15_EXTRACT_2BIT_COMMAND_TYPE = 9;
uVar16 = uVar28_MAYBE_RAW_SIGNAL;
}
uVar28_MAYBE_RAW_SIGNAL = (uint)*(ushort *)(iVar15 + 0x9e);
if ((uVar27 < uVar28_MAYBE_RAW_SIGNAL) && (uVar16 < uVar28_MAYBE_RAW_SIGNAL)) {
bVar17 = 1;
uVar22 = 1;
bVar15_EXTRACT_2BIT_COMMAND_TYPE = 10;
uVar16 = uVar28_MAYBE_RAW_SIGNAL;
}
uVar28_MAYBE_RAW_SIGNAL = (uint)*(ushort *)(iVar15 + 0xa8);
if ((uVar27 < uVar28_MAYBE_RAW_SIGNAL) && (uVar16 < uVar28_MAYBE_RAW_SIGNAL)) {
bVar17 = 1;
uVar22 = 1;
bVar15_EXTRACT_2BIT_COMMAND_TYPE = 0xb;
uVar16 = uVar28_MAYBE_RAW_SIGNAL;
}
uVar28_MAYBE_RAW_SIGNAL = (uint)*(ushort *)(iVar15 + 0xb2);
if ((uVar27 < uVar28_MAYBE_RAW_SIGNAL) && (uVar16 < uVar28_MAYBE_RAW_SIGNAL)) {
bVar17 = 1;
uVar22 = 1;
bVar15_EXTRACT_2BIT_COMMAND_TYPE = 0xc;
uVar16 = uVar28_MAYBE_RAW_SIGNAL;
}
uVar29 = *(ushort *)(iVar15 + 0xbc);
if ((uVar29 <= uVar27) || (uVar29 <= uVar16)) {
if (uVar22 == 0) goto LAB_00001308;
goto LAB_000017e4;
}
while( true ) {
bVar15_EXTRACT_2BIT_COMMAND_TYPE = 0xd;
bVar17 = 1;
LAB_000017e4:
*pbVar28 = bVar15_EXTRACT_2BIT_COMMAND_TYPE;
pbVar28[1] = bVar17;
LAB_00001308:
iVar23 = DAT_00001374;
uVar3 = (undefined2)(uVar20 | 0x2000);
if (pbVar28[1] != 0) break;
*(undefined2 *)(iVar15 + 0x32) = 0xffff;
*(undefined2 *)(iVar15 + 0x18) = uVar3;
if ((uVar20 | 0x2000) != 0) goto LAB_00001384;
*(uint *)(iVar15 + 0x14) = *(uint *)(iVar15 + 0x14) & 0xfffffffe;
FUN_00000c8e_COMMITMENT();
}
uVar27 = (uint)*pbVar28;
iVar11 = uVar27 * 10;
uVar18 = *(ushort *)(iVar11 + DAT_00001374 + 6);
*(ushort *)(pbVar28 + 6) = uVar18;
if (uVar27 == 0) {
*(ushort *)(pbVar28 + 4) = uVar29;
*(undefined2 *)(pbVar28 + 8) = *(undefined2 *)(iVar23 + 0x10);
LAB_00001342:
uVar13 = 0;
uVar16 = (uint)*(ushort *)(pbVar28 + 8);
*(ushort *)(pbVar28 + 4) = (ushort)*pbVar28;
}
else if (uVar27 == 0xd) {
uVar1 = *(undefined2 *)(iVar23 + 0x7e);
*(short *)(pbVar28 + 8) = (short)uVar13;
*(undefined2 *)(pbVar28 + 4) = uVar1;
LAB_00001798:
uVar16 = 0;
uVar13 = (uint)*(ushort *)(pbVar28 + 4);
pbVar28[8] = 0;
pbVar28[9] = 0;
}
else {
uVar29 = *(ushort *)(iVar11 + iVar23 + -4);
uVar13 = (uint)uVar29;
*(ushort *)(pbVar28 + 4) = uVar29;
uVar29 = *(ushort *)(iVar23 + iVar11 + 0x10);
uVar16 = (uint)uVar29;
*(ushort *)(pbVar28 + 8) = uVar29;
if (uVar27 == 0) goto LAB_00001342;
if (uVar27 == 0xd) goto LAB_00001798;
}
iVar23 = DAT_00001378_INTERPOLATION_SCALE_FACTOR;
iVar11 = FUN_00006ec8_INTEGER_DIVISION
(DAT_00001378_INTERPOLATION_SCALE_FACTOR * (uVar16 - uVar13),
uVar18 + uVar13 + uVar16);
*(short *)(iVar15 + 0x32) = (short)(uVar27 * iVar23 + iVar11 + 0x7f >> 8);
*(undefined2 *)(iVar15 + 0x18) = uVar3;
LAB_00001384:
*(uint *)(iVar15 + 0x14) = *(uint *)(iVar15 + 0x14) | 1;
uVar12 = FUN_00000c8e_COMMITMENT();
return uVar12;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment