Created
April 23, 2026 12:22
-
-
Save Gkiokan/f027af4728981ec6bd2466cfcc8e00ef to your computer and use it in GitHub Desktop.
pa5x_main_fnc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* 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