// RK3588 DDR Init Blob - Decompiled by Ghidra // Source: rk3588_ddr_lp4_2112MHz_lp5_2400MHz_v1.19.bin // Processor: ARM Cortex LE 32-bit // Reset @ 00000000 void Reset(undefined8 param_1) { ulong uVar1; ulong uVar2; uVar2 = DAT_00000038; uVar1 = FUN_0000002c(); do { } while ((uVar1 & 0xffffff00) != uVar2); thunk_FUN_00010978(param_1); return; } // FUN_00000004 @ 00000004 void FUN_00000004(undefined8 param_1) { ulong uVar1; ulong uVar2; uVar2 = DAT_00000038; uVar1 = FUN_0000002c(); do { } while ((uVar1 & 0xffffff00) != uVar2); thunk_FUN_00010978(param_1); return; } // FUN_0000002c @ 0000002c void FUN_0000002c(void) { return; } // thunk_FUN_00010978 @ 00000034 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined8 thunk_FUN_00010978(undefined8 param_1) { int iVar1; undefined8 uVar2; iVar1 = FUN_00010968(); if (iVar1 == 0) { if (((_DAT_fd588080 == -0x10f75ac4) && (_DAT_ff000010 < 0x81 && _DAT_ff000010 != 10)) || (iVar1 = FUN_00009a68(param_1), iVar1 != 0)) { uVar2 = 0xffffffff; LAB_000109c8: IC_IALLUIS(); InstructionSynchronizationBarrier(); return uVar2; } iVar1 = FUN_000009a0(); if (iVar1 == 0) { iVar1 = FUN_00010970(); if (iVar1 == 0) { FUN_00010a70(); } FUN_00010438(); FUN_000104b8(s_DDR_ff1a08bde6_typ_25_03_13_15_3_00010d6c); iVar1 = FUN_000009fc(); if ((iVar1 == 0) && (uVar2 = FUN_000009e8(), (int)uVar2 == 0)) goto LAB_000109c8; } } FUN_000104b8(&DAT_00010d9f); IC_IALLUIS(); InstructionSynchronizationBarrier(); return 0xffffffff; } // FUN_00000040 @ 00000040 void FUN_00000040(long param_1,long param_2,uint param_3,int param_4,undefined4 param_5) { undefined4 *puVar1; ulong uVar2; uint uVar3; ulong uVar4; int iVar5; ulong uVar6; undefined4 *puVar7; puVar7 = (undefined4 *)&DAT_fe050060; do { *puVar7 = 0; puVar1 = puVar7 + 1; puVar7[0x10] = 0; puVar7 = puVar1; } while (puVar1 != (undefined4 *)&DAT_fe0500a0); if (param_4 == 0) { iVar5 = 1; } else { iVar5 = 1 << (ulong)(param_4 + 1U & 0x1f); } uVar3 = iVar5 << (ulong)(param_3 & 0x1f); uVar4 = (ulong)uVar3; if (0x10 < uVar3) { uVar4 = 0x10; } uVar3 = (uint)uVar4; if (uVar3 < 4) { uVar3 = 4; } puVar7 = (undefined4 *)&DAT_fe0500a0; for (uVar6 = 0; uVar6 < uVar3; uVar6 = uVar6 + 1) { if (param_1 != 0) { uVar2 = 0; if (uVar4 != 0) { uVar2 = uVar6 / uVar4; } puVar7[-0x10] = *(undefined4 *)(param_1 + (uVar6 - uVar2 * uVar4) * 4); } if (param_2 != 0) { uVar2 = 0; if (uVar4 != 0) { uVar2 = uVar6 / uVar4; } *puVar7 = *(undefined4 *)(param_2 + (uVar6 - uVar2 * uVar4) * 4); puVar7[0x16] = param_5; } puVar7 = puVar7 + 1; } return; } // FUN_000000e4 @ 000000e4 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_000000e4(void) { do { } while (_DAT_fe0500e0 != 0); _DAT_fe0500e4 = _DAT_fe0500e4 & 0xfffffffe; _DAT_fe030040 = _DAT_fe030040 | 0xffff; return; } // FUN_00000120 @ 00000120 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00000120(void) { _DAT_fe030040 = _DAT_fe030040 & 0xffff0000; _DAT_fe0500e4 = _DAT_fe0500e4 | 1; return; } // FUN_0000014c @ 0000014c uint FUN_0000014c(int param_1,uint param_2) { param_2 = ~param_2; if (param_1 == 0) { param_2 = param_2 & 0xff; param_2 = param_2 << 0x10 | param_2 << 8 | param_2 | param_2 << 0x18; } else if (param_1 == 1) { param_2 = param_2 & 0xffff | param_2 << 0x10; } return param_2; } // FUN_00000180 @ 00000180 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ uint FUN_00000180(undefined8 param_1,ulong param_2,undefined8 param_3,uint param_4,int param_5, int param_6) { undefined8 uVar1; uint uVar2; _DAT_fe050000 = 0; _DAT_fe050004 = (undefined4)param_1; _DAT_fe050008 = (undefined4)((ulong)param_1 >> 0x20); _DAT_fe05000c = (undefined4)(param_2 >> 2); _DAT_fe05002c = param_4 | param_5 << 2 | param_6 << 4; _DAT_fe050058 = 7; FUN_00000040(param_3,param_3,param_4,param_5,0xffffffff); uVar1 = cntpct_el0; FUN_00000120(uVar1); do { } while (_DAT_fe050054 == 0); uVar1 = cntpct_el0; uVar2 = _DAT_fe050054; if ((_DAT_fe050054 & 7) == 4) { uVar2 = 0; } FUN_000000e4(); return uVar2; } // FUN_00000238 @ 00000238 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ uint FUN_00000238(undefined8 param_1,ulong param_2,undefined8 param_3,uint param_4,int param_5, int param_6,undefined4 param_7) { undefined8 uVar1; uint uVar2; _DAT_fe050000 = 3; _DAT_fe050004 = (undefined4)param_1; _DAT_fe050008 = (undefined4)((ulong)param_1 >> 0x20); _DAT_fe05000c = (undefined4)(param_2 >> 2); _DAT_fe05002c = param_4 | param_5 << 2 | param_6 << 4; _DAT_fe050058 = 7; FUN_00000040(0,param_3,param_4,param_5,param_7); uVar1 = cntpct_el0; FUN_00000120(uVar1); do { } while (_DAT_fe050054 == 0); uVar1 = cntpct_el0; uVar2 = _DAT_fe050054; if ((_DAT_fe050054 & 7) == 4) { uVar2 = 0; } FUN_000000e4(); return uVar2; } // FUN_000002f4 @ 000002f4 undefined8 FUN_000002f4(undefined8 param_1,undefined8 param_2,undefined8 param_3,int param_4,undefined4 param_5 ,uint param_6) { uint uVar1; uint uVar2; uint uVar3; undefined4 uVar4; int iVar5; uint uVar6; long lVar7; undefined8 uVar8; long lVar9; ulong uVar10; uint uVar11; uVar11 = param_6; uVar4 = FUN_0000014c(param_4,param_5); uVar2 = 1 << (ulong)(uVar11 & 0x1f); uVar3 = ~uVar2; uVar11 = 0; while( true ) { if (uVar11 < 2) { lVar7 = 0; do { lVar9 = lVar7 * 4; if (param_4 == 0) { *(undefined4 *)(lVar9 + 0x12ba0) = 0xff00ff; } else if (param_4 == 1) { *(undefined4 *)(lVar9 + 0x12ba0) = 0xffff; } else { *(uint *)(lVar9 + 0x12ba0) = -(~(uint)lVar7 & 1); } if (uVar11 == 0) { *(uint *)(lVar9 + 0x12ba0) = ~*(uint *)(lVar9 + 0x12ba0); } lVar7 = lVar7 + 1; } while (lVar7 != 0x10); } else if (param_6 < 0x20) { uVar6 = (uVar2 & 0xff) << 0x10 | uVar3 << 0x18 | (uVar3 & 0xff) << 8 | uVar2 & 0xff; if ((param_4 != 0) && (uVar6 = uVar2 & 0xffff | uVar3 << 0x10, param_4 != 1)) { uVar6 = uVar2; } uVar10 = 0; if (uVar11 == 2) { uVar6 = ~uVar6; } do { if (param_4 == 2) { uVar1 = ~uVar6; if ((uVar10 & 1) != 0) { uVar1 = uVar6; } *(uint *)(uVar10 * 4 + 0x12ba0) = uVar1; } else { *(uint *)(uVar10 * 4 + 0x12ba0) = uVar6; } uVar10 = uVar10 + 1; } while (uVar10 != 0x10); } else { uVar10 = 0; do { lVar7 = uVar10 * 4; if (param_4 == 0) { *(undefined4 *)(lVar7 + 0x12ba0) = 0xffff; } else { if (param_4 == 1) { uVar6 = ~(uint)uVar10; } else { uVar6 = (uint)((uVar10 & 0xffffffff ^ 2) >> 1); } *(uint *)(lVar7 + 0x12ba0) = -(uVar6 & 1); } if (uVar11 == 2) { *(uint *)(lVar7 + 0x12ba0) = ~*(uint *)(lVar7 + 0x12ba0); } uVar10 = uVar10 + 1; } while (uVar10 != 0x10); } iVar5 = FUN_00000180(param_1,param_2,0x12ba0,2,3,0); if ((iVar5 != 0) || (uVar8 = FUN_00000238(param_1,param_2,0x12ba0,2,3,0,uVar4), (int)uVar8 != 0) ) break; uVar11 = uVar11 + 1; if (uVar11 == 4) { return uVar8; } } return 0xffffffff; } // FUN_000004f8 @ 000004f8 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined1 [16] FUN_000004f8(void) { uint uVar1; uint uVar2; undefined8 uVar3; ulong uVar4; undefined1 auVar5 [16]; uVar2 = FUN_000093bc(); if (uVar2 == 0) { _DAT_fd5f4000 = 0xff00880; uVar4 = 1500000; _DAT_fd5f800c = 0xff00aa0; uVar3 = 0xfeb50000; goto LAB_00000538; } uVar1 = uVar2 >> 0x1c; if (uVar1 == 0) { uVar1 = uVar2 >> 0x18; if (uVar1 == 0) { uVar4 = 0x4008; LAB_00000564: *(undefined4 *)(uVar4 | 0xfd5f0000) = 0xff0044; } else { if (uVar1 == 1) { uVar4 = 8; goto LAB_00000564; } if (uVar1 == 2) { _DAT_fd5f8084 = 0xf000a; _DAT_fd5f8080 = 0xf000a000; } } uVar3 = 0xfd890000; } else if (uVar1 == 1) { uVar1 = uVar2 >> 0x18 & 0xf; if (uVar1 == 0) { _DAT_fd5f804c = 0xff00aa00; } else if (uVar1 == 1) { _DAT_fd5f802c = 0xff00aa00; } else if (uVar1 == 2) { _DAT_fd5f400c = 0xff00880; _DAT_fd5f8018 = 0xff00aa0; } uVar3 = 0xfeb40000; } else if (uVar1 == 2) { uVar1 = uVar2 >> 0x18 & 0xf; if (uVar1 == 0) { _DAT_fd5f4000 = 0xff00880; _DAT_fd5f800c = 0xff00aa0; } else if (uVar1 == 1) { _DAT_fd5f8098 = 0xff00aa; } else if (uVar1 == 2) { _DAT_fd5f8068 = 0xff00aa0; } uVar3 = 0xfeb50000; } else if (uVar1 == 3) { uVar1 = uVar2 >> 0x18 & 0xf; if (uVar1 == 0) { _DAT_fd5f8030 = 0xff00aa; } else if (uVar1 == 1) { _DAT_fd5f806c = 0xff00aa0; } else if (uVar1 == 2) { _DAT_fd5f8084 = 0xff00aa0; } uVar3 = 0xfeb60000; } else if (uVar1 == 4) { uVar1 = uVar2 >> 0x18 & 0xf; if (uVar1 == 0) { _DAT_fd5f8038 = 0xff00aa00; } else if (uVar1 == 1) { _DAT_fd5f8078 = 0xff00aa; } else if (uVar1 == 2) { _DAT_fd5f8028 = 0xff00aa00; } uVar3 = 0xfeb70000; } else if (uVar1 == 5) { uVar1 = uVar2 >> 0x18 & 0xf; if (uVar1 == 0) { _DAT_fd5f809c = 0xff00aa; } else if (uVar1 == 1) { _DAT_fd5f8074 = 0xff00aa; } else if (uVar1 == 2) { _DAT_fd5f805c = 0xff00aa; } uVar3 = 0xfeb80000; } else if (uVar1 == 6) { uVar1 = uVar2 >> 0x18 & 0xf; if (uVar1 == 0) { _DAT_fd5f8044 = 0xff00aa00; } else if (uVar1 == 1) { _DAT_fd5f8020 = 0xff00aa; } else if (uVar1 == 2) { _DAT_fd5f8038 = 0xff00aa; } uVar3 = 0xfeb90000; } else if (uVar1 == 7) { uVar1 = uVar2 >> 0x18 & 0xf; if (uVar1 == 0) { _DAT_fd5f804c = 0xff00aa; } else if (uVar1 == 1) { _DAT_fd5f8070 = 0xff00aa; } else if (uVar1 == 2) { _DAT_fd5f802c = 0xff00aa; } uVar3 = 0xfeba0000; } else if (uVar1 == 8) { if ((uVar2 >> 0x18 & 0xf) == 0) { _DAT_fd5f8088 = 0xff00aa; } else if ((uVar2 >> 0x18 & 0xf) == 1) { _DAT_fd5f8060 = 0xff00aa00; } uVar3 = 0xfebb0000; } else if (uVar1 == 9) { uVar1 = uVar2 >> 0x18 & 0xf; if (uVar1 == 0) { _DAT_fd5f8054 = 0xf000a; _DAT_fd5f8050 = 0xf000a00; } else if (uVar1 == 1) { _DAT_fd5f808c = 0xff00aa; } else if (uVar1 == 2) { _DAT_fd5f807c = 0xff00aa; } uVar3 = 0xfebc0000; } else { uVar3 = 0; } uVar4 = (ulong)(uVar2 & 0xffffff); LAB_00000538: auVar5._8_8_ = uVar4; auVar5._0_8_ = uVar3; return auVar5; } // FUN_000009a0 @ 000009a0 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined8 FUN_000009a0(void) { if (_DAT_ff000010 != 5) { _DAT_fd5f8098 = 0xff005500; } _DAT_fe0100f0 = 0; _DAT_fe0100f4 = 0; _DAT_fe0100f8 = 0; _DAT_fe0100fc = 0; return 0; } // FUN_000009e8 @ 000009e8 undefined8 FUN_000009e8(void) { return 0; } // FUN_000009f0 @ 000009f0 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 FUN_000009f0(void) { return _DAT_00012be0; } // FUN_000009fc @ 000009fc /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ int FUN_000009fc(void) { uint uVar1; int iVar2; uint uVar3; _DAT_fecc0084 = 0xf; iVar2 = 0x2711; _DAT_fecc0004 = 0x3081000; _DAT_fecc0008 = 1; uVar3 = 0xf; do { uVar1 = _DAT_fecc0084; if ((uVar3 & 3) == 3) { _DAT_00012be0 = _DAT_fecc0020 >> 0x10 & 0xff; _DAT_fecc0084 = 3; LAB_00000a6c: iVar2 = FUN_00009a90(); return -(uint)(iVar2 == -1); } iVar2 = iVar2 + -1; if (iVar2 == 0) { _DAT_00012be0 = 0; goto LAB_00000a6c; } thunk_FUN_00010a38(1); uVar3 = uVar1; } while( true ); } // FUN_00000aac @ 00000aac void FUN_00000aac(long param_1,undefined1 param_2,long param_3) { long lVar1; for (lVar1 = 0; param_3 != lVar1; lVar1 = lVar1 + 1) { *(undefined1 *)(param_1 + lVar1) = param_2; } return; } // FUN_00000ac8 @ 00000ac8 void FUN_00000ac8(ulong param_1,ulong param_2,ulong param_3) { long lVar1; ulong uVar2; if (param_1 != param_2) { if (((param_1 | param_2) & 7) == 0) { for (lVar1 = 0; lVar1 != (param_3 >> 3) * 8; lVar1 = lVar1 + 8) { *(undefined8 *)(param_1 + lVar1) = *(undefined8 *)(param_2 + lVar1); } uVar2 = param_3 & 0xfffffffffffffff8; param_3 = param_3 + (param_3 >> 3) * -8; param_2 = param_2 + uVar2; param_1 = param_1 + uVar2; } for (uVar2 = 0; param_3 != uVar2; uVar2 = uVar2 + 1) { *(undefined1 *)(param_1 + uVar2) = *(undefined1 *)(param_2 + uVar2); } } return; } // FUN_00000b38 @ 00000b38 uint FUN_00000b38(long param_1,uint param_2) { uint uVar1; long lVar2; if (param_1 != 0 && param_2 != 0) { uVar1 = 0x47c6a7e6; for (lVar2 = 0; (uint)lVar2 < param_2; lVar2 = lVar2 + 1) { uVar1 = uVar1 ^ (uVar1 >> 2) + uVar1 * 0x20 + (uint)*(byte *)(param_1 + lVar2); } return uVar1; } return 0x47c6a7e6; } // FUN_00000b88 @ 00000b88 undefined8 FUN_00000b88(int param_1) { if ((param_1 != 0 && param_1 != 0x54410001) && (0xaf < param_1 + 0xabbeffb0U)) { FUN_000104b8(s_Magic_is_not_support_00010c36); return 1; } return 0; } // FUN_00000bd8 @ 00000bd8 bool FUN_00000bd8(int *param_1) { bool bVar1; if (param_1 + -0x7f800 < (int *)0x2001) { bVar1 = 0x2000 < (ulong)(uint)(*param_1 << 2) + (long)(param_1 + -0x7f800); if (!bVar1) { return bVar1; } } else { bVar1 = true; } FUN_000104b8(s_Tag_is_overflow_00010c4c); return bVar1; } // FUN_00000c2c @ 00000c2c /* WARNING: Type propagation algorithm not settling */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 FUN_00000c2c(uint param_1,long param_2) { uint uVar1; byte bVar2; int iVar3; uint *puVar4; bool bVar5; ulong uVar6; undefined4 local_4; if (param_2 == 0) { return 0xffffffc3; } iVar3 = FUN_00000b88(); if (iVar3 == 0) { if (param_1 == 0 || param_1 == 0x54410001) { return 0xffffffff; } puVar4 = (uint *)&DAT_001fe000; if (_DAT_001fe004 == 0x54410001) { for (; *puVar4 != 0; puVar4 = puVar4 + *puVar4) { iVar3 = FUN_00000bd8(puVar4); if (iVar3 != 0) { return 0xffffffea; } iVar3 = FUN_00000b88(puVar4[1]); if (iVar3 != 0) { return 0xffffffea; } bVar5 = false; if (param_1 == puVar4[1]) goto LAB_00000cac; if (puVar4[1] == 0) break; } bVar5 = true; } else { _DAT_001fe004 = 0x54410001; _DAT_001fe008 = 0; _DAT_001fe00c = 0; _DAT_001fe010 = 0; puVar4 = (uint *)&DAT_001fe014; _DAT_001fe000 = 5; bVar5 = true; } LAB_00000cac: if ((param_1 + 0xabbeffb0 < 0xb) && (bVar2 = (&DAT_00010b50)[param_1 + 0xabbeffb0], bVar2 != 0)) { if ((uint *)0x2000 < puVar4 + ((ulong)bVar2 - 0x7f800)) { return 0xfffffff4; } puVar4[1] = param_1; uVar6 = (ulong)((uint)bVar2 * 4 - 0xc); *puVar4 = (uint)bVar2; FUN_00000ac8(puVar4 + 2,param_2,uVar6); local_4 = FUN_00000b38(puVar4,(uint)bVar2 * 4 + -4); FUN_00000ac8((undefined1 *)((long)(puVar4 + 2) + uVar6),&local_4,4); if (bVar5) { uVar1 = *puVar4; puVar4[(ulong)uVar1 + 1] = 0; puVar4[uVar1] = 0; return 0; } return 0; } } return 0xffffffea; } // FUN_00000da4 @ 00000da4 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00000da4(void) { if (_DAT_001fe004 == 0x54410001) { FUN_00000aac(0x1fe000,0,0x32c); return; } return; } // FUN_00000dcc @ 00000dcc void FUN_00000dcc(undefined1 param_1) { char *pcVar1; switch(param_1) { case 0: pcVar1 = &DAT_00011505; break; default: pcVar1 = s_Unknown_Device_00011519; break; case 2: pcVar1 = &DAT_000114f7; break; case 3: pcVar1 = &DAT_000114fe; break; case 5: pcVar1 = &DAT_000114f5; break; case 6: pcVar1 = &DAT_000114fc; break; case 7: pcVar1 = &DAT_00011503; break; case 8: pcVar1 = &DAT_0001150a; break; case 9: pcVar1 = &DAT_00011512; } FUN_000104b8(pcVar1); return; } // FUN_00000e5c @ 00000e5c void FUN_00000e5c(undefined4 *param_1) { FUN_00000dcc(*(undefined1 *)(param_1 + 1)); FUN_000104b8(&DAT_000113d1); FUN_000104f8(*param_1); FUN_000104b8(&DAT_00011491); return; } // FUN_00000e9c @ 00000e9c long FUN_00000e9c(uint *param_1,int param_2,int param_3) { int iVar1; long lVar2; long lVar3; long lVar4; long lVar5; long lVar6; if (param_3 == 0) { iVar1 = (param_1[4] == 0) + 1; } else { iVar1 = 0; } iVar1 = param_1[3] + param_1[1] + iVar1 + param_1[2]; lVar6 = 1L << ((ulong)(iVar1 + param_1[6]) & 0x3f); if (*param_1 < 2) { lVar2 = 0; } else { lVar2 = 1L << ((ulong)(iVar1 + param_1[7]) & 0x3f); if (*param_1 == 4) { lVar5 = 1L << ((ulong)(iVar1 + param_1[8]) & 0x3f); lVar4 = 1L << ((ulong)(iVar1 + param_1[9]) & 0x3f); goto LAB_00000f08; } } lVar4 = 0; lVar5 = 0; LAB_00000f08: lVar3 = lVar6; if ((((param_2 != 0) && (lVar3 = lVar2, param_2 != 1)) && (lVar3 = lVar5, param_2 != 2)) && (lVar3 = lVar6 + lVar2 + lVar5 + lVar4, param_2 == 3)) { lVar3 = lVar4; } return lVar3; } // FUN_00001194 @ 00001194 void FUN_00001194(undefined4 param_1,int param_2,uint *param_3,long param_4,uint param_5) { int *piVar1; uint uVar2; ulong uVar3; if (param_2 == 1) { FUN_00000e5c(param_4); } FUN_000104b8(s_channel__000114e9); FUN_000104f8(param_1); FUN_000104b8(&DAT_000114f2); piVar1 = (int *)(param_4 + 4); uVar2 = param_3[4]; FUN_000104b8(0x114da); FUN_000104f8(8 << (ulong)(param_3[3] & 0x1f)); FUN_000104b8(0x11496); FUN_000104f8(param_3[1]); FUN_000104b8(0x1149c); FUN_000104f8(1 << (ulong)(param_3[2] & 0x1f)); if (*piVar1 == 0) { FUN_000104b8(0x114a1); FUN_000104f8(1 << (ulong)((uVar2 == 0) + 1)); } FUN_000104b8(0x114a6); FUN_000104f8(param_3[6]); if (param_3[10] != param_3[6]) { FUN_000104b8(0x114b0); FUN_000104f8(param_3[10]); } if (1 < *param_3) { FUN_000104b8(0x114b2); FUN_000104f8(param_3[7]); if (param_3[0xb] != param_3[7]) { FUN_000104b8(0x114b0); FUN_000104f8(param_3[0xb]); } } if (2 < *param_3) { FUN_000104b8(0x114bc); FUN_000104f8(param_3[8]); if (param_3[0xc] != param_3[8]) { FUN_000104b8(0x114b0); FUN_000104f8(param_3[0xc]); } FUN_000104b8(0x114c6); FUN_000104f8(param_3[9]); if (param_3[0xd] != param_3[9]) { FUN_000104b8(0x114b0); FUN_000104f8(param_3[0xd]); } } FUN_000104b8(0x114d0); FUN_000104f8(*param_3); if (1 < *piVar1 - 2U) { FUN_000104b8(0x114d5); FUN_000104f8(8 << (ulong)(param_3[4] & 0x1f)); } uVar3 = FUN_00000e9c(param_3,0xf,*piVar1); if (param_3[5] == 0) { if (param_5 != 0) { uVar3 = ((ulong)param_5 & 0xff) * 0x800000 + (uVar3 >> 1); } } else { uVar3 = uVar3 * 3 >> 2; } FUN_000104b8(s_Size__000114de); FUN_000104f8(uVar3 >> 0x14); FUN_000104b8(0x114e5); return; } // FUN_00001200 @ 00001200 void FUN_00001200(long param_1,long param_2,ulong param_3) { ulong uVar1; for (uVar1 = 0; uVar1 != (param_3 & 0xfffffffc); uVar1 = uVar1 + 4) { *(undefined4 *)(param_1 + uVar1) = *(undefined4 *)(param_2 + uVar1); } return; } // FUN_00001224 @ 00001224 void FUN_00001224(uint *param_1,long param_2,uint *param_3,uint *param_4,uint param_5) { uint uVar1; uint uVar2; uint uVar3; *param_3 = *param_3 & 0xffff1fff; *param_4 = *param_4 & 0xffffcfff; *param_3 = *param_3 | (*(uint *)(param_2 + 4) & 7) << 0xd; *param_4 = *param_4 | (*(uint *)(param_2 + 4) >> 3 & 3) << 0xc; uVar1 = *(uint *)(param_2 + 8); if (2 < uVar1) { uVar1 = 2; } uVar1 = *param_3 | (uVar1 - 1) * 0x1000; *param_3 = uVar1; if (1 < param_5) { param_5 = param_5 - 2; } uVar1 = param_1[5] << (ulong)(param_5 + 0x1e & 0x1f) | uVar1 | 1 << (ulong)(param_5 + 0x1c & 0x1f) ; *param_3 = uVar1; if (param_5 == 0) { *param_3 = uVar1 & 0xfffff7ff; *param_4 = *param_4 & 0xffffbfff; *param_3 = *param_3 | (uint)(*param_1 == 2) << 0xb; *param_4 = *param_4 | (uint)(*param_1 == 4) << 0xe; } else { *param_3 = uVar1 | (*param_1 - 1) * 0x8000000; } uVar1 = param_5 * 0x10; uVar2 = param_5 * 2; uVar3 = param_1[1] - 9 << (ulong)(uVar1 + 9 & 0x1f) | *param_3; *param_3 = uVar3; uVar3 = (uint)(param_1[2] != 3) << (ulong)(uVar1 + 8 & 0x1f) | uVar3; *param_3 = uVar3; uVar3 = (2 >> (param_1[3] & 0x1f)) << (ulong)(uVar1 + 2 & 0x1f) | uVar3; *param_3 = uVar3; *param_3 = ((2 >> (param_1[4] & 0x1f)) << (ulong)(uVar1 & 0x1f) | uVar3) & (3 << (ulong)(uVar1 + 6 & 0x1f) ^ 0xffffffffU); *param_4 = *param_4 & (1 << (ulong)(uVar2 + 5 & 0x1f) ^ 0xffffffffU); *param_3 = *param_3 | (param_1[6] - 0xd & 3) << (ulong)(uVar1 + 6 & 0x1f); *param_4 = *param_4 | (param_1[6] - 0xd >> 2 & 1) << (ulong)(uVar2 + 5 & 0x1f); if (param_1[7] != 0) { *param_3 = *param_3 & (3 << (ulong)(uVar1 + 4 & 0x1f) ^ 0xffffffffU); *param_4 = *param_4 & (1 << (ulong)(uVar2 + 4 & 0x1f) ^ 0xffffffffU); *param_3 = *param_3 | (param_1[7] - 0xd & 3) << (ulong)(uVar1 + 4 & 0x1f); *param_4 = *param_4 | (param_1[7] - 0xd >> 2 & 1) << (ulong)(uVar2 + 4 & 0x1f); } if ((param_5 == 0) && (2 < *param_1)) { if (param_1[8] != param_1[6]) { *param_4 = *param_4 | 0x8000; } if (param_1[9] != param_1[6]) { *param_4 = *param_4 | 0x10000; } } *param_4 = param_1[1] - 9 << (ulong)(uVar2 & 0x1f) | *param_4 | 0x30000000; return; } // FUN_000014b4 @ 000014b4 void FUN_000014b4(long param_1,int *param_2,long param_3) { long lVar1; uint uVar2; bool bVar3; bool bVar4; byte *pbVar5; int iVar6; int iVar7; int *piVar8; iVar6 = *(int *)(param_1 + 0x28); if (iVar6 == 0x15) { if (*(int *)(param_1 + 0x2c) == 3) { uVar2 = *(uint *)(param_1 + 0x38); if (uVar2 < 0x191) { iVar6 = 1; } else if (uVar2 < 0x216) { iVar6 = 4; } else if (uVar2 < 0x29b) { LAB_00001630: iVar6 = 8; } else if (uVar2 < 0x321) { LAB_00001638: iVar6 = 0xc; } else if (uVar2 < 0x3a6) { LAB_00001640: iVar6 = 0x10; } else { bVar3 = 0x429 < uVar2; bVar4 = uVar2 == 0x42a; iVar7 = 0x14; LAB_000014fc: if (!bVar3 || bVar4) { iVar6 = iVar7; } } } } else if ((iVar6 == 0x18) && (*(int *)(param_1 + 0x2c) == 0)) { uVar2 = *(uint *)(param_1 + 0x38); if (uVar2 < 0x321) { iVar6 = 2; } else if (uVar2 < 0x3a6) { iVar6 = 5; } else { if (uVar2 < 0x42b) goto LAB_00001630; if (uVar2 < 0x4b1) goto LAB_00001638; if (uVar2 < 0x536) goto LAB_00001640; if (0x5ba < uVar2) { bVar3 = 0x63f < uVar2; bVar4 = uVar2 == 0x640; iVar7 = 0x17; goto LAB_000014fc; } iVar6 = 0x14; } } *param_2 = iVar6; uVar2 = *(uint *)(param_1 + 4); param_2[1] = uVar2; lVar1 = param_3; if (param_3 == 0) { lVar1 = 0x80000000; } piVar8 = param_2 + 2; if (param_3 == 0) { param_3 = 0xc0000000; } for (; iVar6 = *(int *)(param_1 + 0x2c), piVar8 != param_2 + (ulong)uVar2 + 2; piVar8 = piVar8 + 1 ) { if (iVar6 == 9) { *piVar8 = (int)param_3; } else { *piVar8 = (int)lVar1; } } uVar2 = *(uint *)(param_1 + 0x38); pbVar5 = *(byte **)(param_1 + 0x30); param_2[4] = 8 << (ulong)(*(uint *)(param_1 + 0x20) >> 4 & 0x1f); param_2[10] = iVar6; param_2[0xb] = uVar2; param_2[0xc] = 1; param_2[0xd] = (uint)*pbVar5; param_2[0xe] = (uint)pbVar5[1]; param_2[0x14] = (uint)pbVar5[3]; if (iVar6 == 0) { if (0x271 < uVar2) { param_2[0xf] = 0; LAB_00001670: param_2[0x10] = 1; goto LAB_00001594; } LAB_00001588: param_2[0xf] = 1; } else { if (uVar2 < 0x12d) goto LAB_00001588; param_2[0xf] = 0; if (0x215 < uVar2) goto LAB_00001670; } param_2[0x10] = 0; param_2[0x14] = 0; LAB_00001594: if (iVar6 - 7U < 2) { param_2[0x11] = (uint)pbVar5[7]; param_2[0x12] = (uint)pbVar5[8]; param_2[0x15] = (uint)pbVar5[4]; } else if (iVar6 == 9) { param_2[0x11] = (uint)pbVar5[7]; param_2[0x12] = (uint)pbVar5[8]; } else if (iVar6 == 0) { param_2[0x11] = (uint)pbVar5[7]; } param_2[0x13] = (uint)pbVar5[2]; return; } // FUN_000016bc @ 000016bc void FUN_000016bc(long param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4) { undefined4 local_10; undefined4 uStack_c; local_10 = param_3; uStack_c = param_4; FUN_00000ac8(param_1,&local_10,0x10); FUN_00000ac8(param_1 + 0x10,param_2,local_10); return; } // FUN_000016fc @ 000016fc void FUN_000016fc(void) { undefined1 auStack_128 [4]; undefined1 auStack_124 [292]; FUN_00000aac(auStack_128,0,0x128); FUN_00000ac8(auStack_124,s_ddr_v1_19_ff1a08bde6_00010b90,0x15); FUN_00000c2c(0x5441005a,auStack_128); return; } // FUN_0000174c @ 0000174c void FUN_0000174c(long param_1) { do { } while ((*(uint *)(s_ddr_v1_19_ff1a08bde6_00010b90 + param_1) >> 0x10 & 1) != 0); *(uint *)(s_config_pctl_regs_init_00010b78 + param_1 + 0x14) = *(uint *)(s_config_pctl_regs_init_00010b78 + param_1 + 0x14) | 0x10000; do { } while ((*(uint *)(s_ddr_v1_19_ff1a08bde6_00010b90 + param_1) >> 0x10 & 1) != 0); return; } // FUN_00001770 @ 00001770 void FUN_00001770(long param_1) { *(uint *)(param_1 + 0x50) = *(uint *)(param_1 + 0x50) | 0x1000000; thunk_FUN_00010a38(1); *(uint *)(param_1 + 0x50) = *(uint *)(param_1 + 0x50) & 0xfeffffff; return; } // FUN_000017ac @ 000017ac void FUN_000017ac(uint param_1,uint param_2,int param_3) { if (param_3 != 0) { if (param_3 == 1) { param_1 = param_1 + param_2 >> 1; } else { param_1 = param_2 - param_1; if (param_3 == 2) { param_1 = param_2; } } } if (param_1 < 0x10) { FUN_0001053c(&DAT_00010ffe); } FUN_0001053c(s_0x_x_00010e13,param_1); return; } // FUN_0000180c @ 0000180c void FUN_0000180c(long param_1,uint param_2,int param_3) { uint uVar1; uint uVar2; int iVar3; uint uVar4; uVar4 = (param_2 & 1) * -4 + 7; iVar3 = (param_2 & 1) * -4; uVar1 = iVar3 + 8; uVar2 = iVar3 + 0xc; *(int *)(param_1 + ((ulong)(param_2 + 0x14 + (param_2 >> 1)) + 0x280) * 4) = param_3 << (ulong)(uVar4 & 0x1f) | param_3 << (ulong)(uVar1 & 0x1f) | (1 << (ulong)(uVar4 & 0x1f) | 1 << (ulong)(uVar1 & 0x1f)) << 0x10 | param_3 << (ulong)(uVar2 & 0x1f) | (1 << (ulong)(uVar2 & 0x1f)) << 0x10; return; } // FUN_0000186c @ 0000186c void FUN_0000186c(long param_1,ulong param_2,int param_3,uint param_4) { uint uVar1; uint uVar2; uint uVar3; uint uVar4; uint uVar5; uint uVar6; uint uVar7; uint uVar8; uint uVar9; uint uVar10; uint uVar11; undefined4 *puVar12; char *pcVar13; uint *puVar14; long lVar15; uint uVar16; uint uVar17; uint uVar18; uint uVar19; int iVar20; param_2 = param_2 & 0xffffffff; uVar10 = FUN_00010a60(); uVar10 = uVar10 / 1000000; if (uVar10 == param_4) { puVar12 = *(undefined4 **)(param_1 + param_2 * 0x20 + 0x10); if (param_3 == 0) { *puVar12 = 0x80008000; return; } puVar12[8] = 0x80008000; return; } if (param_4 - 0x34 < 0x1995) { uVar16 = 0; do { uVar17 = param_4 << (ulong)(uVar16 & 0x1f); if (uVar17 - 0xce4 < 0xce5) { uVar18 = 1; do { uVar19 = 0; if (uVar10 != 0) { uVar19 = (uVar18 * 0x19c8) / (uVar10 * 2); } uVar1 = uVar10 * 2 * uVar19; for (; 0x3f < uVar19; uVar19 = uVar19 - 1) { uVar4 = 0; if (uVar18 != 0) { uVar4 = uVar1 / uVar18; } uVar1 = uVar1 + uVar10 * -2; if (uVar4 <= uVar17) { uVar4 = uVar19 | 0x3ff0000; uVar3 = uVar18 | 0x1ff0000; uVar16 = uVar16 << 6; uVar17 = *(uint *)(&DAT_00011b44 + (ulong)DAT_00011b42 * 4); uVar8 = uVar17 >> 1 & 0xff; uVar1 = *(uint *)(*(long *)(param_1 + 0x88) + 0x594); *(undefined4 *)(*(long *)(param_1 + 0x88) + 0x594) = 0xc00040; if (uVar8 == 0) { if (param_3 != 0) { uVar17 = 0; uVar11 = 0; uVar10 = 0; goto LAB_00001b80; } puVar14 = *(uint **)(param_1 + param_2 * 0x20 + 0x10); *puVar14 = 0x80008000; puVar14[1] = 0x20002000; *puVar14 = uVar4; puVar14[1] = uVar16 | uVar3; puVar14[2] = 0xffff0000; } else { uVar9 = uVar17 >> 9 & 0xff; uVar2 = uVar9 * 1000; uVar11 = 0; if (uVar2 != 0) { uVar11 = (uVar10 * 1000000) / uVar2; } uVar5 = 0; if (uVar18 != 0) { uVar5 = uVar11 / uVar18; } uVar5 = uVar5 / 0x19; uVar11 = 0; if (uVar5 != 0) { uVar11 = (uVar8 * 0x104 * uVar19) / uVar5; } uVar11 = uVar11 / 10000; if ((uVar17 >> 0x11 & 3) == 0) { uVar17 = 3; } else { uVar17 = (uint)((uVar17 >> 0x11 & 3) != 1); } if (uVar5 < 0x100) { uVar6 = 0; if (uVar18 != 0) { uVar6 = (uVar10 * 1000000) / uVar18; } uVar10 = uVar5 + 1; uVar18 = 0; if (uVar10 != 0) { uVar18 = uVar6 / uVar10; } uVar7 = 0; if (uVar5 != 0) { uVar7 = uVar6 / uVar5; } if (uVar7 / 0x19 + uVar9 * -1000 <= uVar2 - uVar18 / 0x19) { uVar10 = uVar5; } if (uVar11 == 0) { uVar11 = 1; } else { LAB_00001a3c: if (uVar11 < 0x3f) { uVar18 = 0; if (uVar19 != 0) { uVar18 = (uVar11 * 10000 * uVar10) / uVar19; } uVar2 = 0; if (uVar19 != 0) { uVar2 = ((uVar11 * 10000 + 10000) * uVar10) / uVar19; } if (uVar2 / 0x1a + uVar8 * -10 < uVar8 * 10 - uVar18 / 0x1a) { uVar11 = uVar11 + 1; } } else { uVar11 = 0x3f; } } if ((0x200 < uVar11 * uVar10) && (uVar11 = 0, uVar10 != 0)) { uVar11 = 0x200 / uVar10; } } else { uVar10 = 0xff; if (uVar11 != 0) goto LAB_00001a3c; uVar11 = 1; } if (param_3 != 0) { LAB_00001b80: lVar15 = *(long *)(param_1 + param_2 * 0x20 + 0x10); *(undefined4 *)(lVar15 + 0x20) = 0x80008000; *(undefined4 *)(lVar15 + 0x24) = 0x20002000; *(uint *)(lVar15 + 0x20) = uVar4; *(uint *)(lVar15 + 0x24) = uVar3 | uVar16; *(undefined4 *)(lVar15 + 0x28) = 0xffff0000; if (uVar8 != 0) { *(uint *)(lVar15 + 0x2c) = uVar11 << 8 | uVar17 << 0xe | uVar10 | 0xffff0000; *(undefined4 *)(lVar15 + 0x30) = 0x10001; } iVar20 = 1000; *(undefined4 *)(lVar15 + 0x24) = 0x20000000; goto LAB_00001bdc; } puVar14 = *(uint **)(param_1 + param_2 * 0x20 + 0x10); *puVar14 = 0x80008000; puVar14[1] = 0x20002000; *puVar14 = uVar4; puVar14[1] = uVar16 | uVar3; puVar14[2] = 0xffff0000; puVar14[3] = uVar10 | uVar11 << 8 | uVar17 << 0xe | 0xffff0000; puVar14[4] = 0x10001; } iVar20 = 1000; puVar14[1] = 0x20000000; goto LAB_00001aec; } } uVar18 = uVar18 + 1; } while (uVar18 != 5); } uVar16 = uVar16 + 1; } while (uVar16 != 7); pcVar13 = s_cannot_find_fout_mhz____00010f89; } else { pcVar13 = s_fout_mhz_invalid____00010f75; } FUN_000104b8(pcVar13); return; while (iVar20 = iVar20 + -1, iVar20 != 0) { LAB_00001bdc: thunk_FUN_00010a38(1); lVar15 = *(long *)(param_1 + param_2 * 0x20 + 0x10); if ((*(uint *)(lVar15 + 0x38) >> 0xf & 1) != 0) break; } *(undefined4 *)(lVar15 + 0x20) = 0x80000000; goto LAB_00001b10; while (iVar20 = iVar20 + -1, iVar20 != 0) { LAB_00001aec: thunk_FUN_00010a38(1); puVar12 = *(undefined4 **)(param_1 + param_2 * 0x20 + 0x10); if (((uint)puVar12[6] >> 0xf & 1) != 0) break; } *puVar12 = 0x80000000; LAB_00001b10: *(uint *)(*(long *)(param_1 + 0x88) + 0x594) = uVar1 & 0xc0 | 0xc00000; return; } // FUN_00001c14 @ 00001c14 undefined8 FUN_00001c14(int param_1,ulong param_2,int param_3,ulong param_4) { long lVar1; long lVar2; byte bVar3; bool bVar4; long lVar5; long lVar6; int iVar7; ulong uVar8; long lVar9; long lVar10; long lVar11; int iVar12; uint uVar13; lVar5 = *(long *)(DAT_00012b78 + (param_2 & 0xffffffff) * 0x20 + 8); if (1 < param_1 - 1U) { return 0xffffffff; } bVar3 = 0; uVar8 = 0; do { iVar7 = (int)uVar8; if (((param_4 & 0xffffffff) >> (uVar8 & 0x3f) & 1) != 0) { if (param_1 == 2) { if (iVar7 == 0) { if (param_3 == 0) { lVar9 = 0x580; lVar6 = 0x7c4; goto LAB_00001ccc; } lVar6 = 0x7c0; *(undefined4 *)(lVar5 + 0x7c4) = 0; LAB_00001cbc: *(undefined4 *)(lVar5 + lVar6) = 0; } else { if (param_3 != 0) { lVar6 = 0x814; *(undefined4 *)(lVar5 + 0x818) = 0; goto LAB_00001cbc; } lVar9 = 0x768; lVar6 = 0x818; LAB_00001ccc: *(undefined4 *)(lVar5 + lVar6) = *(undefined4 *)(lVar5 + lVar9); lVar6 = 0x764; if (iVar7 == 0) { lVar6 = 0x574; } lVar9 = 0x814; if (iVar7 == 0) { lVar9 = 0x7c0; } *(undefined4 *)(lVar5 + lVar9) = *(undefined4 *)(lVar5 + lVar6); } bVar4 = iVar7 == 0; lVar6 = 0x794; if (bVar4) { lVar6 = 0x614; } lVar9 = 0x770; if (bVar4) { lVar9 = 400; } lVar1 = 0x824; if (bVar4) { lVar1 = 0x7cc; } lVar10 = 0x854; if (bVar4) { lVar10 = 0x7f4; } lVar11 = 0; do { if (param_3 == 0) { lVar2 = lVar11 * 3; if (iVar7 != 0) { lVar2 = lVar11; } *(undefined4 *)(lVar5 + lVar1 + lVar11) = *(undefined4 *)(lVar5 + lVar9 + lVar2); *(undefined4 *)(lVar5 + lVar10 + lVar11) = *(undefined4 *)(lVar5 + lVar6 + lVar2); } else { *(undefined4 *)(lVar5 + lVar1 + lVar11) = 0; *(undefined4 *)(lVar5 + lVar10 + lVar11) = 0; } lVar11 = lVar11 + 4; } while (lVar11 != 0x20); if (param_3 == 0) { *(undefined4 *)(lVar5 + lVar1 + -4) = *(undefined4 *)(lVar5 + lVar9 + -4); *(undefined4 *)(lVar5 + lVar10 + -4) = *(undefined4 *)(lVar5 + lVar6 + -4); } else { *(undefined4 *)(lVar5 + lVar1 + -4) = 0; *(undefined4 *)(lVar5 + lVar10 + -4) = 0; } } else { if (iVar7 == 0) { if (param_3 == 0) { lVar9 = 0xdc0; lVar6 = 0xdd0; goto LAB_00001e08; } lVar6 = 0xdd4; *(undefined4 *)(lVar5 + 0xdd0) = 0; LAB_00001df8: *(undefined4 *)(lVar5 + lVar6) = 0; } else { if (param_3 != 0) { lVar6 = 0xddc; *(undefined4 *)(lVar5 + 0xdd8) = 0; goto LAB_00001df8; } lVar9 = 0xdc8; lVar6 = 0xdd8; LAB_00001e08: *(undefined4 *)(lVar5 + lVar6) = *(undefined4 *)(lVar5 + lVar9); lVar6 = 0xdcc; if (iVar7 == 0) { lVar6 = 0xdc4; } lVar9 = 0xddc; if (iVar7 == 0) { lVar9 = 0xdd4; } *(undefined4 *)(lVar5 + lVar9) = *(undefined4 *)(lVar5 + lVar6); } bVar4 = iVar7 == 0; lVar6 = 0x500; if (bVar4) { lVar6 = 0x490; } lVar9 = 0x410; if (bVar4) { lVar9 = 0x1f0; } lVar1 = 0x8e0; if (bVar4) { lVar1 = 0x880; } uVar13 = 0x910; if (bVar4) { uVar13 = 0x8b0; } lVar6 = lVar6 - lVar9; lVar10 = 0; iVar12 = 0; do { if ((bool)(iVar12 == 9 & bVar3)) { uVar13 = 0x8e8; } if (param_3 == 0) { lVar11 = 0; if (iVar12 == 9) { lVar11 = -8; } *(undefined4 *)(lVar5 + lVar1 + lVar10) = *(undefined4 *)(lVar5 + lVar9 + lVar11); *(undefined4 *)(lVar5 + (ulong)uVar13 + lVar10) = *(undefined4 *)(lVar5 + lVar6 + lVar9 + lVar11); } else { *(undefined4 *)(lVar5 + lVar1 + lVar10) = 0; *(undefined4 *)(lVar5 + (ulong)uVar13 + lVar10) = 0; } iVar12 = iVar12 + 1; lVar10 = lVar10 + 4; lVar9 = lVar9 + 0xc; } while (iVar12 != 10); } } uVar8 = (ulong)(iVar7 + 1U); bVar3 = bVar3 ^ 1; if (iVar7 + 1U == 2) { return 0; } } while( true ); } // FUN_00001ef8 @ 00001ef8 int FUN_00001ef8(uint *param_1,long param_2,ulong param_3,uint param_4,int param_5) { long lVar1; uint uVar2; uint uVar3; if (*param_1 < 800) { return 0; } lVar1 = *(long *)(param_2 + (param_3 & 0xffffffff) * 0x20 + 8); uVar2 = *(uint *)(lVar1 + 0xb8) >> 0x1e; if (uVar2 == 0) { uVar2 = *(uint *)(lVar1 + 4) >> 0x1c; } else { uVar2 = *(uint *)(lVar1 + (ulong)(uVar2 * 4 - 4) + 0xbc) >> 10; } if ((uVar2 & 1) == 0) { if (param_4 == 1) { return 0; } if (param_4 == 3) { param_4 = 0; } if (param_5 == 1) goto LAB_00001f48; *(undefined4 *)(lVar1 + 0xac) = 0x55aa; *(undefined4 *)(lVar1 + 0xa7c) = 0xaa550000; *(uint *)(lVar1 + 0xa24) = *(uint *)(lVar1 + 0xa24) | 0x20; uVar2 = *(uint *)(lVar1 + 0xa24) & 0xffffcfff; LAB_00001fdc: uVar3 = 0x1000 << (ulong)(param_4 & 0x1f); } else { if (param_5 == 1) goto LAB_00001f48; *(undefined4 *)(lVar1 + 0xac) = 0x55aa; *(undefined4 *)(lVar1 + 0xa7c) = 0xaa550000; *(uint *)(lVar1 + 0xa24) = *(uint *)(lVar1 + 0xa24) | 0x20; uVar2 = *(uint *)(lVar1 + 0xa24) & 0xffffcfff; if (param_4 != 3) goto LAB_00001fdc; uVar3 = 0x3000; } *(uint *)(lVar1 + 0xa24) = uVar3 | uVar2; *(uint *)(lVar1 + 0xa24) = *(uint *)(lVar1 + 0xa24) | 1; if (param_5 == 0) { return 0; } LAB_00001f48: do { } while ((*(uint *)(lVar1 + 0xa24) >> 1 & 1) == 0); *(uint *)(lVar1 + 0xa24) = *(uint *)(lVar1 + 0xa24) & 0xfffffffe; *(uint *)(lVar1 + 0xa24) = *(uint *)(lVar1 + 0xa24) & 0xffffcfff; *(uint *)(lVar1 + 0xa24) = *(uint *)(lVar1 + 0xa24) & 0xffffffdf; if ((*(uint *)(lVar1 + 0xe8) & 0xffff) == 0) { return -(uint)((*(uint *)(lVar1 + 0xec) & 3) != 0); } return -1; } // FUN_00002038 @ 00002038 uint FUN_00002038(uint *param_1,int param_2) { uint uVar1; uint uVar2; uVar2 = *param_1; if (param_2 == 7) { if (uVar2 < 100) { uVar2 = 100; } if (0x1a4 < uVar2) { uVar2 = 0x1a4; } if (uVar2 < 0x12d) { uVar1 = uVar2 - 100 >> 2; } else { uVar1 = uVar2 - 0xdc >> 2 | 0x40; } uVar2 = uVar2 & 0xfffffffc; } else if (param_2 == 8) { if (uVar2 < 0x96) { uVar2 = 0x96; } if (0x275 < uVar2) { uVar2 = 0x275; } if (uVar2 < 0x1c2) { uVar1 = (uVar2 - 0x96) / 6; } else { uVar1 = (uVar2 - 0x149) / 6 | 0x40; } uVar2 = (uVar2 / 6) * 6; } else { if (uVar2 < 100) { uVar2 = 100; } if (0x2df < uVar2) { uVar2 = 0x2df; } uVar1 = (uVar2 - 100) / 5; uVar2 = (uVar2 / 5) * 5; } *param_1 = uVar2; return uVar1; } // FUN_00002110 @ 00002110 undefined * FUN_00002110(int param_1) { byte bVar1; bVar1 = DAT_00011b50; if (((param_1 != 7) && (bVar1 = DAT_00011b58, param_1 != 8)) && (bVar1 = DAT_00011b52, param_1 != 9)) { FUN_000104b8(s_unsupported_dram_type_00010da4); return (undefined *)0x0; } return &DAT_00011b38 + (ulong)bVar1 * 4; } // FUN_0000217c @ 0000217c void FUN_0000217c(void) { uint uVar1; uint uVar2; ulong uVar3; undefined4 local_118; undefined4 local_114; undefined8 local_110; uint local_108; uint uStack_104; uint local_100; undefined1 auStack_f0 [4]; undefined4 local_ec; undefined4 local_e8; undefined4 local_e4; undefined4 uStack_e0; undefined1 auStack_b8 [184]; uVar3 = (ulong)DAT_00011b42; FUN_00000aac(&local_118,0,0x28); local_118 = 0; uVar1 = *(uint *)(&DAT_00011b38 + uVar3 * 4); uVar2 = uVar1 >> 0x1c; if (uVar2 < 10) { local_114 = 1; local_108 = uVar1 & 0xffffff; uStack_104 = uVar1 >> 0x18 & 0xf; local_100 = uVar2; if (uVar2 == 0) { local_110 = 0xfd890000; } else if (uVar2 == 1) { local_110 = 0xfeb40000; } else if (uVar2 == 2) { local_110 = 0xfeb50000; } else if (uVar2 == 3) { local_110 = 0xfeb60000; } else if (uVar2 == 4) { local_110 = 0xfeb70000; } else if (uVar2 == 5) { local_110 = 0xfeb80000; } else if (uVar2 == 6) { local_110 = 0xfeb90000; } else if (uVar2 == 7) { local_110 = 0xfeba0000; } else if (uVar2 == 8) { local_110 = 0xfebb0000; } else { local_110 = 0xfebc0000; } } else { local_114 = 0; } FUN_00000da4(); FUN_00000c2c(0x54410050,&local_118); FUN_00000aac(auStack_b8,0,0xb8); FUN_0000c3d8(DAT_00012b78,DAT_00012b80,auStack_b8,*(byte *)((ulong)DAT_00011b42 * 4 + 0x11b47) & 1 ); FUN_00000c2c(0x54410052,auStack_b8); FUN_000108dc(*(undefined4 *)(uVar3 * 4 + 0x11b48)); FUN_00000aac(auStack_f0,0,0x38); local_ec = *DAT_00012b70; local_e8 = DAT_00012b70[1]; local_e4 = DAT_00012b70[2]; uStack_e0 = DAT_00012b70[3]; FUN_00000c2c(0x54410058,auStack_f0); FUN_000016fc(); return; } // FUN_00002340 @ 00002340 undefined8 FUN_00002340(long param_1,int param_2,int param_3,uint param_4) { do { } while ((*(uint *)(param_1 + 0x10090) & 1) != 0); *(int *)(param_1 + 0x10080) = param_2 << 4; *(uint *)(param_1 + 0x10084) = param_4 & 0xff | param_3 << 8; *(uint *)(param_1 + 0x10080) = *(uint *)(param_1 + 0x10080) | 0x80000000; do { } while (*(int *)(param_1 + 0x10080) < 0); do { } while ((*(uint *)(param_1 + 0x10090) & 1) != 0); return 0; } // FUN_00002384 @ 00002384 void FUN_00002384(ulong param_1,long param_2) { ulong uVar1; uint uVar2; uint uVar3; uint uVar4; int iVar5; int iVar6; int iVar7; int iVar8; int iVar9; undefined *puVar10; long lVar11; uint uVar12; ulong uVar13; uint uVar14; int iVar15; param_1 = param_1 & 0xffffffff; uVar14 = *(uint *)(param_2 + 0x1b0); lVar11 = *(long *)(DAT_00012b78 + param_1 * 0x20 + 8); uVar4 = *(uint *)(lVar11 + 0xb8) >> 0x1e; uVar12 = *(uint *)(lVar11 + 0xb4) & 0x7ff; if (uVar4 == 0) { uVar4 = *(uint *)(lVar11 + 0xb0) & 1; } else { uVar4 = *(uint *)(lVar11 + (ulong)(uVar4 * 4 - 4) + 0xc4) & 0x40000000; } FUN_0001053c(s__s__d__ch__d_00010ee4,s_print_train_result_00010b60,0x1d8,param_1); uVar4 = (uVar4 != 0) + 1; uVar2 = 0; if (uVar14 != 0) { uVar2 = 1000000000 / uVar14; } uVar14 = 0; if (uVar12 != 0) { uVar14 = uVar2 / uVar12; } uVar2 = 0; if (uVar4 != 0) { uVar2 = uVar14 / uVar4; } if (uVar4 == 2) { puVar10 = &DAT_00010edd; } else { puVar10 = &DAT_00010ee0; } FUN_0001053c(s_DLL_LOCK_VAL_0x_x__tFS__dfs__dll_00010ef2,uVar12,uVar2,puVar10); FUN_0001053c(s_RD_Training_result__00010f1c); uVar12 = 0; do { uVar14 = *(uint *)(param_2 + param_1 * 0x6c); if (uVar14 <= uVar12) { FUN_0001053c(s_WR_Training_result__00010f52); for (uVar12 = 0; uVar14 = *(uint *)(param_2 + param_1 * 0x6c), uVar12 < uVar14; uVar12 = uVar12 + 1) { if (uVar14 == 2) { FUN_0001053c(s_cs__d_00010f31,uVar12); } FUN_0001053c(s_cycle__00010f67); uVar13 = 0xdc8; if (uVar12 == 0) { uVar13 = 0xdc0; } iVar6 = 0; do { uVar14 = 0; uVar1 = uVar13; if (iVar6 != 0) { uVar1 = (ulong)((int)uVar13 + 4); } do { uVar4 = *(uint *)(lVar11 + uVar1) >> (ulong)(uVar14 & 0x1f); uVar14 = uVar14 + 3; FUN_0001053c(&DAT_00010f6e,uVar4 >> 1 & 3,(uVar4 & 1) * 5); } while (uVar14 != 0x1e); iVar6 = iVar6 + 1; FUN_0001053c(&DAT_000113d1); } while (iVar6 != 2); FUN_0001053c(s_min_dq___d__min__d__d__max__d__d_00011038 + 0x2d); iVar6 = 0x500; if (uVar12 == 0) { iVar6 = 0x490; } iVar7 = 0x410; if (uVar12 == 0) { iVar7 = 0x1f0; } uVar13 = 0; do { uVar14 = 0; FUN_0001053c(&DAT_00010f4e,(&DAT_00011dd0)[uVar13]); do { uVar4 = iVar7 - 8; iVar15 = 0; do { uVar2 = iVar6 + iVar15 * 0xc; uVar3 = uVar4 + 8; if (iVar15 == 9) { uVar2 = (iVar6 - iVar7) + uVar4; uVar3 = uVar4; } uVar2 = *(uint *)(lVar11 + (ulong)uVar2) >> (ulong)(uVar14 & 0x1f) & 0x3ff; FUN_000017ac(uVar2,(*(uint *)(lVar11 + (ulong)uVar3) >> (ulong)(uVar14 & 0x1f) & 0x3ff ) * 2 - uVar2,uVar13 & 0xffffffff); iVar15 = iVar15 + 1; uVar4 = uVar4 + 0xc; } while (iVar15 != 10); uVar14 = uVar14 + 0x10; FUN_0001053c(&DAT_000113d1); } while (uVar14 != 0x20); uVar13 = uVar13 + 1; FUN_0001053c(s_min_dq___d__min__d__d__max__d__d_00011038 + 0x2d); } while (uVar13 != 4); } return; } if (uVar14 == 2) { FUN_0001053c(s_cs__d_00010f31,uVar12); } uVar13 = 0; uVar14 = *(uint *)(lVar11 + (ulong)(uVar12 * 0x1e8) + 0x580); FUN_0001053c(s_DQS0_0x_x__DQS1_0x_x_00010f38,uVar14 & 0x1ff,uVar14 >> 0x10 & 0x1ff); iVar6 = 0x770; if (uVar12 == 0) { iVar6 = 400; } iVar7 = 0x794; if (uVar12 == 0) { iVar7 = 0x614; } do { uVar14 = 0; FUN_0001053c(&DAT_00010f4e,(&DAT_00011dd0)[uVar13]); do { iVar15 = 0; do { uVar4 = iVar6 - 4; uVar2 = iVar7 - 4; if (uVar12 == 0) { if (iVar15 != 8) { iVar9 = iVar15 * 0xc; iVar8 = 0x614; iVar5 = 400; LAB_00002590: uVar4 = iVar5 + iVar9; uVar2 = iVar9 + iVar8; } } else if (iVar15 != 8) { iVar9 = iVar15 << 2; iVar8 = 0x794; iVar5 = 0x770; goto LAB_00002590; } iVar15 = iVar15 + 1; uVar2 = *(uint *)(lVar11 + (ulong)uVar2) >> (ulong)(uVar14 & 0x1f) & 0x3ff; FUN_000017ac(uVar2,(*(uint *)(lVar11 + (ulong)uVar4) >> (ulong)(uVar14 & 0x1f) & 0x3ff) * 2 - uVar2,uVar13 & 0xffffffff); } while (iVar15 != 9); uVar14 = uVar14 + 0x10; FUN_0001053c(&DAT_000113d1); } while (uVar14 != 0x20); uVar13 = uVar13 + 1; FUN_0001053c(s_min_dq___d__min__d__d__max__d__d_00011038 + 0x2d); } while (uVar13 != 4); uVar12 = uVar12 + 1; } while( true ); } // FUN_000027a0 @ 000027a0 void FUN_000027a0(void) { *(uint *)(DAT_00012b78[0x10] + 0x218) = (*(uint *)(DAT_00012b78[1] + 4) >> 0xf & 1) << 1 | *(uint *)(*DAT_00012b78 + ((ulong)*(uint *)(*DAT_00012b78 + 0x10008) & 3) * 0x100000 + 0xd00) & 1; return; } // FUN_000027e0 @ 000027e0 void FUN_000027e0(long param_1) { char *pcVar1; pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + param_1 + 8; pcVar1[0] = '\x01'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; do { } while ((*(uint *)(s_stride_0x_x__ddr_config_0x_x_00010c78 + param_1 + 0xc) & 1) == 0); return; } // FUN_000027f8 @ 000027f8 void FUN_000027f8(long param_1,int param_2,int *param_3,int param_4,uint param_5) { char *pcVar1; int iVar2; uint uVar3; bool bVar4; bool bVar5; uint uVar6; int iVar7; ulong uVar8; ulong uVar9; int iVar10; int iVar11; uVar8 = FUN_00000e9c(param_3,0,param_4); if ((*param_3 == 2) && (uVar9 = FUN_00000e9c(param_3,1,param_4), uVar8 <= uVar9)) { uVar8 = FUN_00000e9c(param_3,1,param_4); } uVar6 = (uint)(uVar8 >> ((ulong)(uint)((param_3[3] + 0x14) - param_3[4]) & 0x3f)); if (param_4 == 9) { uVar3 = param_5 >> 1; param_5 = param_5 >> 2; if ((*(uint *)(param_1 + (ulong)(uint)(param_2 << 0x14) + 0xd00) & 1) == 0) { param_5 = uVar3; } if (uVar6 < 0x101) { LAB_000029c0: iVar7 = 0x82; iVar11 = 0x3c; iVar10 = 0x3c; goto LAB_00002908; } if (uVar6 < 0x201) { LAB_000029a8: iVar10 = 0x5a; iVar7 = 0xb4; iVar11 = iVar10; goto LAB_00002908; } if (uVar6 < 0x401) { iVar10 = 0x78; iVar7 = 0xd2; iVar11 = 0x5a; goto LAB_00002908; } bVar4 = 0x7ff < uVar6; bVar5 = uVar6 == 0x800; } else { if (1 < param_4 - 7U) { return; } if (uVar6 < 0x101) goto LAB_000029c0; if (uVar6 < 0x201) goto LAB_000029a8; bVar4 = 0x3ff < uVar6; bVar5 = uVar6 == 0x400; } iVar11 = 0x5a; iVar10 = 0xbe; if (!bVar4 || bVar5) { iVar10 = 0x8c; } iVar7 = 0x17c; if (!bVar4 || bVar5) { iVar7 = 0x118; } LAB_00002908: iVar2 = iVar7; if ((*(uint *)(param_1 + 0x10200) >> 8 & 1) != 0) { iVar2 = iVar10; } uVar6 = (param_5 >> 1) + 999 + (iVar7 + 7) * param_5; if (uVar6 < 2000) { uVar6 = 2; } else { uVar6 = uVar6 / 1000; } uVar8 = (ulong)(uint)(param_2 << 0x14); pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + param_1 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *(uint *)(param_1 + uVar8 + 0x604) = *(uint *)(param_1 + uVar8 + 0x604) & 0xfffff000 | (iVar2 * param_5 + 999) / 1000; *(uint *)(param_1 + uVar8 + 0x38) = *(uint *)(param_1 + uVar8 + 0x38) & 0xffffff00 | uVar6; *(uint *)(param_1 + uVar8 + 0x608) = *(uint *)(param_1 + uVar8 + 0x608) & 0xff00ffff | (iVar11 * param_5 + 999) / 1000 << 0x10; FUN_000027e0(param_1); return; } // FUN_000029f4 @ 000029f4 void FUN_000029f4(long param_1,uint param_2,int *param_3,uint param_4,undefined4 param_5) { char *pcVar1; undefined4 *puVar2; long lVar3; long lVar4; long *plVar5; long lVar6; long lVar7; lVar6 = (ulong)param_2 * 0x20; lVar7 = *(long *)(param_1 + lVar6); lVar6 = *(long *)(param_1 + lVar6 + 0x10); plVar5 = (long *)(param_1 + 0xd0); if (param_2 < 2) { plVar5 = (long *)(param_1 + 200); } lVar3 = *plVar5; pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar7 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *(uint *)(lVar7 + 0x10510) = *(uint *)(lVar7 + 0x10510) & 0xfffffffe; *(uint *)(lVar7 + 0x10510) = *(uint *)(lVar7 + 0x10510) | 0x20; FUN_000027e0(lVar7); do { } while ((*(uint *)(lVar7 + 0x10514) & 1) != 0); lVar4 = (ulong)((param_2 & 1) + 0x4c) * 4; puVar2 = (undefined4 *)(lVar3 + lVar4); *(undefined4 *)(lVar3 + lVar4) = 0x80000; thunk_FUN_00010a38(1); if (*param_3 == 9) { *(undefined4 *)(lVar6 + 0xa00) = 0x20002; } *puVar2 = 0x30000; FUN_0000186c(param_1,param_2,param_4,param_5); *(uint *)(*(long *)(param_1 + (ulong)param_2 * 0x20 + 0x10) + 0x300) = param_4 | 0x10000; *(undefined4 *)(lVar6 + 0xa00) = 0x20000; *puVar2 = 0x80008; pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar7 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *(uint *)(lVar7 + 0x10510) = *(uint *)(lVar7 + 0x10510) & 0xffffffdf; FUN_000027e0(lVar7); do { } while ((*(uint *)(lVar7 + 0x10514) & 1) == 0); pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar7 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *(uint *)(lVar7 + 0x10510) = *(uint *)(lVar7 + 0x10510) | 1; FUN_000027e0(lVar7); return; } // FUN_00002b40 @ 00002b40 undefined8 FUN_00002b40(long param_1,ulong param_2,uint param_3,long param_4) { long lVar1; uint uVar2; uint uVar3; ulong uVar4; long lVar5; uint uVar6; ulong uVar7; uint uVar8; uVar7 = param_2 & 0xffffffff; lVar1 = param_4 + 0x1b4; lVar5 = *(long *)(param_1 + uVar7 * 0x20 + 8); if (param_3 == 0) { FUN_000029f4(param_1,param_2,lVar1,0,100); } uVar8 = 0; *(uint *)(lVar5 + 0xa20) = *(uint *)(lVar5 + 0xa20) | 1; *(uint *)(lVar5 + 4) = *(uint *)(lVar5 + 4) | 4; *(uint *)(lVar5 + 0x600) = *(uint *)(lVar5 + 0x600) & 0xf9ffffff | 0x2000000; *(uint *)(lVar5 + 0xadc) = *(uint *)(lVar5 + 0xadc) & 0xfffffff3 | 4; *(uint *)(lVar5 + 0xa78) = param_3 << 0x13 | 0x10100; *(uint *)(lVar5 + 0xa68) = *(uint *)(lVar5 + 0xa68) | 0x1000; thunk_FUN_00010a38(1); *(uint *)(lVar5 + 0xa68) = *(uint *)(lVar5 + 0xa68) & 0xffffefff; *(uint *)(lVar5 + 0x600) = *(uint *)(lVar5 + 0x600) & 0xff9fffff | 0x200000; *(uint *)(lVar5 + 0x608) = *(uint *)(lVar5 + 0x608) | 0x20000000; FUN_000029f4(param_1,uVar7,lVar1,0,*(int *)(param_4 + 0x1b0) << 1); *(uint *)(lVar5 + 0x608) = *(uint *)(lVar5 + 0x608) | 0x8000000; *(uint *)(lVar5 + 0x608) = *(uint *)(lVar5 + 0x608) | 0x80000000; thunk_FUN_00010a38(1); *(uint *)(lVar5 + 0x608) = *(uint *)(lVar5 + 0x608) & 0x7fffffff; *(uint *)(lVar5 + 0x608) = *(uint *)(lVar5 + 0x608) | 0x40000000; *(uint *)(lVar5 + 0x60c) = *(uint *)(lVar5 + 0x60c) | 1; FUN_00001770(lVar5); uVar6 = 0; uVar2 = *(uint *)(lVar5 + 0xb4) & 0x7ff; uVar3 = uVar2 >> 1; if (*(int *)(*(long *)(param_4 + 0x228) + 0x60) != 0x80) { uVar3 = uVar2; } *(uint *)(lVar5 + 0x8c) = *(uint *)(lVar5 + 0x8c) & 0xf800ffff | uVar3 << 0x10; *(uint *)(lVar5 + 0x90) = uVar3 | uVar3 << 0x10; FUN_00001770(lVar5); do { uVar2 = uVar6 | uVar6 << 0x10; *(uint *)(lVar5 + 0x7c) = uVar2; *(uint *)(lVar5 + 0x80) = uVar2; *(uint *)(lVar5 + 0x84) = uVar2; *(uint *)(lVar5 + 0x8c) = *(uint *)(lVar5 + 0x8c) & 0xfffff800 | uVar6; FUN_00001770(lVar5); *(undefined4 *)(lVar5 + 0xa60) = 0x10007f00; *(undefined4 *)(lVar5 + 0xa5c) = 1; *(undefined4 *)(lVar5 + 0xa5c) = 0; uVar4 = 0; uVar2 = *(uint *)(lVar5 + 0x3a0); do { uVar3 = uVar2 >> (uVar4 & 0x3f); if (param_3 == 0) { if ((uVar3 & 1) == 0) { LAB_00002e6c: if ((uVar8 >> (uVar4 & 0x3f) & 1) == 0) { *(uint *)(&DAT_00012be8 + uVar4 * 4 + (ulong)param_3 * 0x1c) = uVar6; uVar8 = uVar8 | (uint)(1L << (uVar4 & 0x3f)); } } } else if ((uVar3 & 1) != 0) goto LAB_00002e6c; uVar4 = uVar4 + 1; } while (uVar4 != 7); if ((uVar8 == 0x7f) || (uVar6 = uVar6 + 1, uVar6 == 0x2ff)) { *(undefined4 *)(lVar5 + 0x8c) = 0; *(undefined4 *)(lVar5 + 0x90) = 0; FUN_00001770(lVar5); *(uint *)(lVar5 + 0x60c) = *(uint *)(lVar5 + 0x60c) & 0xfffffffe; FUN_00001770(lVar5); FUN_000029f4(param_1,uVar7,lVar1,0,100); *(uint *)(lVar5 + 0x608) = *(uint *)(lVar5 + 0x608) & 0x9fffffff; thunk_FUN_00010a38(1); *(uint *)(lVar5 + 0x608) = *(uint *)(lVar5 + 0x608) & 0xf7ffffff; *(undefined4 *)(lVar5 + 0xa78) = 0x100; *(uint *)(lVar5 + 0xa68) = *(uint *)(lVar5 + 0xa68) | 0x1000; thunk_FUN_00010a38(1); *(uint *)(lVar5 + 0xa68) = *(uint *)(lVar5 + 0xa68) & 0xffffefff; *(uint *)(lVar5 + 0x600) = *(uint *)(lVar5 + 0x600) & 0xff9fffff; *(uint *)(lVar5 + 0xadc) = *(uint *)(lVar5 + 0xadc) & 0xfffffff3 | 4; *(uint *)(lVar5 + 0x600) = *(uint *)(lVar5 + 0x600) & 0xf9ffffff | 0x2000000; *(uint *)(lVar5 + 0x608) = *(uint *)(lVar5 + 0x608) | 0x10000000; thunk_FUN_00010a38(1); *(uint *)(lVar5 + 0x608) = *(uint *)(lVar5 + 0x608) & 0xefffffff; *(uint *)(lVar5 + 4) = *(uint *)(lVar5 + 4) & 0xfffffffb; *(uint *)(lVar5 + 0xa20) = *(uint *)(lVar5 + 0xa20) & 0xfffffffe; return 0; } } while( true ); } // FUN_00002e88 @ 00002e88 uint FUN_00002e88(long param_1,int param_2,uint param_3,int param_4) { *(undefined4 *)(param_1 + 0x10080) = 0x1000030; do { } while ((*(uint *)(param_1 + 0x10090) & 1) != 0); *(uint *)(param_1 + 0x10080) = param_2 << 4 | 1; *(int *)(param_1 + 0x10084) = param_4 << 8; *(uint *)(param_1 + 0x10080) = *(uint *)(param_1 + 0x10080) | 0x80000000; do { } while (*(int *)(param_1 + 0x10080) < 0); do { } while ((*(uint *)(param_1 + 0x10090) >> 0x10 & 1) == 0); return *(uint *)(param_1 + 0x10094) >> (ulong)((param_3 & 3) << 3) & 0xff; } // FUN_00002ee4 @ 00002ee4 undefined8 FUN_00002ee4(ulong param_1,ulong param_2,undefined8 param_3,undefined4 param_4) { uint uVar1; ulong uVar2; char *pcVar3; undefined8 uVar4; uVar2 = FUN_00002e88(*(undefined8 *)(DAT_00012b78 + (param_1 & 0xffffffff) * 0x20), 1L << (param_2 & 0x3f),param_3,0); uVar1 = (uint)(uVar2 >> 3) & 3; if (uVar1 - 1 < 2) { FUN_0001053c(s_WARNING__CH_d_ZQ_d_may_00010ce4,(param_1 & 0xffffffff) >> 1,param_4); if (uVar1 == 1) { pcVar3 = s_connect_to_VSSQ_or_float__00010cfc; } else { pcVar3 = s_short_to_VDDQ__00010d17; } FUN_000104b8(pcVar3); uVar4 = 0xffffffff; } else { uVar4 = 0; } return uVar4; } // FUN_00002f7c @ 00002f7c void FUN_00002f7c(long param_1,int param_2) { uint *puVar1; int iVar2; uint uVar3; undefined4 uVar4; undefined4 uVar5; char *pcVar6; uint uVar7; long lVar8; undefined8 *puVar9; long lVar10; ulong uVar11; long lVar12; uint uVar13; uint *puVar14; undefined4 local_90; undefined4 local_8c; undefined8 local_88; undefined8 uStack_80; undefined8 local_78; undefined8 uStack_70; undefined4 local_68; undefined8 local_60; undefined8 uStack_58; undefined8 local_50; undefined8 uStack_48; undefined8 local_40; undefined8 auStack_38 [7]; local_60 = DAT_00010ac8; uStack_58 = DAT_00010ad0; local_50 = DAT_00010ad8; uStack_48 = DAT_00010ae0; local_40 = DAT_00010ae8; local_90 = 0xc; iVar2 = *(int *)(param_1 + 0x1b4); local_8c = 0xe; FUN_00000ac8(auStack_38,&DAT_00010af0,0x38); local_68 = DAT_00010b48; local_88 = DAT_00010b28; uStack_80 = DAT_00010b30; puVar14 = (uint *)(DAT_00012b78 + 0xd8); puVar1 = (uint *)(DAT_00012b78 + 0xe8); local_78 = DAT_00010b38; uStack_70 = DAT_00010b40; do { uVar3 = *puVar14; if (uVar3 != 0xf) { uVar11 = (ulong)uVar3; lVar10 = *(long *)(DAT_00012b78 + uVar11 * 0x20); lVar12 = param_1 + uVar11 * 0x14; for (uVar13 = 0; uVar13 < *(uint *)(param_1 + uVar11 * 0x6c); uVar13 = uVar13 + 1) { if (iVar2 - 7U < 2) { if (param_2 == 0) { uVar7 = 10; puVar9 = &local_60; } else { uVar7 = 2; puVar9 = (undefined8 *)&local_90; } } else if (param_2 == 0) { uVar7 = 0xe; puVar9 = auStack_38; } else { uVar7 = 9; puVar9 = &local_88; } FUN_0001053c(s_CH_d_CS_d__00010e19,uVar3,uVar13); lVar8 = 0; do { uVar4 = *(undefined4 *)((long)puVar9 + lVar8 * 4); uVar5 = FUN_00002e88(lVar10,1 << (ulong)(uVar13 & 0x1f),0,uVar4,iVar2); FUN_0001053c(s_MR_d_0x_x__00010e24,uVar4,uVar5); lVar8 = lVar8 + 1; } while ((uint)lVar8 < uVar7); if ((param_2 == 1) && (iVar2 - 7U < 2)) { lVar8 = ((ulong)*(uint *)(lVar10 + 0x10008) & 3) * 0x100000; FUN_0001053c(s_MR1_0x_x__00010e2f,*(uint *)(lVar10 + lVar8 + 0x500) >> 0x10); FUN_0001053c(s_MR2_0x_x__00010e39,*(uint *)(lVar10 + lVar8 + 0x500) & 0xffff); FUN_0001053c(s_MR3_0x_x__00010e43,*(uint *)(lVar10 + lVar8 + 0x504) >> 0x10); FUN_0001053c(s_MR11_0x_x__00010e4d,*(uint *)(lVar10 + lVar8 + 0x508) >> 0x10); uVar7 = *(uint *)(lVar10 + lVar8 + 0x50c) >> 0x10; if (iVar2 == 8 && uVar13 == 1) { uVar7 = uVar7 & 199 | 0x28; } pcVar6 = s_MR22_0x_x__00010e58; LAB_000031ec: FUN_0001053c(pcVar6,uVar7); } else if (param_2 == 1 && iVar2 == 9) { FUN_0001053c(s_MR2_0x_x__00010e39,*(undefined1 *)(lVar12 + 0x1d5)); FUN_0001053c(s_MR10_0x_x__00010e63,*(undefined1 *)(lVar12 + 0x1d7)); uVar7 = (uint)*(byte *)(lVar12 + 0x1df); pcVar6 = &DAT_00010e6e; goto LAB_000031ec; } FUN_0001053c(s_min_dq___d__min__d__d__max__d__d_00011038 + 0x2d); } } puVar14 = puVar14 + 1; if (puVar1 == puVar14) { return; } } while( true ); } // FUN_00003268 @ 00003268 bool FUN_00003268(long param_1) { bool bVar1; bVar1 = -1 < *(int *)(param_1 + 0x10280); if (bVar1) { *(uint *)(param_1 + 0x10280) = *(uint *)(param_1 + 0x10280) | 0x80000000; } *(uint *)(param_1 + 0x10208) = *(uint *)(param_1 + 0x10208) | 1; *(uint *)(param_1 + 0x10208) = *(uint *)(param_1 + 0x10208) ^ 0x10; return bVar1; } // FUN_000032a8 @ 000032a8 void FUN_000032a8(long param_1,int param_2) { if (param_2 != 0) { *(uint *)(param_1 + 0x10280) = *(uint *)(param_1 + 0x10280) & 0x7fffffff; } *(uint *)(param_1 + 0x10208) = *(uint *)(param_1 + 0x10208) & 0xfffffffe; *(uint *)(param_1 + 0x10208) = *(uint *)(param_1 + 0x10208) ^ 0x10; return; } // FUN_000032d8 @ 000032d8 int FUN_000032d8(long param_1,ulong param_2,uint param_3) { long lVar1; uint uVar2; lVar1 = *(long *)(param_1 + (param_2 & 0xffffffff) * 0x20 + 8); *(undefined4 *)(lVar1 + 0xac) = 0xeeee5555; *(undefined4 *)(lVar1 + 0xa7c) = 0x5555eeee; *(uint *)(lVar1 + 0xa24) = *(uint *)(lVar1 + 0xa24) | 0x10; if (param_3 == 3) { uVar2 = 0xc00; } else { uVar2 = 0x400 << (ulong)(param_3 & 0x1f); } *(uint *)(lVar1 + 0xa24) = uVar2 | *(uint *)(lVar1 + 0xa24) & 0xfffff3ff; *(uint *)(lVar1 + 0xa24) = *(uint *)(lVar1 + 0xa24) | 1; do { } while ((*(uint *)(lVar1 + 0xa24) >> 1 & 1) == 0); *(uint *)(lVar1 + 0xa24) = *(uint *)(lVar1 + 0xa24) & 0xfffffffe; *(uint *)(lVar1 + 0xa24) = *(uint *)(lVar1 + 0xa24) & 0xfffff3ff; *(uint *)(lVar1 + 0xa24) = *(uint *)(lVar1 + 0xa24) & 0xffffffef; return -(uint)((*(uint *)(lVar1 + 0x594) & 0xc0c0000) != 0); } // FUN_0000337c @ 0000337c undefined * FUN_0000337c(int param_1,uint param_2) { undefined *puVar1; if (param_1 == 9) { puVar1 = &DAT_00011ce0; if (param_2 < 0x216) { return &DAT_00011ce0; } if (param_2 < 0x321) { LAB_000033e4: return puVar1 + 0x15; } if (param_2 < 0x641) { LAB_000033ec: return puVar1 + 0x2a; } if (0x855 < param_2) { return &DAT_00011d34; } } else { puVar1 = &DAT_00011c78; if (param_2 < 0x191) { return &DAT_00011c78; } if (param_2 < 0x266) goto LAB_000033e4; if (param_2 < 0x42b) goto LAB_000033ec; } return puVar1 + 0x3f; } // FUN_000033f4 @ 000033f4 void FUN_000033f4(long param_1,ulong param_2,long param_3,int param_4,int param_5,uint param_6) { char *pcVar1; uint uVar2; uint uVar3; int iVar4; undefined4 uVar5; uint uVar6; uint uVar7; uint uVar8; long lVar9; long lVar10; uint uVar11; uint uVar12; byte bVar13; long lVar14; long lVar15; long lVar16; ulong uVar17; long lVar18; uint local_50; uint local_40; uint local_2c; uint local_28; uint local_24; uint local_18; uint local_14; uint local_8; uint local_4; param_2 = param_2 & 0xffffffff; lVar16 = param_2 * 0x20; iVar4 = *(int *)(param_3 + 0x1b4); lVar15 = *(long *)(param_1 + lVar16 + 8); lVar18 = *(long *)(param_1 + lVar16); uVar7 = *(uint *)(param_3 + 0x1b0); lVar9 = FUN_00002110(iVar4); if (lVar9 == 0) { return; } lVar10 = FUN_0000337c(iVar4,uVar7); uVar12 = *(uint *)(lVar9 + 0xc); uVar8 = *(uint *)(lVar9 + 0x14); if ((*(uint *)(lVar9 + 0x18) & 0xfff) < uVar7) { local_18 = uVar8 & 0xff; uVar2 = uVar12; } else { local_18 = 0; uVar2 = *(uint *)(lVar9 + 0x10); } if (*(char *)(lVar10 + 2) == '\0') { local_50 = uVar8 >> 0x1a; uVar6 = uVar8 >> 8 & 0x3ff; } else { local_50 = uVar8 >> 0x1b; uVar6 = 0; uVar12 = *(uint *)(lVar9 + 0x10); } local_50 = local_50 & 1; uVar12 = uVar12 >> 0x18; local_24 = *(uint *)(lVar9 + 0x24); if ((local_24 & 0xfff) < uVar7) { local_40 = uVar8 >> 0x12 & 0xff; } else { local_40 = 0; } if (uVar6 == 0) { uVar8 = *(uint *)(lVar9 + 0x30); LAB_00003818: uVar8 = uVar8 & 0x3ff; } else if ((param_6 == 0) || (uVar8 = *(uint *)(param_3 + param_2 * 0x10 + 0x2e8), uVar8 == 0)) { uVar8 = *(uint *)(lVar9 + 0x2c); goto LAB_00003818; } lVar10 = param_3 + param_2 * 4; *(uint *)(param_3 + param_2 * 4 + 0x2c8) = uVar8; if (*(uint *)(lVar10 + 0x2c8) < 700) { if (*(uint *)(lVar10 + 0x2c8) < 0xa6) { uVar5 = 0xa6; goto LAB_000034f8; } } else { uVar5 = 699; LAB_000034f8: *(undefined4 *)(lVar10 + 0x2c8) = uVar5; } uVar11 = uVar6; uVar8 = uVar6; if (iVar4 == 9) { if ((local_24 >> 0xc & 0xfff) < uVar7) { local_24 = local_24 >> 0x18; if (local_18 == 0) { if (local_24 == 0) goto LAB_00003c3c; local_14 = 0; } else { local_14 = (uint)*(byte *)(lVar9 + 0x2b); if (local_24 == 0) goto LAB_00003574; } uVar3 = local_24 << 1; if (*(int *)(param_3 + param_2 * 0x6c) != 2) { uVar3 = local_24; } if (uVar3 < 0x28) { uVar3 = 0x28; } if (0xf0 < uVar3) { uVar3 = 0xf0; } local_24 = 0; if (uVar3 != 0) { local_24 = 0xf0 / uVar3; } LAB_00003574: if (local_14 == 0) { local_28 = 0; } else { if (local_14 < 0x28) { local_14 = 0x28; } local_28 = 0; if (local_14 != 0) { local_28 = 0xf0 / local_14; } } } else { if (local_18 != 0) { local_24 = 0; local_14 = (uint)*(byte *)(lVar9 + 0x2b); goto LAB_00003574; } local_24 = 0; LAB_00003c3c: local_28 = 0; local_14 = 0; } if ((*(int *)(param_3 + param_2 * 0x6c) == 2) && (local_14 != 0)) { if (local_18 != 0) { uVar3 = local_14 - local_18; uVar11 = local_18 * local_14; local_18 = 0; if (uVar3 != 0) { local_18 = uVar11 / uVar3; } } uVar11 = local_14; if (uVar6 != 0) { uVar8 = 0; uVar11 = uVar6; if (local_14 - uVar6 != 0) { uVar8 = (local_14 * uVar6) / (local_14 - uVar6); } } } } else { local_28 = 0; local_24._0_1_ = 0; } local_14 = uVar11; uVar6 = 0; if ((uVar2 >> 0x10 & 0xff) != 0) { uVar6 = 0xf0 / (uVar2 >> 0x10 & 0xff); } uVar11 = 0; if ((uVar2 >> 8 & 0xff) != 0) { uVar11 = 0xf0 / (uVar2 >> 8 & 0xff); } uVar3 = 0; if ((uVar2 & 0xff) != 0) { uVar3 = 0xf0 / (uVar2 & 0xff); } *(uint *)(param_3 + 0x1c4) = uVar6 - 1 & 7; uVar2 = uVar11 - 1 & 7; uVar6 = uVar3 - 1 & 7; *(uint *)(param_3 + 0x1c8) = uVar2; *(uint *)(param_3 + 0x1cc) = uVar6; if (uVar8 == 0) { *(undefined4 *)(param_3 + 0x1d0) = 0; } else { uVar11 = 0; if (uVar8 != 0) { uVar11 = 0xf0 / uVar8; } *(uint *)(param_3 + 0x1d0) = uVar11 & 7; } if (uVar12 < 0x28) { uVar12 = 0x28; } if (0xf0 < uVar12) { uVar12 = 0xf0; } uVar11 = 0; if (uVar12 != 0) { uVar11 = 0xf0 / uVar12; } if (local_18 == 0) { local_2c = 0; } else { if (local_18 < 0x28) { local_18 = 0x28; } local_2c = 0; if (local_18 != 0) { local_2c = 0xf0 / local_18; } } uVar3 = local_40; if (local_40 != 0) { if (local_40 < 0x28) { local_40 = 0x28; } uVar3 = 0; if (local_40 != 0) { uVar3 = 0xf0 / local_40; } } local_40 = uVar3; lVar14 = 0; do { if (*(uint *)(lVar10 + 0x2c8) <= (uint)*(ushort *)(DAT_00012b58 + lVar14 * 2)) { *(int *)(lVar10 + 0x2c8) = (int)lVar14; break; } lVar14 = lVar14 + 1; } while (lVar14 != 0x40); if (param_5 == 0) { uVar6 = 0; if (iVar4 != 9) { uVar6 = 0x80000000; } *(uint *)(lVar15 + 0x3c8) = uVar6 | *(uint *)(lVar15 + 0x3c8) & 0x8ffffff | uVar2 << 0x18 | uVar2 << 0x1c; uVar2 = *(uint *)(param_3 + 0x1cc); *(uint *)(lVar15 + 0x3d4) = uVar2 << 8 | uVar2 << 0xb | *(int *)(param_3 + 0x1c4) << 0x10 | *(int *)(param_3 + 0x1c4) << 0x13 | uVar2 | uVar2 << 3 | *(uint *)(lVar15 + 0x3d4) & 0xffc0c0c0; *(uint *)(lVar15 + 0x3dc) = *(uint *)(lVar15 + 0x3dc) | 0x73f0000; *(uint *)(lVar15 + 0x3e0) = *(int *)(param_3 + 0x1d0) << 3 | *(int *)(param_3 + 0x1d0) << 0xb | *(uint *)(lVar15 + 0x3e0) & 0xffffc7c7; if (uVar8 == 0) { *(uint *)(lVar15 + 0x3e0) = *(uint *)(lVar15 + 0x3e0) | 0x202; uVar8 = *(uint *)(lVar15 + 0xc) | 0x40000000; } else { *(uint *)(lVar15 + 0x3e0) = *(uint *)(lVar15 + 0x3e0) & 0xfffffdfd; uVar8 = *(uint *)(lVar15 + 0xc) & 0xbfffffff; } *(uint *)(lVar15 + 0xc) = uVar8; *(uint *)(lVar15 + 0x3ec) = *(uint *)(lVar10 + 0x2c8) | *(uint *)(lVar10 + 0x2c8) << 8 | *(uint *)(lVar15 + 0x3ec) & 0xffffc0c0; } else { uVar17 = (ulong)(param_5 * 4 - 4); *(uint *)(lVar15 + uVar17 + 0xd4) = uVar6 << 6 | uVar6 << 9 | *(int *)(lVar10 + 0x2c8) << 0x14 | *(int *)(lVar10 + 0x2c8) << 0x1a | uVar6 | uVar6 << 3 | uVar2 << 0xc | uVar2 << 0xf; *(uint *)(lVar15 + uVar17 + 0xdc) = *(int *)(param_3 + 0x1d0) << 0x10 | *(int *)(param_3 + 0x1d0) << 0x13 | *(uint *)(lVar15 + uVar17 + 0xdc) & 0xffc0ffff; lVar14 = uVar17 + 0xcc; *(uint *)(lVar15 + uVar17 + 0xa00) = *(int *)(param_3 + 0x1c4) << 0x10 | *(int *)(param_3 + 0x1c4) << 0x13 | *(uint *)(lVar15 + uVar17 + 0xa00) & 0xffc0ffff; if (uVar8 == 0) { *(uint *)(lVar15 + 0x3e0) = *(uint *)(lVar15 + 0x3e0) | 0x202; uVar8 = *(uint *)(lVar15 + lVar14) | 0x20000000; } else { *(uint *)(lVar15 + 0x3e0) = *(uint *)(lVar15 + 0x3e0) & 0xfffffdfd; uVar8 = *(uint *)(lVar15 + lVar14) & 0xdfffffff; } *(uint *)(lVar15 + lVar14) = uVar8; } *(undefined4 *)(lVar10 + 0x2d8) = 0; if (param_6 != 0) { param_6 = *(uint *)(param_3 + param_2 * 0x10 + 0x2ec); } lVar15 = *(long *)(param_1 + lVar16); if ((*(uint *)(lVar9 + 0x24) & 0xfff) < uVar7) { uVar8 = *(uint *)(lVar9 + 0x2c); } else { uVar8 = *(uint *)(lVar9 + 0x30); } local_8 = uVar8 >> 0x14 & 0x3ff; if ((*(uint *)(lVar9 + 0x18) & 0xfff) < uVar7) { local_4 = param_6; if (param_6 == 0) { uVar7 = *(uint *)(lVar9 + 0x2c); goto LAB_000037dc; } } else { uVar7 = *(uint *)(lVar9 + 0x30); LAB_000037dc: local_4 = uVar7 >> 10 & 0x3ff; } uVar7 = FUN_00002038(&local_8,iVar4); uVar8 = FUN_00002038(&local_4,iVar4); if (iVar4 == 9) { lVar15 = param_3 + param_2 * 0x14; *(char *)(lVar15 + 0x1db) = (char)uVar8; *(char *)(lVar15 + 0x1dc) = (char)uVar8; *(char *)(lVar15 + 0x1d9) = (char)uVar7; uVar11 = uVar11 | *(byte *)(lVar15 + 0x1d6) & 0xfffffff8; } else { pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar15 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; uVar17 = (ulong)(uint)(param_4 << 0x14); *(uint *)(lVar15 + uVar17 + 0x508) = *(uint *)(lVar15 + uVar17 + 0x508) & 0xffff0000 | uVar7; *(uint *)(lVar15 + uVar17 + 0x50c) = *(uint *)(lVar15 + uVar17 + 0x50c) & 0xffff0000 | uVar8; FUN_000027e0(lVar15); uVar11 = *(uint *)(lVar18 + uVar17 + 0x504) >> 0x10 & 0xffffffc6 | local_50 | uVar11 << 3; } if (local_18 == 0 && iVar4 == 9) { if (local_14 == 0) { local_14 = uVar12; } } else { uVar7 = local_14; if (local_14 == 0) goto LAB_00003a64; } if (local_14 < 0x28) { local_14 = 0x28; } uVar7 = 0; if (local_14 != 0) { uVar7 = 0xf0 / local_14; } LAB_00003a64: local_14 = uVar7; local_2c = local_2c | local_40 << 4; uVar7 = *(uint *)(lVar9 + 0x28); if (iVar4 == 9) { uVar12 = local_2c | 8; if (local_28 == 0) { uVar12 = local_2c; } lVar9 = param_3 + param_2 * 0x14; *(char *)(lVar9 + 0x1d6) = (char)uVar11; *(char *)(lVar9 + 0x1d8) = (char)uVar12; bVar13 = (byte)((uVar7 >> 0x10 & 1) << 3) | (byte)((uVar7 >> 0x11 & 1) << 4) | (byte)((uVar7 >> 0x12 & 1) << 5) | (byte)local_14; if (local_40 == 0) { bVar13 = bVar13 | 0x10; } *(byte *)(lVar9 + 0x1de) = bVar13; if (*(int *)(param_3 + param_2 * 0x6c + 0x10) == 0) { lVar9 = param_3 + param_2 * 0x14; *(byte *)(lVar9 + 0x1de) = *(byte *)(lVar9 + 0x1de) | 0x80; } param_3 = param_3 + param_2 * 0x14; *(byte *)(param_3 + 0x1df) = *(byte *)(param_3 + 0x1df) & 0xf8 | (byte)local_24; *(byte *)(param_3 + 0x1e2) = *(byte *)(param_3 + 0x1e2) & 0x1f | (byte)(local_28 << 5); *(byte *)(param_3 + 0x1e1) = *(byte *)(param_3 + 0x1e1) | 0x30; } else { uVar17 = (ulong)(uint)(param_4 << 0x14); lVar9 = uVar17 + 0x50c; local_14 = local_14 | (uVar7 >> 0x10 & 1) << 3 | (uVar7 >> 0x11 & 1) << 4 | (uVar7 >> 0x12 & 1) << 5 | *(uint *)(lVar18 + lVar9) >> 0x10 & 0xfffffff8; uVar7 = local_14 | 0x80; if (*(int *)(param_3 + param_2 * 0x6c + 0x10) != 0) { uVar7 = local_14; } pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar18 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *(uint *)(lVar18 + uVar17 + 0x504) = *(uint *)(lVar18 + uVar17 + 0x504) & 0xffff | uVar11 << 0x10; *(uint *)(lVar18 + uVar17 + 0x508) = *(uint *)(lVar18 + uVar17 + 0x508) & 0xffff | local_2c << 0x10; *(uint *)(lVar18 + lVar9) = *(uint *)(lVar18 + lVar9) & 0xffff | uVar7 << 0x10; FUN_000027e0(lVar18); } return; } // FUN_00003c48 @ 00003c48 undefined8 FUN_00003c48(long param_1,long param_2,ulong param_3,uint param_4,long param_5,long param_6) { long lVar1; uint uVar2; uint uVar3; uint uVar4; long lVar5; int iVar6; uint uVar7; uint uVar8; short sVar9; short sVar10; short sVar11; short sVar12; byte bVar13; bool bVar14; undefined4 uVar15; uint uVar16; int iVar17; long lVar18; long lVar19; long lVar20; ulong uVar21; short *psVar22; uint *puVar23; long lVar24; short *psVar25; uint *puVar26; uint uVar27; uint uVar28; long lVar29; undefined8 uVar30; uint local_8 [2]; lVar29 = (param_3 & 0xffffffff) * 0x20; uVar30 = *(undefined8 *)(param_2 + lVar29); iVar6 = *(int *)(param_1 + 0x1b4); lVar29 = *(long *)(param_2 + lVar29 + 8); if ((param_5 != 0 || 0x63f < **(uint **)(param_1 + 0x230)) || (param_6 != 0)) { uVar15 = FUN_00003268(uVar30); uVar7 = *(uint *)(lVar29 + 4); if ((uVar7 >> 0x16 & 1) != 0) { *(uint *)(lVar29 + 4) = *(uint *)(lVar29 + 4) & 0xffbfffff; } *(uint *)(lVar29 + 0xb0) = *(uint *)(lVar29 + 0xb0) | 0x800000; if (iVar6 == 9) { *(uint *)(lVar29 + 0xa24) = *(uint *)(lVar29 + 0xa24) & 0xffffff87; uVar16 = *(uint *)(lVar29 + 0x684) | 0x10; } else { lVar20 = *(long *)(param_1 + 0x230); *(uint *)(lVar29 + 0xaec) = *(uint *)(lVar29 + 0xaec) | 0x8d000; *(uint *)(lVar29 + 0x6a4) = *(uint *)(lVar29 + 0x6a4) & 0xffe0ffff | *(int *)(lVar20 + 0x44) << 0x10; *(uint *)(lVar29 + 0x6a4) = *(uint *)(lVar29 + 0x6a4) & 0x7fffffff; *(uint *)(lVar29 + 0x688) = *(uint *)(lVar29 + 0x688) & 0xff03ffff | *(int *)(lVar20 + 0x1ec) << 0x12; uVar16 = *(uint *)(lVar29 + 0x684) & 0xffffff7f; } *(uint *)(lVar29 + 0x684) = uVar16; bVar13 = 0; uVar16 = 0; do { bVar14 = param_5 != 0; local_8[0] = 0; local_8[1] = 0; if ((!bVar14 && param_6 == 0) || ((((uVar16 ^ 1) & (uint)(param_5 == 0)) == 0 && (!(bool)(param_6 == 0 & bVar13))))) { psVar22 = (short *)(param_5 + 4); psVar25 = (short *)(param_6 + 4); for (uVar21 = 0; uVar28 = (uint)uVar21, param_4 != uVar21; uVar21 = uVar21 + 1) { *(uint *)(lVar29 + 0x688) = 0x1000000 << (ulong)(uVar28 & 0x1f) | *(uint *)(lVar29 + 0x688) & 0xfcffffff; if (iVar6 == 9) { *(uint *)(lVar29 + 0xa24) = *(uint *)(lVar29 + 0xa24) | 1; } if (uVar16 == 0) { uVar27 = *(uint *)(lVar29 + 0x684) | 2; } else { uVar27 = *(uint *)(lVar29 + 0x684) | 4; } *(uint *)(lVar29 + 0x684) = uVar27; do { } while ((*(uint *)(lVar29 + 0x684) & 1) == 0); if (uVar16 == 0) { *(uint *)(lVar29 + 0x684) = *(uint *)(lVar29 + 0x684) & 0xfffffffd; uVar27 = *(uint *)(lVar29 + 0x68c); } else { *(uint *)(lVar29 + 0x684) = *(uint *)(lVar29 + 0x684) & 0xfffffffb; uVar27 = *(uint *)(lVar29 + 0x690); } uVar4 = *(uint *)(lVar29 + 0x69c); uVar8 = *(uint *)(lVar29 + 0x6a0); if (iVar6 == 9) { *(uint *)(lVar29 + 0xa24) = *(uint *)(lVar29 + 0xa24) & 0xfffffffe; } local_8[uVar21] = uVar27; iVar17 = -((uVar27 >> 0x1a & 3 | uVar27 >> 10 & 3) >> (ulong)(uVar28 & 0x1f) & 1); if ((uVar16 != 0) && ((uVar27 & 0x4000) != 0)) { iVar17 = -1; } uVar2 = uVar4 & 0x3ff; if (((uVar2 == 0x3ff) || (uVar3 = uVar8 & 0x3ff, uVar3 == 0x3ff)) || (iVar17 != 0)) { LAB_00004074: iVar17 = -1; goto LAB_00003db4; } iVar17 = -((uVar27 >> 0x1c & 3 | uVar27 >> 0xc & 3) >> (ulong)(uVar28 & 0x1f) & 1); if ((uVar16 != 0) && ((uVar27 & 0x40000000) != 0)) { iVar17 = -1; } uVar28 = uVar4 >> 0x10 & 0x3ff; if (((uVar28 == 0x3ff) || (uVar27 = uVar8 >> 0x10 & 0x3ff, uVar27 == 0x3ff)) || (iVar17 != 0)) goto LAB_00004074; FUN_00001770(lVar29); sVar9 = (short)uVar2; sVar10 = (short)uVar3; sVar11 = (short)uVar28; sVar12 = (short)uVar27; if (((uVar16 ^ 1) & (uint)bVar14) == 0) { if ((bool)(param_6 != 0 & bVar13)) { *psVar25 = sVar9 + sVar10; psVar25[1] = sVar11 + sVar12; } } else { *psVar22 = sVar9 + sVar10; psVar22[1] = sVar11 + sVar12; } psVar22 = psVar22 + 2; psVar25 = psVar25 + 2; } iVar17 = 0; LAB_00003db4: if ((iVar17 == 0 && !bVar14) && (param_6 == 0)) { if (uVar16 == 0) { puVar23 = (uint *)(lVar29 + 0x580); puVar26 = (uint *)(lVar29 + 0x7c4); for (lVar20 = 0; uVar28 = (uint)lVar20, uVar28 < param_4; lVar20 = lVar20 + 1) { lVar18 = 400; if (uVar28 != 0) { lVar18 = 0x770; } lVar19 = 0x7cc; if (uVar28 != 0) { lVar19 = 0x824; } lVar24 = 0; do { lVar5 = lVar24 * 3; if (uVar28 != 0) { lVar5 = lVar24; } lVar1 = lVar24 + lVar19; lVar24 = lVar24 + 4; *(undefined4 *)(lVar29 + lVar1) = *(undefined4 *)(lVar29 + lVar5 + lVar18); } while (lVar24 != 0x20); lVar24 = 0x614; if (uVar28 != 0) { lVar24 = 0x794; } *(undefined4 *)(lVar29 + lVar19 + -4) = *(undefined4 *)(lVar29 + lVar18 + -4); lVar18 = 0x7f4; if (uVar28 != 0) { lVar18 = 0x854; } lVar19 = 0; do { lVar5 = lVar19 * 3; if (uVar28 != 0) { lVar5 = lVar19; } lVar1 = lVar19 + lVar18; lVar19 = lVar19 + 4; *(undefined4 *)(lVar29 + lVar1) = *(undefined4 *)(lVar29 + lVar5 + lVar24); } while (lVar19 != 0x20); *(undefined4 *)(lVar29 + lVar18 + -4) = *(undefined4 *)(lVar29 + lVar24 + -4); if (uVar28 == 0) { *(undefined4 *)(lVar29 + 0x7c0) = *(undefined4 *)(lVar29 + 0x574); } else { *(undefined4 *)(lVar29 + 0x814) = *(undefined4 *)(lVar29 + 0x764); } uVar27 = local_8[lVar20]; uVar28 = uVar27 & 0x3ff; if ((uVar27 >> 9 & 1) != 0) { uVar28 = -(uVar27 & 0x1ff); } uVar28 = (*puVar23 & 0x1ff) + uVar28; uVar4 = uVar27 >> 0x10 & 0x3ff; if ((uVar27 >> 0x19 & 1) != 0) { uVar4 = -(uVar27 >> 0x10 & 0x1ff); } *puVar26 = uVar28 & 0x1ff | (((*puVar23 & 0x1ff0000 | uVar28 & 0x1ff0000) >> 0x10) + uVar4) * 0x10000; puVar23 = puVar23 + 0x7a; puVar26 = puVar26 + 0x15; } *(uint *)(lVar29 + 4) = *(uint *)(lVar29 + 4) | 8; *(uint *)(lVar29 + 0x10) = *(uint *)(lVar29 + 0x10) | 0x100; thunk_FUN_00010a38(1); uVar28 = *(uint *)(lVar29 + 0x10) & 0xfffffeff; } else { for (lVar20 = 0; uVar28 = (uint)lVar20, uVar28 < param_4; lVar20 = lVar20 + 1) { lVar18 = 0xdc8; if (uVar28 == 0) { lVar18 = 0xdc0; } lVar19 = 0xdd8; if (uVar28 == 0) { lVar19 = 0xdd0; } bVar14 = uVar28 != 0; uVar27 = local_8[lVar20]; *(undefined4 *)(lVar29 + lVar19) = *(undefined4 *)(lVar29 + lVar18); lVar18 = 0xdc4; if (bVar14) { lVar18 = 0xdcc; } lVar19 = 0xdd4; if (bVar14) { lVar19 = 0xddc; } *(undefined4 *)(lVar29 + lVar19) = *(undefined4 *)(lVar29 + lVar18); uVar4 = uVar27 >> 0x10 & 0x1ff; lVar18 = 0x880; if (bVar14) { lVar18 = 0x8e0; } lVar19 = 0x1f0; if (bVar14) { lVar19 = 0x410; } lVar24 = 0; do { lVar5 = -8; if (lVar24 != 9) { lVar5 = 0; } uVar8 = *(uint *)(lVar29 + lVar5 + lVar19 + lVar24 * 0xc); uVar2 = uVar27 & 0x1ff; if ((uVar27 & 0x200) != 0) { uVar2 = -(uVar27 & 0x1ff); } uVar3 = uVar4; if ((uVar27 >> 0x10 & 0x200) != 0) { uVar3 = -uVar4; } lVar5 = lVar24 * 4; lVar24 = lVar24 + 1; *(uint *)(lVar29 + lVar18 + lVar5) = uVar2 + (uVar8 & 0x3ff) | (uVar3 + (uVar8 >> 0x10 & 0x3ff)) * 0x10000; } while (lVar24 != 10); lVar18 = 0; uVar27 = 0x8b0; if (uVar28 != 0) { uVar27 = 0x910; } uVar21 = (ulong)uVar27; lVar19 = 0x490; if (uVar28 != 0) { lVar19 = 0x500; } do { lVar24 = lVar18 * 0xc; uVar27 = (uint)uVar21; if ((int)lVar18 == 9 && uVar28 == 1) { uVar27 = 0x8e8; } uVar21 = (ulong)uVar27; lVar5 = -8; if ((int)lVar18 != 9) { lVar5 = 0; } lVar1 = lVar18 * 4; lVar18 = lVar18 + 1; *(undefined4 *)(lVar29 + uVar21 + lVar1) = *(undefined4 *)(lVar29 + lVar5 + lVar19 + lVar24); } while (lVar18 != 10); } *(uint *)(lVar29 + 4) = *(uint *)(lVar29 + 4) | 0x20; *(uint *)(lVar29 + 0x10) = *(uint *)(lVar29 + 0x10) | 0x200; thunk_FUN_00010a38(1); uVar28 = *(uint *)(lVar29 + 0x10) & 0xfffffdff; } *(uint *)(lVar29 + 0x10) = uVar28; } } uVar16 = uVar16 + 1; bVar13 = bVar13 ^ 1; } while (uVar16 != 2); *(uint *)(lVar29 + 4) = *(uint *)(lVar29 + 4) | 5; thunk_FUN_00010a38(1); *(uint *)(lVar29 + 4) = *(uint *)(lVar29 + 4) & 0xfffffffa; *(uint *)(lVar29 + 0xb0) = *(uint *)(lVar29 + 0xb0) & 0xff7fffff; if ((uVar7 & 0x400000) != 0) { *(uint *)(lVar29 + 4) = *(uint *)(lVar29 + 4) | 0x400000; } FUN_00001770(lVar29); *(uint *)(lVar29 + 0x10) = *(uint *)(lVar29 + 0x10) | 0x40; *(undefined4 *)(lVar29 + 0x694) = 0; *(undefined4 *)(lVar29 + 0x698) = 0; *(uint *)(lVar29 + 0x10) = *(uint *)(lVar29 + 0x10) & 0xffffffbf; FUN_00001770(lVar29); FUN_000032a8(uVar30,uVar15); } return 0; } // FUN_0000430c @ 0000430c /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ ulong FUN_0000430c(long param_1,ulong param_2,ulong param_3,long param_4,int param_5,int param_6, uint param_7,int param_8,uint param_9) { char *pcVar1; uint *puVar2; uint uVar3; int iVar4; uint uVar5; uint uVar6; undefined4 uVar7; int iVar8; uint uVar9; undefined8 uVar10; long lVar11; ulong uVar12; long lVar13; long lVar14; uint uVar15; uint uVar16; uint uVar17; ulong uVar18; long lVar19; long lVar20; uint *puVar21; uint uVar22; int iVar23; uint local_5c; int local_58; int local_54; uint local_1c; uint local_18; uint local_14; undefined4 auStack_10 [4]; param_2 = param_2 & 0xffffffff; uVar18 = param_3 & 0xffffffff; lVar19 = param_2 * 0x20; uVar3 = param_9 & 0xff; lVar14 = param_1 + lVar19; uVar10 = *(undefined8 *)(param_1 + lVar19); if ((uVar3 == 0xff) || ((param_9 >> 8 & 1) != 0)) { uVar7 = FUN_00003268(uVar10); uVar16 = *(uint *)(param_4 + 0x1b0); auStack_10[param_2] = uVar7; lVar11 = *(long *)(param_1 + lVar19 + 8); *(uint *)(lVar11 + 4) = *(uint *)(lVar11 + 4) & 0xffbfffff; *(uint *)(lVar11 + 0x50) = *(uint *)(lVar11 + 0x50) & 0xefffffff; *(uint *)(lVar11 + 0xb0) = *(uint *)(lVar11 + 0xb0) | 0x800000; uVar15 = *(uint *)(lVar11 + 8) & 0xf80fffff; if (uVar16 < 0x4b0) { uVar15 = uVar15 | 0x800000; } else if (uVar16 < 0x640) { uVar15 = uVar15 | 0x400000; } else { uVar15 = uVar15 | 0x100000; } *(uint *)(lVar11 + 8) = uVar15; } if ((param_7 & 1) != 0) { lVar11 = *(long *)(param_1 + lVar19 + 8); if (*(int *)(param_4 + 0x1b4) == 9) { uVar16 = *(uint *)(*(long *)(param_4 + 0x228) + 0x2c); uVar15 = uVar16 >> 2; if (*(int *)(*(long *)(param_4 + 0x228) + 0x60) == 0x80) { uVar15 = uVar16 >> 1; } uVar15 = (uVar15 * 5 + 999) / 1000; *(uint *)(lVar11 + 0xa70) = *(uint *)(lVar11 + 0xa70) & 0xfc3fffff | 0xc00000; *(uint *)(lVar11 + 0x608) = uVar15 << 6 | uVar15 << 0xb | *(uint *)(lVar11 + 0x608) & 0xff00003f | 0x800000; *(uint *)(lVar11 + 0x600) = *(uint *)(lVar11 + 0x600) | 0x80000000; *(uint *)(lVar11 + 0x18) = *(uint *)(lVar11 + 0x18) | 0x2000; FUN_00002b40(param_1,param_2,0,param_4); FUN_00002b40(param_1,param_2,1,param_4); uVar15 = *(uint *)(lVar11 + 0xb4) & 0x7ff; iVar23 = *(int *)(*(long *)(param_4 + 0x228) + 0x60); puVar21 = (uint *)&DAT_00012be8; do { if (iVar23 == 0x80) { uVar16 = *puVar21; uVar17 = uVar15 - puVar21[7]; if (uVar16 < uVar17) { uVar16 = (uVar15 >> 1) - (uVar17 - uVar16 >> 1); } else { uVar16 = (uVar15 >> 1) + (uVar16 - uVar17 >> 1); } } else { uVar16 = *puVar21; uVar17 = uVar15 * 2 - puVar21[7]; if (uVar16 < uVar17) { uVar16 = uVar15 - (uVar17 - uVar16 >> 1); } else { uVar16 = uVar15 + (uVar16 - uVar17 >> 1); } } puVar21[0xe] = uVar16; puVar21 = puVar21 + 1; } while (puVar21 != (uint *)&DAT_00012c04); *(uint *)(lVar11 + 0x7c) = _DAT_00012c20 & 0x3ff; *(uint *)(lVar11 + 0x80) = _DAT_00012c28 & 0x3ff; *(uint *)(lVar11 + 0x84) = _DAT_00012c30 & 0x3ff; *(uint *)(lVar11 + 0x8c) = _DAT_00012c38 & 0x3ff; *(uint *)(lVar11 + 0x60c) = *(uint *)(lVar11 + 0x60c) | 1; FUN_00001770(lVar11); *(uint *)(lVar11 + 0x18) = *(uint *)(lVar11 + 0x18) & 0xffffdfff; *(uint *)(lVar11 + 0x600) = *(uint *)(lVar11 + 0x600) & 0x7fffffff; FUN_000029f4(param_1,param_2,param_4 + 0x1b4,0,*(int *)(param_4 + 0x1b0) << 1); } else { uVar15 = *(uint *)(lVar11 + 0xb4) & 0x7ff; lVar13 = param_4 + 0x1b4; lVar20 = *(long *)(param_1 + lVar19); uVar16 = uVar15 << 1; if ((*(uint *)(lVar11 + 0xb0) & 1) == 0) { uVar16 = uVar15; } uVar15 = 0; if (**(uint **)(param_4 + 0x230) != 0) { uVar15 = 1000000000 / **(uint **)(param_4 + 0x230); } uVar17 = 0; if (uVar16 != 0) { uVar17 = uVar15 / uVar16; } uVar15 = 0; if (uVar17 != 0) { uVar15 = 91000 / uVar17; } FUN_000029f4(param_1,param_2,lVar13,1,0x18); *(uint *)(lVar11 + 0x18) = *(uint *)(lVar11 + 0x18) & 0xffffbfff; uVar17 = uVar15 | uVar15 << 0x10; *(uint *)(lVar11 + 4) = *(uint *)(lVar11 + 4) | 0x200000; *(uint *)(lVar11 + 0x10) = *(uint *)(lVar11 + 0x10) | 0x80; *(uint *)(lVar11 + 0x6c) = uVar17; FUN_00001770(lVar11); *(uint *)(lVar11 + 0x10) = *(uint *)(lVar11 + 0x10) & 0xffffff7f; uVar16 = *(uint *)(lVar20 + 0x504) & 0xffff; FUN_00002340(lVar20,1,0xd,uVar16 | 1); *(uint *)(lVar11 + 4) = *(uint *)(lVar11 + 4) | 4; *(uint *)(lVar11 + 0x600) = *(uint *)(lVar11 + 0x600) & 0xf9ffffff | 0x2000000; thunk_FUN_00010a38(1); *(uint *)(lVar11 + 0x60c) = *(uint *)(lVar11 + 0x60c) & 0xff3fffff; thunk_FUN_00010a38(1); FUN_000029f4(param_1,param_2,lVar13,0,*(int *)(param_4 + 0x1b0) << 1); *(uint *)(lVar11 + 0x600) = *(uint *)(lVar20 + 0x508) & 0xffff | *(uint *)(lVar11 + 0x600) & 0xffffff00; *(uint *)(lVar11 + 0x10) = *(uint *)(lVar11 + 0x10) | 0x200; *(uint *)(lVar11 + 0x74) = *(uint *)(lVar11 + 0x74) & 0xfffffffc | 1; *(uint *)(lVar11 + 0x600) = *(uint *)(lVar11 + 0x600) & 0xff9fffff | 0x200000; thunk_FUN_00010a38(1); *(uint *)(lVar11 + 0x600) = *(uint *)(lVar11 + 0x600) & 0xff9fffff; *(uint *)(lVar11 + 0x74) = *(uint *)(lVar11 + 0x74) & 0xfffffffc; *(uint *)(lVar11 + 0x10) = *(uint *)(lVar11 + 0x10) & 0xfffffdff; thunk_FUN_00010a38(1); *(uint *)(lVar11 + 0x600) = *(uint *)(lVar11 + 0x600) | 0x80000000; *(uint *)(lVar11 + 0x8c) = uVar15 << 0x10; *(uint *)(lVar11 + 0x90) = uVar17; FUN_00001770(lVar11); iVar23 = 100000; *(uint *)(lVar11 + 0x600) = *(uint *)(lVar11 + 0x600) & 0x7fffffff; *(uint *)(lVar11 + 0x18) = *(uint *)(lVar11 + 0x18) | 0x2000; *(uint *)(lVar11 + 0x18) = *(uint *)(lVar11 + 0x18) | 0x40; *(uint *)(lVar11 + 0x600) = *(uint *)(lVar11 + 0x600) | 0x800; *(uint *)(lVar11 + 0x60c) = *(uint *)(lVar11 + 0x60c) | 2; do { if ((*(uint *)(lVar11 + 0xbc4) >> 0x19 & 1) != 0) break; thunk_FUN_00010a38(1); iVar23 = iVar23 + -1; } while (iVar23 != 0); FUN_000029f4(param_1,param_2,lVar13,1,0x18); *(uint *)(lVar11 + 0x18) = *(uint *)(lVar11 + 0x18) & 0xffffffbf; *(uint *)(lVar11 + 0x18) = *(uint *)(lVar11 + 0x18) & 0xffffdfff; *(uint *)(lVar11 + 0x60c) = *(uint *)(lVar11 + 0x60c) | 0xc00000; thunk_FUN_00010a38(1); *(uint *)(lVar11 + 0x600) = *(uint *)(lVar11 + 0x600) & 0xf9ffffff; *(uint *)(lVar11 + 4) = *(uint *)(lVar11 + 4) & 0xfffffffb; *(uint *)(lVar11 + 0x60c) = *(uint *)(lVar11 + 0x60c) & 0xfffffffd; *(uint *)(lVar11 + 0x18) = *(uint *)(lVar11 + 0x18) | 0x4040; FUN_00002340(lVar20,1,0xd,uVar16); FUN_000029f4(param_1,param_2,lVar13,0,*(int *)(param_4 + 0x1b0) << 1); if ((*(uint *)(lVar11 + 0xbc4) & 0x1fe01) != 0) { return 0xffffffff; } } } uVar15 = (uint)param_3; if (((param_7 >> 1 & 1) != 0) && (uVar12 = FUN_000032d8(param_1,param_2,uVar18), (int)uVar12 != 0) ) { return uVar12; } if ((param_7 >> 2 & 1) != 0) { iVar23 = *(int *)(param_4 + 0x1b0); lVar11 = *(long *)(lVar14 + 8); *(uint *)(lVar11 + 0xa24) = *(uint *)(lVar11 + 0xa24) | 8; if (uVar15 == 3) { uVar16 = 0x300; } else { uVar16 = 0x100 << (ulong)(uVar15 & 0x1f); } *(uint *)(lVar11 + 0xa24) = uVar16 | *(uint *)(lVar11 + 0xa24) & 0xfffffcff; iVar4 = *(int *)(param_4 + 0x1b4); *(uint *)(lVar11 + 0x70) = *(uint *)(lVar11 + 0x70) & 0xfc0fffff | 0x2800000; if (iVar4 == 9) { uVar16 = (iVar23 * 0x14 + 999U) / 1000; uVar17 = *(uint *)(lVar11 + 0x70); if (uVar16 < 2) { uVar16 = 2; } } else { uVar17 = *(uint *)(lVar11 + 0x70); uVar16 = (iVar23 * 0x14 + 999U) / 1000; } *(uint *)(lVar11 + 0x70) = uVar17 & 0xfff03fff | uVar16 << 0xe; *(uint *)(lVar11 + 0xa24) = *(uint *)(lVar11 + 0xa24) | 1; do { } while ((*(uint *)(lVar11 + 0xa24) >> 1 & 1) == 0); *(uint *)(lVar11 + 0xa24) = *(uint *)(lVar11 + 0xa24) & 0xfffffffe; *(uint *)(lVar11 + 0xa24) = *(uint *)(lVar11 + 0xa24) & 0xfffffcff; *(uint *)(lVar11 + 0xa24) = *(uint *)(lVar11 + 0xa24) & 0xfffffff7; if ((*(uint *)(lVar11 + 0x74) & 0x30) != 0) { return 0xffffffff; } } if ((param_7 >> 4 & 1) != 0) { if ((uVar15 == 0 || uVar15 == 3) && (param_8 != 0 && uVar3 != 1)) { iVar23 = *(int *)(param_4 + 0x1b4); lVar19 = *(long *)(param_1 + lVar19); puVar21 = *(uint **)(lVar14 + 8); uVar16 = **(uint **)(param_4 + 0x230); iVar4 = *(int *)(*(long *)(param_4 + 0x228) + 0x60); uVar17 = uVar16; if (iVar23 == 9) { uVar17 = uVar16 >> 2; if (iVar4 == 0x80) { uVar17 = uVar16 >> 1; } } if (param_5 == 0) { uVar9 = *puVar21; uVar12 = 0xa2c; } else { uVar9 = *(uint *)((long)puVar21 + (ulong)(param_5 * 4 - 4) + 0xbc) >> 0xe; uVar12 = (ulong)(param_5 * 0x10 + 0xa2c); } uVar22 = uVar9 & 0x3f; local_18 = _DAT_00014f74; if (_DAT_00014f74 == 0) { local_14 = ((uVar9 & 1) == 0) + 1; puVar2 = (uint *)(lVar19 + (ulong)(uint)(param_6 << 0x14) + 0x580); local_5c = local_14 * 0x40; local_58 = (local_14 + uVar22) * 2; local_54 = (local_14 + uVar22) * 4; local_1c = 0xff; do { *(uint *)((long)puVar21 + uVar12) = *(uint *)((long)puVar21 + uVar12) & 0xfffff83f | local_5c; if (uVar16 < 800) { if (iVar23 == 9) { iVar8 = local_54; if (iVar4 == 0x80) { iVar8 = local_58; } uVar17 = (uint)*(byte *)(param_4 + param_2 * 0x14 + 0x1d9); } else { iVar8 = (uVar22 - 3) + local_14; uVar17 = *(uint *)(lVar19 + (ulong)(uint)(param_6 << 0x14) + 0x508) & 0xffff; } pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar19 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *puVar2 = *puVar2 & 0xffc0ffff | iVar8 << 0x10; FUN_000027e0(lVar19); uVar9 = FUN_00002e88(lVar19,1,0,0xc,iVar23); if (uVar9 == uVar17) goto LAB_00004cc8; } else { iVar8 = FUN_00001ef8(*(undefined8 *)(param_4 + 0x230),param_1,param_2,0,0xff); if (iVar8 == 0) { LAB_00004cc8: if (local_14 < local_1c) { local_1c = local_14; } if (local_18 < local_14) { local_18 = local_14; } } } local_14 = local_14 + 2; local_5c = local_5c + 0x80; local_58 = local_58 + 4; local_54 = local_54 + 8; } while (local_14 < 0x13); } else { uVar9 = 0; if (uVar16 != 0) { uVar9 = 0x40d990 / uVar16; } local_1c = ((uVar9 + _DAT_00014f74) * uVar17) / 1000000; local_18 = local_1c; } if (local_1c == 0xff || local_18 == 0) { return 0xffffffff; } if (0x12 < local_18) { local_18 = 0x12; } if (local_1c + 2 < local_18) { local_18 = local_1c + 2; } if ((uVar22 + local_18 & 1) != 0) { local_18 = local_18 - 1; } FUN_0001053c(s_ch_d_ttot_d_00010d46,param_2,local_18); *(uint *)((long)puVar21 + uVar12) = *(uint *)((long)puVar21 + uVar12) & 0xfffff83f | local_18 << 6; puVar21[0x1a2] = puVar21[0x1a2] & 0xfffffe1f | 0x100; if (iVar23 == 9) { iVar23 = (uVar22 + local_18) * 4; if (iVar4 == 0x80) { iVar23 = (uVar22 + local_18) * 2; } } else { iVar23 = (uVar22 - 3) + local_18; } pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar19 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; lVar11 = (ulong)(uint)(param_6 << 0x14) + 0x580; *(uint *)(lVar19 + lVar11) = *(uint *)(lVar19 + lVar11) & 0xffc0ffff | iVar23 << 0x10; FUN_000027e0(lVar19); } uVar12 = FUN_00001ef8(*(undefined8 *)(param_4 + 0x230),param_1,param_2,uVar18,uVar3); if ((int)uVar12 != 0 || uVar3 == 0) { return uVar12; } } if ((param_7 >> 3 & 1) == 0) goto LAB_00005140; lVar19 = *(long *)(lVar14 + 8); uVar16 = **(uint **)(param_4 + 0x230); uVar17 = *(uint *)(lVar19 + 0xb8) >> 0x1e; if (uVar17 == 0) { uVar17 = *(uint *)(lVar19 + 4) >> 0x1d; } else { uVar17 = *(uint *)(lVar19 + (ulong)(uVar17 * 4 - 4) + 0xbc) >> 0xb & 1; } if (uVar16 < 0x215 || (uVar17 & 1) != 1) { if (uVar15 != 1) { if (uVar15 == 3) { uVar15 = 0; } uVar18 = (ulong)uVar15; goto LAB_00004694; } uVar18 = 0; } else { LAB_00004694: uVar15 = (uint)uVar18; if (uVar3 != 1) { if (uVar16 < 0x215) { *(uint *)(lVar19 + 4) = *(uint *)(lVar19 + 4) | 0x4000000; *(uint *)(lVar19 + 0x14) = *(uint *)(lVar19 + 0x14) & 0xffffffc0; *(uint *)(lVar19 + 0x160) = *(uint *)(lVar19 + 0x160) & 0xfffffffd; } else { *(uint *)(lVar19 + 4) = *(uint *)(lVar19 + 4) | 0x20000; if (uVar16 < 0x42a) { *(uint *)(lVar19 + 0x160) = *(uint *)(lVar19 + 0x160) | 3; } else { *(uint *)(lVar19 + 0x160) = *(uint *)(lVar19 + 0x160) & 0xfffffc00 | 0x7e; if (*(int *)(param_4 + 0x1b4) == 9) { *(uint *)(lVar19 + 0xb0) = *(uint *)(lVar19 + 0xb0) | 0x800000; *(uint *)(lVar19 + 0x160) = *(uint *)(lVar19 + 0x160) & 0xfffffc03 | *(uint *)(lVar19 + 0xb4) & 0x7fc; *(uint *)(lVar19 + 0xb0) = *(uint *)(lVar19 + 0xb0) & 0xff7fffff; } } *(uint *)(lVar19 + 0x14) = *(uint *)(lVar19 + 0x14) & 0xfffff03f | 0xa80; *(undefined4 *)(lVar19 + 0x93c) = 0xaa55aa55; *(undefined4 *)(lVar19 + 0x940) = 0xaa55aa55; *(undefined4 *)(lVar19 + 0x944) = 0xaa55aa55; *(undefined4 *)(lVar19 + 0x948) = 0xaa55aa55; *(undefined4 *)(lVar19 + 0x94c) = 0xaa55aa55; *(undefined4 *)(lVar19 + 0x950) = 0xaaaa5555; *(undefined4 *)(lVar19 + 0x954) = 0xaaaa5555; *(undefined4 *)(lVar19 + 0x958) = 0x5555aaaa; *(undefined4 *)(lVar19 + 0x95c) = 0xaa55aa55; *(undefined4 *)(lVar19 + 0x960) = 0x55aa55aa; *(undefined4 *)(lVar19 + 0x964) = 0x55aa55aa; *(undefined4 *)(lVar19 + 0x968) = 0xaa55aa55; *(undefined4 *)(lVar19 + 0x96c) = 0x5555; *(undefined4 *)(lVar19 + 0x970) = 0xaaaa; *(undefined4 *)(lVar19 + 0x974) = 0x5aa5; } *(undefined4 *)(lVar19 + 0x98) = 0xff55aa; *(undefined4 *)(lVar19 + 0x9c) = 0xff00aa55; *(undefined4 *)(lVar19 + 0xa0) = 0xff55aa; *(undefined4 *)(lVar19 + 0xa4) = 0xff00aa55; *(undefined4 *)(lVar19 + 0xa8) = 0x5aa5; *(uint *)(lVar19 + 0xa24) = *(uint *)(lVar19 + 0xa24) | 0x40; if (uVar15 == 3) { uVar17 = 0xc000; } else { uVar17 = 0x4000 << (ulong)(uVar15 & 0x1f); } *(uint *)(lVar19 + 0xa24) = uVar17 | *(uint *)(lVar19 + 0xa24) & 0xffff3fff; *(uint *)(lVar19 + 0xa24) = *(uint *)(lVar19 + 0xa24) | 1; if (uVar3 == 0) { return 0; } } do { } while ((*(uint *)(lVar19 + 0xa24) >> 1 & 1) == 0); *(uint *)(lVar19 + 0xa24) = *(uint *)(lVar19 + 0xa24) & 0xfffffffe; *(uint *)(lVar19 + 0xa24) = *(uint *)(lVar19 + 0xa24) & 0xffff3fff; *(uint *)(lVar19 + 0xa24) = *(uint *)(lVar19 + 0xa24) & 0xffffffbf; if (uVar16 < 0x215) { lVar11 = *(long *)(lVar14 + 8); uVar15 = *(uint *)(lVar11 + 0xb8) >> 0x1e; if (uVar15 == 0) { uVar15 = *(uint *)(lVar11 + 0xb0) & 1; } else { if (uVar15 == 1) { uVar15 = *(uint *)(lVar11 + 0xc4); } else { uVar15 = *(uint *)(lVar11 + 200); } uVar15 = uVar15 & 0x40000000; } uVar16 = *(uint *)(lVar11 + 0xb4) & 0x7ff; lVar13 = 0; uVar17 = uVar16 >> 1; if (uVar15 != 0) { uVar17 = uVar16; } do { uVar18 = (ulong)(uint)((int)lVar13 * 0xc); if (lVar13 == 9) { uVar18 = 100; } *(undefined4 *)(lVar13 * 4 + 0x15078) = *(undefined4 *)(lVar11 + uVar18 + 0x1f0); lVar13 = lVar13 + 1; } while (lVar13 != 10); *(uint *)(lVar11 + 4) = *(uint *)(lVar11 + 4) | 0x20; lVar13 = 0; uVar15 = 0; *(uint *)(lVar11 + 0x10) = *(uint *)(lVar11 + 0x10) | 0x200; puVar21 = (uint *)(lVar11 + 0x8b0); do { uVar9 = *(uint *)(lVar13 + 0x15078); *puVar21 = uVar9; lVar13 = lVar13 + 4; puVar21[0x18] = uVar9; uVar16 = (uVar9 & 0x3ff) + (uVar17 >> 1); uVar9 = (uVar9 >> 0x10 & 0x3ff) + (uVar17 >> 1); uVar22 = 0; if (uVar17 != 0) { uVar22 = uVar16 / uVar17; } uVar6 = 0; if (uVar17 != 0) { uVar6 = uVar9 / uVar17; } uVar5 = uVar22 << (ulong)(uVar15 & 0x1f); uVar16 = uVar16 - uVar22 * uVar17 | (uVar9 - uVar6 * uVar17) * 0x10000; puVar21[-0xc] = uVar16; puVar21[0xc] = uVar16; uVar16 = ~(7 << (ulong)(uVar15 & 0x1f)); *(uint *)(lVar11 + 0xdd0) = *(uint *)(lVar11 + 0xdd0) & uVar16 | uVar5; *(uint *)(lVar11 + 0xdd8) = uVar16 & *(uint *)(lVar11 + 0xdd8) | uVar5; uVar6 = uVar6 << (ulong)(uVar15 & 0x1f); uVar15 = uVar15 + 3; *(uint *)(lVar11 + 0xdd4) = uVar16 & *(uint *)(lVar11 + 0xdd4) | uVar6; *(uint *)(lVar11 + 0xddc) = uVar16 & *(uint *)(lVar11 + 0xddc) | uVar6; puVar21 = puVar21 + 1; } while (uVar15 != 0x1e); FUN_00001770(lVar11); *(uint *)(lVar11 + 0x10) = *(uint *)(lVar11 + 0x10) & 0xfffffdff; *(uint *)(lVar11 + 0x14) = *(uint *)(lVar11 + 0x14) & 0xffffffc0 | 0x2f; *(uint *)(lVar11 + 4) = *(uint *)(lVar11 + 4) & 0xfbffffff; puVar21 = (uint *)(lVar11 + 0x8b0); do { *puVar21 = 0; puVar2 = puVar21 + 1; puVar21[0x18] = 0; puVar21[-0xc] = 0; puVar21[0xc] = 0; puVar21 = puVar2; } while (puVar2 != (uint *)(lVar11 + 0x8d8)); *(undefined4 *)(lVar11 + 0xdd0) = 0; *(undefined4 *)(lVar11 + 0xdd4) = 0; *(undefined4 *)(lVar11 + 0xdd8) = 0; *(undefined4 *)(lVar11 + 0xddc) = 0; FUN_00001770(lVar11); } else if (uVar16 < 0x42a) { if (uVar15 == 3) { lVar11 = 3; } else { lVar11 = 1L << (uVar18 & 0x3f); } FUN_00001c14(1,param_2,0,lVar11); } if ((*(uint *)(lVar19 + 0xe8) & 0xffff) == 0) { uVar18 = (ulong)-(uint)((*(uint *)(lVar19 + 0xec) & 3) != 0); } else { uVar18 = 0xffffffff; } } if ((int)uVar18 != 0 || uVar3 == 0) { return uVar18; } LAB_00005140: if ((uVar3 != 0xff) && ((param_9 >> 9 & 1) == 0)) { return (ulong)(param_9 & 0x200); } lVar14 = *(long *)(lVar14 + 8); *(uint *)(lVar14 + 0xb0) = *(uint *)(lVar14 + 0xb0) & 0xff7fffff; *(uint *)(lVar14 + 0x160) = *(uint *)(lVar14 + 0x160) & 0xfffffffe; if ((0x214 < *(uint *)(param_4 + 0x1b0)) || (param_5 != 0)) { *(uint *)(lVar14 + 4) = *(uint *)(lVar14 + 4) | 0x400000; } FUN_00001770(); FUN_000032a8(uVar10,auStack_10[param_2]); return 0; } // FUN_00005214 @ 00005214 void FUN_00005214(long param_1,long param_2) { int iVar1; uint uVar2; int iVar3; int iVar4; long lVar5; long lVar6; ulong uVar7; ulong uVar8; uint *puVar9; uint *puVar10; uint uVar11; int iVar12; uint uVar13; ulong uVar14; undefined4 local_10; undefined4 local_c; undefined4 local_8; undefined4 local_4; iVar1 = *(int *)(param_2 + 0x1b4); puVar9 = (uint *)(param_1 + 0xd8); uVar11 = iVar1 << 0x1b; uVar13 = 0; local_10 = 0; local_c = 0; local_8 = 0; local_4 = 0; puVar10 = puVar9; do { uVar2 = *puVar10; if (uVar2 == 0xf) { uVar11 = uVar11 | 0xffff8000; } else { lVar6 = (ulong)uVar2 * 0x6c; lVar5 = param_2 + lVar6; iVar3 = *(int *)(param_2 + lVar6); iVar12 = *(int *)(lVar5 + 0x10); iVar4 = FUN_00002e88(*(undefined8 *)(param_1 + (ulong)uVar2 * 0x20),1,0,8,iVar1); uVar13 = uVar13 | iVar4 << (ulong)((uVar2 & 3) << 3); uVar11 = iVar3 + -1 << (ulong)(uVar2 & 0x1f) | iVar12 << (ulong)(uVar2 + 0xc & 0x1f) | uVar11; if (*(int *)(lVar5 + 0x1c) + -1 == *(int *)(lVar5 + 0x18)) { uVar11 = uVar11 | 1 << (ulong)(uVar2 + 8 & 0x1f); } if (*(int *)(lVar5 + 0x18) == *(int *)(lVar5 + 0x1c) + 1) { uVar11 = uVar11 | 1 << (ulong)(uVar2 + 4 & 0x1f); } } puVar10 = puVar10 + 1; } while (puVar10 != (uint *)(param_1 + 0xe8)); lVar5 = *(long *)(param_1 + 0xc0); *(uint *)(lVar5 + 0x88) = uVar11; iVar12 = 0; *(uint *)(lVar5 + 0x8c) = uVar13; do { uVar11 = *puVar9; if (uVar11 != 0xf) { iVar12 = iVar12 + 1; lVar5 = param_2 + (ulong)uVar11 * 0x6c; if (*(int *)(lVar5 + 4) != 0) { uVar14 = (ulong)uVar11; *(undefined4 *)(*(long *)(param_1 + uVar14 * 0x20 + 0x18) + 8) = *(undefined4 *)(param_2 + uVar14 * 0x6c + 0x38); if (uVar11 < 2) { FUN_00001224(lVar5,param_2 + 0x1b0,&local_10,&local_c,uVar11); lVar6 = *(long *)(param_1 + 0x80); *(undefined4 *)(lVar6 + 0x208) = local_10; *(undefined4 *)(lVar6 + 0x20c) = local_c; *(undefined4 *)(lVar6 + 0x210) = 0; *(undefined4 *)(lVar6 + 0x214) = 0; } else { FUN_00001224(lVar5,param_2 + 0x1b0,&local_8,&local_4,uVar11); lVar6 = *(long *)(param_1 + 0x80); *(undefined4 *)(lVar6 + 0x210) = local_8; *(undefined4 *)(lVar6 + 0x214) = local_4; } uVar7 = FUN_00000e9c(lVar5,0,iVar1); uVar8 = FUN_00000e9c(lVar5,1,iVar1); if (*(int *)(param_2 + uVar14 * 0x6c + 0x14) != 0) { uVar7 = uVar7 * 3 >> 2; uVar8 = uVar8 * 3 >> 2; } if (*(int *)(param_2 + (ulong)uVar11 * 0x6c) == 1) { if (uVar7 == 0x200000000) { uVar7 = 0x100000000; uVar8 = uVar7; } else { uVar7 = 0x100000000; uVar8 = 0; } } else if (*(uint *)(param_2 + uVar14 * 0x6c + 0x38) < 4) { uVar7 = 0x100000000; } lVar6 = uVar14 * 0x20; *(uint *)(*(long *)(param_1 + lVar6 + 0x18) + 0xc) = ((uint)(uVar8 >> 0x1a) & 0xff) << 8 | (uint)(uVar7 >> 0x1a) & 0xff; FUN_0000cb44(param_1,uVar11,param_2); FUN_000027f8(*(undefined8 *)(param_1 + lVar6),0,lVar5,iVar1,*(undefined4 *)(param_2 + 0x1b0) ); if (*(int *)(param_1 + 0xf0) != 0) { *(uint *)(*(long *)(param_1 + lVar6) + 0x10100) = *(uint *)(*(long *)(param_1 + lVar6) + 0x10100) | 1; } FUN_0000cfd0(param_1,uVar11,param_2); } } puVar9 = puVar9 + 1; } while (puVar10 != puVar9); if (iVar12 == 2) { *(undefined4 *)(*(long *)(param_1 + 0x90) + 0x10) = 0x80000000; } return; } // FUN_00005540 @ 00005540 void FUN_00005540(long param_1,ulong param_2,long param_3,int param_4) { uint uVar1; uint uVar2; uint uVar3; uint uVar4; byte bVar5; long lVar6; int iVar7; uint uVar8; int iVar9; int iVar10; ulong uVar11; int iVar12; uint uVar13; uint uVar14; uint uVar15; uint *puVar16; long lVar17; long lVar18; lVar18 = *(long *)(param_3 + 0x228); iVar7 = *(int *)(lVar18 + 0x28); lVar17 = *(long *)(param_1 + (param_2 & 0xffffffff) * 0x20); puVar16 = *(uint **)(param_3 + 0x230); lVar6 = FUN_0000337c(iVar7,*(undefined4 *)(lVar18 + 0x2c)); uVar11 = (ulong)(uint)(param_4 << 0x14); if (iVar7 == 9) { if (*(int *)(lVar18 + 0x60) == 0x80) { uVar14 = *puVar16 >> 1; *(undefined4 *)(lVar17 + uVar11 + 0xd00) = 0; } else { uVar14 = *puVar16 >> 2; *(undefined4 *)(lVar17 + uVar11 + 0xd00) = 1; } uVar8 = (puVar16[0x15] >> 10) << 8 | (puVar16[0x7b] + puVar16[0x82] + puVar16[0xc] + 1) * 0x1000000 | puVar16[0x16] | puVar16[0x17] << 0x10; } else { uVar14 = 0; uVar8 = (puVar16[0x15] >> 10) << 8 | (puVar16[0x7b] + puVar16[0xc] + (puVar16[0x7c] >> 1) + 1) * 0x1000000 | puVar16[0x16] | puVar16[0x17] << 0x10; } *(uint *)(lVar17 + uVar11) = uVar8; *(uint *)(lVar17 + uVar11 + 0x18) = puVar16[0x1e] + 2; if (*(int *)(param_1 + 0xf4) == 0) { uVar8 = puVar16[8] >> 5 | 0x2100000; } else { uVar8 = puVar16[8] >> 3 | 0x82100000; } *(uint *)(lVar17 + uVar11 + 0x600) = uVar8; *(uint *)(lVar17 + uVar11 + 0x604) = puVar16[0x18]; *(undefined4 *)(lVar17 + uVar11 + 0xb80) = 0x20000; *(uint *)(lVar17 + uVar11 + 0x588) = puVar16[0x7b] - 2 | 0x200; *(uint *)(lVar17 + uVar11 + 0x5a4) = *(uint *)(lVar17 + uVar11 + 0x5a4) & 0xffffe0e0 | 0x801; *(undefined4 *)(lVar17 + uVar11 + 0x5a8) = 0x500003; if (*(int *)(param_1 + 0xf0) != 0) { uVar8 = (*puVar16 + 999 + (*puVar16 * 7 >> 3)) / 1000; *(uint *)(lVar17 + uVar11 + 0xb04) = (uVar8 + puVar16[0x16]) * 0x10000 | (uVar8 + puVar16[9]) * 0x1000000 | uVar8 + puVar16[0x11] | (uVar8 + puVar16[0xb]) * 0x100; *(uint *)(lVar17 + uVar11 + 0xb08) = (*puVar16 * 3 + 999 + (*puVar16 * 3 >> 2)) / 1000 + puVar16[0xf]; *(uint *)(lVar17 + uVar11 + 0xb00) = *puVar16 * 0x28c58; } if (*(int *)(lVar18 + 0x28) - 7U < 2) { *(undefined4 *)(lVar17 + uVar11 + 0xd04) = 0x808; uVar8 = ((*(uint *)(lVar18 + 0x2c) >> 1) + *(uint *)(lVar18 + 0x2c) * 7 + 999) / 1000; uVar14 = puVar16[0x1e]; if (uVar14 < 3) { uVar14 = 3; } if (uVar8 < uVar14) { uVar8 = uVar14; } *(uint *)(lVar17 + uVar11 + 4) = puVar16[0x10] | puVar16[0xe] << 8 | uVar8 << 0x10; uVar14 = *(byte *)(lVar6 + 0xd) + 4; uVar8 = puVar16[0x7a]; uVar2 = puVar16[0x7b]; if (uVar14 < puVar16[0x1b]) { uVar14 = puVar16[0x1b]; } uVar3 = puVar16[0x7c]; if (*(int *)(lVar18 + 0x40) == 0) { iVar7 = ((uVar3 >> 1) - uVar2) + uVar8 + 3 + uVar14; } else { iVar7 = ((uVar3 >> 1) - puVar16[0x2a]) + uVar8 + 2 + (uVar14 - puVar16[0x32]); } *(uint *)(lVar17 + uVar11 + 8) = (uVar3 >> 1) + 1 + uVar2 + puVar16[0x13] | iVar7 << 8 | uVar2 << 0x18 | uVar8 << 0x10; *(uint *)(lVar17 + uVar11 + 0xd08) = (puVar16[0x7c] >> 1) + 9 + puVar16[0x7b] + puVar16[0x13] | (iVar7 + 8) * 0x100; uVar14 = ((*puVar16 >> 1) + *puVar16 * 7 + 999) / 1000; if (uVar14 < 8) { uVar14 = 8; } *(uint *)(lVar17 + uVar11 + 0xc) = puVar16[0x7b] + puVar16[0xc] + (puVar16[0x7c] >> 1) + 1 + uVar14 | puVar16[0x27] << 0x10 | (puVar16[0x7a] + puVar16[0x1b] + (puVar16[0xe] - 8) + (puVar16[0x7c] >> 1) + uVar14) * 0x100; *(uint *)(lVar17 + uVar11 + 0x10) = puVar16[10] | (puVar16[9] - puVar16[0x79]) * 0x1000000 | puVar16[0x11] << 8 | puVar16[0x12] << 0x10; uVar14 = puVar16[0x70]; uVar8 = puVar16[0x21]; if (uVar14 < 8) { uVar14 = 8; } uVar2 = puVar16[0x5f]; if (puVar16[0x5f] < uVar8) { uVar2 = uVar8; } *(uint *)(lVar17 + uVar11 + 0x14) = uVar2 << 8 | uVar14 << 0x18 | uVar8 | puVar16[0x71] << 0x10; uVar14 = puVar16[0x5e]; if (puVar16[0x5e] < puVar16[0x60]) { uVar14 = puVar16[0x60]; } *(uint *)(lVar17 + uVar11 + 0x30) = uVar14 << 0x10; *(uint *)(lVar17 + uVar11 + 0x34) = puVar16[0x5b] << 0x10 | puVar16[0x2b] << 0x18 | puVar16[0x5d]; uVar14 = (*puVar16 * 0x28 + 999) / 1000; if (uVar14 < 8) { uVar14 = 8; } *(uint *)(lVar17 + uVar11 + 0x38) = puVar16[0x1c] | uVar14 << 0x10; *(uint *)(lVar17 + uVar11 + 100) = puVar16[0xe] | 0x40000 | ((puVar16[0x7c] >> 1) + 1 + puVar16[0x7b] + puVar16[0xc]) * 0x100; *(uint *)(lVar17 + uVar11 + 0x608) = puVar16[0x5c] << 0x10; uVar14 = puVar16[0x4d] & 0xfffffff7 | (uint)*(byte *)(lVar6 + 9) << 3; puVar16[0x4d] = uVar14; *(uint *)(lVar17 + uVar11 + 0x500) = puVar16[0x4e] | uVar14 << 0x10; *(uint *)(lVar17 + uVar11 + 0x504) = puVar16[0x55] | puVar16[0x4f] << 0x10; *(uint *)(lVar17 + uVar11 + 0x508) = puVar16[0x54] | puVar16[0x53] << 0x10; *(uint *)(lVar17 + uVar11 + 0x50c) = puVar16[0x56] | puVar16[0x5a] << 0x10; *(uint *)(lVar17 + uVar11 + 0x580) = puVar16[0x7b] - 2 | 0x7000200 | (puVar16[0x7a] + 0xf) * 0x10000; *(uint *)(lVar17 + uVar11 + 0x800) = puVar16[0x66] | puVar16[0x67] << 0x10; return; } if (*(int *)(lVar18 + 0x28) != 9) { return; } *(uint *)(lVar17 + 0x10010) = *(uint *)(lVar17 + 0x10010) & 0xfffffffe | *(uint *)(lVar18 + 0x70); *(uint *)(lVar17 + uVar11 + 0xd04) = puVar16[0xa6] - 1 | (puVar16[0xa7] - 1) * 0x100; if (*(int *)(lVar18 + 100) == 0) { uVar8 = puVar16[0x82]; } else { uVar8 = puVar16[0x81]; } *(uint *)(lVar17 + uVar11 + 4) = puVar16[0x10] | puVar16[0x1e] << 0x10 | (uVar8 + puVar16[0x8f]) * 0x100; bVar5 = *(byte *)(lVar6 + 0xc); uVar8 = (uint)bVar5; if (7 < bVar5) { uVar8 = -(bVar5 & 7); } iVar7 = *(byte *)(lVar6 + 0xd) + uVar8 + 7; if (*(int *)(lVar18 + 0x60) == 0x80) { iVar7 = iVar7 >> 1; if ((int)uVar8 < 0) { iVar9 = uVar8 - 2; iVar12 = 2; LAB_00005b70: iVar10 = 0; if (iVar12 != 0) { iVar10 = iVar9 / iVar12; } goto LAB_00005b74; } } else { iVar7 = iVar7 >> 2; if ((int)uVar8 < 0) { iVar9 = uVar8 - 6; iVar12 = 4; goto LAB_00005b70; } } iVar10 = 0; LAB_00005b74: uVar3 = puVar16[0x7b]; uVar4 = puVar16[0x7a]; uVar8 = (iVar7 - uVar3) + uVar4 + puVar16[0x83]; uVar2 = (((uVar3 + puVar16[0x82]) - uVar4) + 1) - iVar10; if ((int)uVar2 < 0) { uVar2 = 0; } uVar1 = puVar16[0x14]; if (puVar16[0x14] < uVar8) { uVar1 = uVar8; } if (*(int *)(lVar18 + 100) == 0) { uVar13 = puVar16[0x74]; uVar15 = puVar16[0x83] + uVar3; } else { uVar15 = puVar16[0x13]; uVar13 = uVar3 + puVar16[0x81]; } *(uint *)(lVar17 + uVar11 + 8) = uVar4 << 0x10 | uVar3 << 0x18 | uVar13 + uVar15 | uVar1 << 8; uVar3 = puVar16[0x14]; if (puVar16[0x14] < puVar16[0xa8]) { uVar3 = puVar16[0xa8]; } if (uVar3 < uVar8) { uVar3 = uVar8; } uVar4 = puVar16[0xa9]; if (puVar16[0xa9] < uVar2) { uVar4 = uVar2; } *(uint *)(lVar17 + uVar11 + 0xd08) = uVar4 | uVar3 << 8; uVar14 = ((uVar14 >> 1) + uVar14 * 7 + 999) / 1000; if (uVar14 < 4) { uVar14 = 4; } *(uint *)(lVar17 + uVar11 + 0xc) = uVar14 + puVar16[0xc] + puVar16[0x83] + puVar16[0x7b] | (puVar16[0x7a] + puVar16[0x9b] + puVar16[0x83] + puVar16[0x8f] + uVar14) * 0x100 | puVar16[0x27] << 0x10; if (*(int *)(lVar18 + 100) == 0) { uVar14 = puVar16[0x73]; } else { uVar14 = puVar16[0x11]; } *(uint *)(lVar17 + uVar11 + 0x10) = uVar14 << 8 | (puVar16[9] - puVar16[0x79]) * 0x1000000 | puVar16[10] | puVar16[0x81] << 0x10; uVar14 = puVar16[0x94]; if (uVar14 < 8) { uVar14 = 8; } *(uint *)(lVar17 + uVar11 + 0x14) = puVar16[0x91] | uVar14 << 0x18 | puVar16[0x5f] << 8 | puVar16[0x93] << 0x10; *(uint *)(lVar17 + uVar11 + 0x1c) = puVar16[0x96]; *(uint *)(lVar17 + uVar11 + 0x24) = puVar16[0x7b] + puVar16[0x82] + puVar16[0x8e] | puVar16[0x90] << 0x10 | *(uint *)(lVar17 + uVar11 + 0x24) & 0xffe0ff00; uVar14 = puVar16[0x92]; if (puVar16[0x92] < puVar16[0x8d]) { uVar14 = puVar16[0x8d]; } *(uint *)(lVar17 + uVar11 + 0x30) = uVar14 << 0x10; if (*(int *)(lVar18 + 100) == 0) { uVar14 = puVar16[0x83]; } else { uVar14 = puVar16[0x81]; } *(uint *)(lVar17 + uVar11 + 0x34) = puVar16[0x5d] | puVar16[0x2b] << 0x18 | uVar14 << 0x12; *(uint *)(lVar17 + uVar11 + 0x38) = puVar16[0x1c] | 0x80000; *(uint *)(lVar17 + uVar11 + 0x5c) = puVar16[0x9e] | ((puVar16[0x9f] + 0x3ff >> 10) + 1) * 0x10000; iVar7 = *(int *)(lVar18 + 100); if (iVar7 != 0) { iVar7 = 2; } uVar14 = puVar16[0xaa]; if (puVar16[0xaa] < uVar8) { uVar14 = uVar8; } *(uint *)(lVar17 + uVar11 + 0x60) = puVar16[0x83] + puVar16[0xa1] + puVar16[0x7b] | (puVar16[0x83] + puVar16[0x7a] + puVar16[0xa1]) * 0x100 | iVar7 << 0x18 | uVar14 << 0x10; *(uint *)(lVar17 + uVar11 + 100) = puVar16[0x82] + puVar16[0x8f] | (puVar16[0x7d] + 1 + puVar16[0x82] + puVar16[0x7b]) * 0x100; *(undefined4 *)(lVar17 + uVar11 + 0x78) = 0xc0c15; *(uint *)(lVar17 + uVar11 + 0x608) = puVar16[0x5c] << 0x10 | puVar16[0x8c] << 0x18; if (*(int *)(lVar18 + 0x60) == 0x80) { *(uint *)(lVar17 + uVar11 + 0x580) = puVar16[0x7b] * 2 - 2 | puVar16[0x7a] << 0x11 | 0x7000200; uVar14 = puVar16[0x84] << 0x11 | puVar16[0x88] << 0x19 | puVar16[0x8b] << 9; } else { *(uint *)(lVar17 + uVar11 + 0x580) = puVar16[0x7b] * 4 - 2 | puVar16[0x7a] << 0x12 | 0x7000400; uVar14 = puVar16[0x84] << 0x12 | puVar16[0x88] << 0x1a | puVar16[0x8b] << 10; } *(uint *)(lVar17 + uVar11 + 0x590) = uVar14; *(uint *)(lVar17 + uVar11 + 0x800) = puVar16[0xa3] + 10 | puVar16[0x67] << 0x10; param_3 = param_3 + (param_2 & 0xffffffff) * 0x14; *(char *)(param_3 + 0x1d4) = (char)puVar16[0x4d]; *(char *)(param_3 + 0x1d5) = (char)puVar16[0x4e]; *(char *)(param_3 + 0x1d6) = (char)puVar16[0x4f]; *(char *)(param_3 + 0x1d7) = (char)puVar16[0x7e]; uVar14 = puVar16[0x55]; puVar16[0x55] = uVar14 | 0x10; *(char *)(param_3 + 0x1da) = (char)(uVar14 | 0x10); *(char *)(param_3 + 0x1dd) = (char)puVar16[0x57]; *(char *)(param_3 + 0x1df) = (char)puVar16[0x7f]; *(char *)(param_3 + 0x1e0) = (char)puVar16[0x59]; *(undefined1 *)(param_3 + 0x1e1) = 0x80; return; } // FUN_00005f8c @ 00005f8c void FUN_00005f8c(void) { return; } // FUN_00005f90 @ 00005f90 undefined1 [16] FUN_00005f90(long param_1,uint param_2,long param_3,uint param_4) { uint uVar1; uint uVar2; uint uVar3; uint uVar4; int iVar5; long lVar6; long lVar7; long lVar8; long lVar9; undefined1 auVar10 [16]; undefined1 auVar11 [16]; lVar8 = *(long *)(param_1 + (ulong)param_2 * 0x20); lVar9 = *(long *)(param_3 + 0x228); lVar7 = *(long *)(param_3 + 0x230); uVar1 = *(uint *)((ulong)DAT_00011b42 * 4 + 0x11b4c); uVar3 = *(uint *)(param_3 + 0x1b0) / 0x18; FUN_00005540(); if (((param_4 == 0) || (*(int *)(param_3 + 0x10) == 0)) && (*(int *)(lVar9 + 0x28) != 9)) { *(uint *)(lVar8 + 0x10280) = *(uint *)(lVar8 + 0x10280) | 0x20000000; } lVar6 = (ulong)param_2 * 0x6c; uVar4 = 0x3000000; if (*(int *)(param_3 + lVar6) != 2) { uVar4 = 0x1000000; } uVar2 = uVar4 | 0x40000; if (*(int *)(lVar9 + 0x34) == 0x10) { uVar2 = uVar4 | 0x80000; } uVar4 = uVar2 | 0x1000; if (*(int *)(param_3 + lVar6 + 0xc) != 0) { uVar4 = uVar2; } uVar2 = *(uint *)(lVar9 + 0x28); if (6 < uVar2) { if (uVar2 < 9) { uVar4 = uVar4 | 2; goto LAB_0000608c; } if (uVar2 == 9) { uVar4 = uVar4 | 8; goto LAB_0000608c; } } FUN_0001053c(s__s__d__DRAM_type_unsupported__00010d27,s_config_pctl_regs_init_00010b78,0xfe5); LAB_0000608c: *(uint *)(lVar8 + 0x10000) = uVar4; iVar5 = *(int *)(param_1 + 0xf4); if ((iVar5 != 0) && (iVar5 = 0x10f, *(int *)(lVar9 + 0x28) != 9)) { iVar5 = 0x136; } *(int *)(lVar8 + 0x10200) = iVar5; uVar4 = 1; *(undefined4 *)(lVar8 + 0x10288) = 1; *(undefined4 *)(lVar8 + 0x10508) = 0x80008000; if (*(int *)(lVar9 + 0x44) != 0) { uVar4 = 5; } uVar2 = uVar4 | 2; if (*(int *)(lVar9 + 0x48) == 0) { uVar2 = uVar4; } *(uint *)(s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar8 + 0x1c) = uVar2; uVar4 = 0; if (uVar3 != 0) { uVar4 = *(uint *)(lVar7 + 0x14) / uVar3; } uVar2 = 0; if (uVar3 != 0) { uVar2 = *(uint *)(lVar7 + 0xc) / uVar3; } *(uint *)(s_connect_to_VSSQ_or_float__00010cfc + lVar8 + 4) = (uVar2 + 0x3ff >> 10) + 1 | ((uVar4 + 0x3ff >> 10) + 1) * 0x10000; uVar4 = 0; if (uVar3 != 0) { uVar4 = *(uint *)(lVar7 + 0x18) / uVar3; } *(uint *)(s_connect_to_VSSQ_or_float__00010cfc + lVar8 + 8) = ((uVar4 + 0x3ff >> 10) + 1) * 0x10000; *(uint *)(lVar8 + 0x10380) = (uVar1 >> 3 & 1) << 2 | *(uint *)(lVar8 + 0x10380) & 0xfffffffb; if (*(int *)(lVar9 + 0x28) == 9) { *(uint *)(lVar8 + 0x10380) = *(uint *)(lVar8 + 0x10380) & 0xffff80ff | 0x1f00; *(uint *)(lVar8 + 0x10384) = *(uint *)(lVar8 + 0x10384) & 0xffff0fff | 0x3000; *(uint *)(lVar8 + 0x1038c) = *(uint *)(lVar8 + 0x1038c) & 0xffff00ff | 0x200; *(uint *)(lVar8 + 0x1038c) = *(uint *)(lVar8 + 0x1038c) & 0xffffff00 | 0x10; } *(uint *)(FUN_00010394 + lVar8) = *(uint *)(FUN_00010394 + lVar8) & 0xcfffffff; *(uint *)(s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar8 + 0x18) = *(uint *)(s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar8 + 0x18) & 0xff000fff | 0xf000; *(uint *)(lVar8 + 0x10184) = *(uint *)(lVar8 + 0x10184) | 1; *(uint *)(lVar8 + 0x10500) = *(uint *)(lVar8 + 0x10500) & 0xffeefeee | 0x100011; *(undefined4 *)(lVar8 + 0x1018c) = 0; *(uint *)(lVar8 + 0x10510) = *(uint *)(lVar8 + 0x10510) | 4; if (*(int *)(param_1 + 0xf0) != 0) { *(undefined4 *)(lVar8 + 0x10104) = 1; *(undefined4 *)(lVar8 + 0x10108) = 1; *(uint *)(lVar8 + 0x10118) = *(uint *)(lVar8 + 0x10118) & 0xfffffffe; } *(uint *)(lVar8 + 0x10518) = *(uint *)(lVar8 + 0x10518) | 1; *(uint *)(lVar8 + 0x804) = *(uint *)(lVar8 + 0x804) & 0xfff00000 | 0xf0000; *(uint *)(lVar8 + 0x100804) = *(uint *)(lVar8 + 0x100804) & 0xfff00000 | 0xf0000; *(uint *)(lVar8 + 0x200804) = *(uint *)(lVar8 + 0x200804) & 0xfff00000 | 0xf0000; *(uint *)(lVar8 + 0x300804) = *(uint *)(lVar8 + 0x300804) & 0xfff00000 | 0xf0000; *(uint *)(lVar8 + 0x10510) = *(uint *)(lVar8 + 0x10510) | 4; auVar11._4_4_ = 0; auVar11._0_4_ = param_4; if (param_4 != 0) { auVar10._8_4_ = param_2; auVar10._0_8_ = param_1; auVar10._12_4_ = 0; return auVar10; } auVar11._8_8_ = lVar8 + 0x200000; return auVar11; } // FUN_000062d8 @ 000062d8 void FUN_000062d8(long param_1,ulong param_2,long param_3,int param_4) { uint uVar1; long lVar2; uint uVar3; long lVar4; long lVar5; lVar4 = *(long *)(param_3 + 0x228); lVar5 = *(long *)(param_1 + (param_2 & 0xffffffff) * 0x20 + 8); if (*(int *)(lVar4 + 0x28) == 9) { lVar2 = FUN_0000337c(9,*(undefined4 *)(lVar4 + 0x2c)); uVar1 = (uint)*(byte *)(lVar2 + 0x12); uVar3 = 10; if (*(int *)(lVar4 + 0x60) != 0x80) { uVar3 = 0xc; } } else { uVar1 = 0; uVar3 = 9; } if (param_4 == 1) { lVar4 = 0xbf0; } else { lVar4 = 0xbf4; if (param_4 != 2) { lVar4 = 0xa94; } } *(uint *)(lVar5 + lVar4) = uVar3 | uVar1 << 4; return; } // FUN_0000636c @ 0000636c void FUN_0000636c(long param_1,ulong param_2,long param_3,int param_4,int param_5,int param_6) { int iVar1; int iVar2; byte bVar3; byte bVar4; byte *pbVar5; uint uVar6; long lVar7; uint uVar8; uint uVar9; uint uVar10; ulong uVar11; undefined4 *puVar12; uint *puVar13; uint *puVar14; long lVar15; long lVar16; lVar15 = *(long *)(param_3 + 0x228); param_2 = param_2 & 0xffffffff; puVar14 = *(uint **)(param_3 + 0x230); iVar1 = *(int *)(lVar15 + 0x28); lVar16 = *(long *)(param_1 + param_2 * 0x20); uVar10 = *puVar14; puVar13 = *(uint **)(param_1 + param_2 * 0x20 + 8); uVar6 = uVar10; if (iVar1 == 9) { uVar6 = uVar10 >> 2; if (*(int *)(lVar15 + 0x60) == 0x80) { uVar6 = uVar10 >> 1; } } iVar2 = *(int *)(lVar15 + 0x2c); pbVar5 = (byte *)FUN_0000337c(iVar1,iVar2); if (*(int *)(param_3 + param_2 * 0x6c) == 1) { uVar10 = 0; } else { uVar10 = pbVar5[3] & 1; } if (param_6 == 0) { uVar8 = 1; } else { uVar8 = pbVar5[4] & 1; } if (iVar1 == 9) { uVar6 = (uVar6 * 0x75) / 1000 + uVar6 * 6 + 999; } else { uVar6 = (uint)(iVar2 * 0x2e) / 1000 + 999 + uVar6 * 8; } if (param_4 == 1) { lVar7 = 0xa3c; } else { lVar7 = 0xa2c; if (param_4 == 2) { lVar7 = 0xa4c; } } *(uint *)((long)puVar13 + lVar7) = puVar14[0x28] << 0xe | puVar14[0x9d] << 0x12 | puVar14[0x7b] | uVar6 / 1000 << 6; if (*(int *)(lVar15 + 0x28) == 9) { uVar6 = puVar14[0x12]; } else { uVar6 = 8; } if (param_4 == 1) { lVar7 = 0xa40; } else { lVar7 = 0xa30; if (param_4 == 2) { lVar7 = 0xa50; } } *(uint *)((long)puVar13 + lVar7) = puVar14[0xe] << 8 | puVar14[9] << 0xe | uVar6 | 0x67c00000; if (*(int *)(lVar15 + 0x28) == 9) { uVar6 = puVar14[0x27] << 6 | puVar14[0xb] << 0xd | 0x3c00000; } else { uVar6 = puVar14[0x27] << 6 | puVar14[0xb] << 0xd | (((puVar14[0x7c] >> 1) - puVar14[0x7b]) + puVar14[0x7a] + puVar14[0x14]) * 0x200000; } if (param_4 == 1) { lVar7 = 0xa44; } else { lVar7 = 0xa34; if (param_4 == 2) { lVar7 = 0xa54; } } *(uint *)((long)puVar13 + lVar7) = uVar6; if (*(int *)(lVar15 + 0x28) != 9) { uVar11 = (ulong)(uint)(param_5 << 0x14); uVar6 = *(uint *)(lVar16 + uVar11 + 0x500); puVar13[0x2a0] = puVar13[0x2a0] & 0xffffff00 | uVar6 >> 0x10; puVar13[0x2a0] = (uVar6 & 0xffff) << 8 | puVar13[0x2a0] & 0xffff00ff; uVar6 = *(uint *)(lVar16 + uVar11 + 0x508); puVar13[0x2a0] = puVar13[0x2a0] & 0xff00ffff | uVar6 & 0xffff0000; puVar13[0x2a0] = puVar13[0x2a0] & 0xffffff | uVar6 << 0x18; puVar13[0x2a1] = *(uint *)(lVar16 + uVar11 + 0x504) & 0xffff | puVar13[0x2a1] & 0xffffff00; goto LAB_0000665c; } uVar11 = 0; if (*(int *)(lVar15 + 0x60) == 0x80) { puVar12 = &DAT_00011df0; do { if (*puVar14 << 1 <= (uint)(&DAT_00011df0)[uVar11 * 6]) goto LAB_00006540; uVar11 = uVar11 + 1; } while (uVar11 != 6); } else { puVar12 = &DAT_00011e80; do { if (*puVar14 << 1 <= (uint)(&DAT_00011e80)[uVar11 * 6]) goto LAB_00006540; uVar11 = uVar11 + 1; } while (uVar11 != 10); } uVar9 = 0; uVar6 = 0; LAB_00006578: if (param_4 == 1) { lVar7 = 0xae4; } else { lVar7 = 0xae0; if (param_4 == 2) { lVar7 = 0xae8; } } *(uint *)((long)puVar13 + lVar7) = uVar6; if (param_4 == 1) { lVar7 = 0xaf4; } else { lVar7 = 0xadc; if (param_4 == 2) { lVar7 = 0xaf8; } } *(uint *)((long)puVar13 + lVar7) = uVar9; if (param_4 == 1) { lVar7 = 0xa48; } else { lVar7 = 0xa70; if (param_4 == 2) { lVar7 = 0xa58; } } *(uint *)((long)puVar13 + lVar7) = *(uint *)((long)puVar13 + lVar7) & 0xfffffffe | uVar9 ^ 1; lVar7 = param_3 + param_2 * 0x14; *(byte *)(lVar7 + 0x1da) = *(byte *)(lVar7 + 0x1da) | 0x40; puVar13[0x2a2] = (uint)*(byte *)(lVar7 + 0x1d9) << 0x10 | (uint)*(byte *)(lVar7 + 0x1d8) << 8 | (uint)*(byte *)(lVar7 + 0x1d7) | (uint)*(byte *)(lVar7 + 0x1dd) << 0x18; bVar3 = *(byte *)(lVar7 + 0x1d5); bVar4 = *(byte *)(lVar7 + 0x1d6); puVar13[0x2a3] = (uint)*(ushort *)(param_3 + param_2 * 0x14 + 0x1de); if (param_4 == 1) { lVar7 = 0xe38; } else { lVar7 = 0xe34; if (param_4 == 2) { lVar7 = 0xe3c; } } *(uint *)((long)puVar13 + lVar7) = (uint)bVar3 << 0x10 | (uint)bVar4 << 8 | (uint)bVar3 | (uint)bVar4 << 0x18; LAB_0000665c: if (param_4 == 0) { if (*(int *)(lVar15 + 0x28) == 9) { uVar6 = puVar14[0x81] << 4; } else { uVar6 = 0x80; } puVar13[0x28e] = uVar6; uVar6 = 0x2000; if (puVar14[0x7c] == 0x10) { uVar6 = 0x1000; } *puVar13 = *puVar13 & 0xffffc0c0 | puVar14[0x7a] | uVar6; puVar13[0x287] = puVar13[0x287] & 0xffffffc0 | puVar14[0x7a]; if (iVar1 == 9) { uVar6 = *puVar13 & 0xffffbfff; } else { uVar6 = (*(uint *)(lVar16 + (ulong)(uint)(param_5 << 0x14) + 0x504) >> 0x11 & 1) << 0x1b | *puVar13 & 0xf7ffffff; } *puVar13 = uVar6; puVar13[0x2e] = *puVar14 & 0xfff | puVar13[0x2e] & 0xfffff000; puVar13[0x2c] = puVar13[0x2c] & 0xfff800fe | 0x2ef00 | (uint)*pbVar5; puVar13[1] = puVar13[1] & 0xcfffffff | uVar10 << 0x1d | uVar8 << 0x1c; if (iVar1 == 9) { puVar13[1] = puVar13[1] & 0xffff7fff | (uint)(*(int *)(lVar15 + 100) != 0) << 0xf; uVar10 = (uint)pbVar5[6] << 0x18 | (uint)pbVar5[8] << 0x1d | (uint)pbVar5[2] << 0x1e | (uint)pbVar5[9] << 0x1f | (uint)pbVar5[0xd] << 0x10 | (uint)pbVar5[5] << 0x14 | (uint)pbVar5[0xc] << 0xc; } else { uVar10 = (uint)pbVar5[2] << 0x1e | (uint)pbVar5[9] << 0x1f | (uint)pbVar5[6] << 0x18 | (uint)pbVar5[8] << 0x1d | (uint)pbVar5[0xd] << 0x10 | (uint)pbVar5[5] << 0x14 | (uint)pbVar5[0xc] << 0xc | 0x300; } puVar13[3] = uVar10; if (iVar1 != 9) { puVar13[5] = (pbVar5[0xf] & 1) << 0x16 | puVar13[5] & 0xffbfffff; lVar15 = param_3 + param_2 * 0x6c; if ((0x11 < *(uint *)(lVar15 + 0x18)) || ((1 < *(uint *)(param_3 + param_2 * 0x6c) && (0x11 < *(uint *)(lVar15 + 0x1c))))) { puVar13[5] = puVar13[5] | 0x80000000; } } *puVar13 = (uint)pbVar5[10] << 0xf | (uint)pbVar5[0xe] << 0x1a | (uint)pbVar5[7] << 6 | *puVar13 & 0xfbff7fbf; if (iVar1 == 9) { uVar10 = 0x4740; } else { uVar10 = 0x4440; } puVar13[6] = puVar13[6] & 0xfff3b9bc | (uint)pbVar5[0xb] | uVar10 | 0xc0000; puVar13[4] = puVar13[4] & 0xfffff7ff | (uint)pbVar5[0xf] << 0xb; puVar13[0x100] = (uint)pbVar5[0x10] | (uint)pbVar5[0x10] << 4 | puVar13[0x100] & 0xffffff00; if (iVar1 == 9) { puVar13[2] = puVar13[2] & 0xffff3fff | (uint)pbVar5[0x13] << 0xe; } } else { uVar6 = 0; if (param_4 != 1) { uVar6 = 4; } lVar16 = 0xa48; if (param_4 != 1) { lVar16 = 0xa58; } if (*(int *)(lVar15 + 0x28) == 9) { uVar9 = puVar14[0x81]; } else { uVar9 = 8; } *(uint *)((long)puVar13 + lVar16) = *(uint *)((long)puVar13 + lVar16) & 0xe07fffff | uVar9 << 0x17; *(uint *)((long)puVar13 + (ulong)(uVar6 + 0xc4)) = (uint)*pbVar5 << 0x1e | (uint)pbVar5[1] << 0x1f | 0x30800000; uVar11 = (ulong)uVar6; lVar16 = uVar11 + 0xbc; bVar3 = pbVar5[0xf]; *(uint *)((long)puVar13 + lVar16) = (uint)pbVar5[9] << 0xc | (uint)pbVar5[10] << 0xd | puVar14[0x7a] << 0xe | *puVar14 << 0x14 | (uint)bVar3 << 8 | uVar10 << 0xb | *(uint *)((long)puVar13 + lVar16) & 0xff | uVar8 << 10 ; if (iVar1 == 9) { uVar6 = (uint)(*(int *)(lVar15 + 100) != 0) | (uint)pbVar5[0x13] << 5; uVar10 = *(uint *)((long)puVar13 + lVar16) & 0xffffff9e; } else { uVar6 = (bVar3 & 1) << 7; uVar10 = *(uint *)((long)puVar13 + lVar16) & 0xffffff7f; } *(uint *)((long)puVar13 + lVar16) = uVar6 | uVar10; *(uint *)((long)puVar13 + uVar11 + 0xcc) = (uint)pbVar5[0xe] << 0x1e | (uint)pbVar5[7] << 0x1f | pbVar5[0xc] | 0x60000 | (uint)pbVar5[0xb] << 0x18 | (uint)pbVar5[2] << 0x1d | (uint)pbVar5[6] << 0xc | (uint)pbVar5[8] << 0x10 | (uint)pbVar5[0xd] << 4 | (uint)pbVar5[5] << 8; *(uint *)((long)puVar13 + uVar11 + 0xa00) = (uint)pbVar5[0x10] | (uint)pbVar5[0x10] << 4 | *(uint *)((long)puVar13 + uVar11 + 0xa00) & 0xffffff00; } return; LAB_00006540: uVar11 = uVar11 & 0xffffffff; uVar6 = puVar12[uVar11 * 6 + 5] << 0x18 | puVar12[uVar11 * 6 + 3] << 0x1c | puVar12[uVar11 * 6 + 1] << 8 | puVar12[uVar11 * 6 + 4] << 0x10 | puVar12[uVar11 * 6 + 2]; uVar9 = (uint)(puVar12[uVar11 * 6 + 1] == 0); goto LAB_00006578; } // FUN_00006c04 @ 00006c04 void FUN_00006c04(long param_1,ulong param_2,long param_3,int param_4) { int iVar1; bool bVar2; uint uVar3; uint uVar4; uint *puVar5; puVar5 = *(uint **)(param_1 + (param_2 & 0xffffffff) * 0x20 + 8); if (param_4 == 1) { iVar1 = *(int *)(*(long *)(param_3 + 0x228) + 0x28); FUN_000062d8(); bVar2 = iVar1 != 9; uVar3 = 0x2000000; if (bVar2) { uVar3 = 0; } uVar4 = 0x80000; if (bVar2) { uVar4 = 0; } *puVar5 = uVar4 | uVar3 | *puVar5 & 0xfcf7ffff; } else { FUN_0000636c(); puVar5[0x287] = puVar5[0x287] & 0xfffbffff; } return; } // FUN_00006c8c @ 00006c8c void FUN_00006c8c(long param_1,int param_2,int param_3) { uint uVar1; undefined8 uVar2; uint uVar3; ulong uVar4; uVar4 = (ulong)(uint)(param_2 << 0x14); FUN_00002340(param_1,3,3,*(uint *)(param_1 + uVar4 + 0x504) >> 0x10); uVar1 = *(uint *)(param_1 + uVar4 + 0x500); FUN_00002340(param_1,3,1,uVar1 >> 0x10); FUN_00002340(param_1,3,2,uVar1 & 0xffff); uVar1 = *(uint *)(param_1 + uVar4 + 0x508); FUN_00002340(param_1,3,0xb,uVar1 >> 0x10); FUN_00002340(param_1,3,0xc,uVar1 & 0xffff); uVar1 = *(uint *)(param_1 + uVar4 + 0x50c); uVar3 = uVar1 >> 0x10; if (param_3 == 7) { uVar2 = 3; } else { FUN_00002340(param_1,1,0x16,uVar3); uVar2 = 2; uVar3 = uVar3 & 199 | 0x28; } FUN_00002340(param_1,uVar2,0x16,uVar3); FUN_00002340(param_1,3,0xe,uVar1 & 0xffff); return; } // FUN_00006d90 @ 00006d90 void FUN_00006d90(undefined8 param_1,undefined1 *param_2) { byte bVar1; FUN_00002340(param_1,3,1,*param_2); FUN_00002340(param_1,3,2,param_2[1]); FUN_00002340(param_1,3,3,param_2[2]); FUN_00002340(param_1,3,10,param_2[3]); bVar1 = param_2[4]; FUN_00002340(param_1,1,0xb,bVar1); FUN_00002340(param_1,2,0xb,bVar1 & 0x8f); FUN_00002340(param_1,3,0xc,param_2[5]); FUN_00002340(param_1,3,0xd,param_2[6]); FUN_00002340(param_1,3,0xe,param_2[7]); FUN_00002340(param_1,3,0xf,param_2[8]); bVar1 = param_2[10]; FUN_00002340(param_1,1,0x11,bVar1); FUN_00002340(param_1,2,0x11,bVar1 | 0x28); FUN_00002340(param_1,3,0x12,param_2[0xb]); FUN_00002340(param_1,3,0x14,param_2[0xc]); FUN_00002340(param_1,3,0x19,param_2[0xd]); FUN_00002340(param_1,3,0x29,param_2[0xe]); return; } // FUN_00006efc @ 00006efc void FUN_00006efc(undefined8 param_1,uint param_2,long param_3) { FUN_00001194((ulong)param_2,param_2 == 0,param_3 + (ulong)param_2 * 0x6c,param_3 + 0x1b0,0); return; } // FUN_00006f1c @ 00006f1c undefined8 FUN_00006f1c(uint *param_1,long param_2,long param_3,uint param_4,int param_5,int param_6) { uint uVar1; uint uVar2; uint uVar3; uint uVar4; uint uVar5; uint uVar6; uint uVar7; uint uVar8; uint uVar9; uint uVar10; byte bVar11; uint uVar12; long lVar13; long lVar14; ulong uVar15; undefined8 uVar16; uint *puVar17; undefined4 *puVar18; uint *puVar19; if ((param_5 == 7) || (param_5 == 8)) { puVar19 = &DAT_00011d50; DAT_00011d7c = param_5; } else { if (param_5 != 9) { FUN_000104b8(s_unsupported_dram_type_00010da4); return 0xffffffff; } puVar19 = &DAT_00011d90; } puVar19[0xe] = param_4; if (param_6 == 0) { uVar12 = puVar19[6]; uVar6 = puVar19[7]; uVar2 = *puVar19; uVar7 = puVar19[1]; uVar3 = puVar19[8]; uVar8 = puVar19[9]; uVar4 = puVar19[2]; uVar9 = puVar19[3]; uVar5 = puVar19[4]; uVar10 = puVar19[5]; puVar17 = param_1; do { puVar17[0xe] = 0; uVar1 = (uVar12 >> 2) + 1; if (uVar12 == 0x10) { uVar1 = 4; } *puVar17 = uVar7; puVar17[1] = uVar6; puVar17[2] = uVar1; puVar17[3] = uVar2 >> 4; puVar17[4] = uVar3 >> 4; puVar17[5] = uVar8; puVar17[6] = uVar4; puVar17[7] = uVar9; puVar17[8] = 0; puVar17[9] = 0; puVar17[10] = uVar5; puVar17[0xb] = uVar10; puVar17[0xc] = 0; puVar17[0xd] = 0; puVar17 = puVar17 + 0x1b; } while (puVar17 != param_1 + 0x6c); param_1[0x6d] = puVar19[0xb]; param_1[0x6c] = param_4; param_1[0x6f] = 0; param_1[0x70] = 0; param_1[0x6e] = 4; } else { param_1[0x6c] = param_4; } *(long *)(param_1 + 0x8a) = param_2; *(long *)(param_1 + 0x8c) = param_3; FUN_00000aac(param_2,0,0x94); FUN_000014b4(puVar19,param_2,0); lVar13 = FUN_00002110(param_5); lVar14 = FUN_0000337c(param_5,param_4); if (lVar13 != 0) { if (*(char *)(lVar14 + 2) == '\0') { bVar11 = *(byte *)(lVar13 + 0xf); } else { bVar11 = *(byte *)(lVar13 + 0x13); } *(uint *)(param_2 + 0x4c) = (uint)bVar11; if ((*(uint *)(lVar13 + 0x18) & 0xfff) < param_4) { *(undefined4 *)(param_2 + 0x40) = 1; *(uint *)(param_2 + 0x50) = (uint)*(byte *)(lVar13 + 0x14); if (*param_1 == 1) goto LAB_00006fd0; *(uint *)(param_2 + 0x58) = (uint)*(byte *)(lVar13 + 0x2b); } else { *(undefined4 *)(param_2 + 0x40) = 0; *(undefined4 *)(param_2 + 0x50) = 0; LAB_00006fd0: *(undefined4 *)(param_2 + 0x58) = 0; } if ((*(uint *)(lVar13 + 0x24) & 0xfff) < param_4) { *(uint *)(param_2 + 0x54) = *(uint *)(lVar13 + 0x14) >> 0x12 & 0xff; } else { *(undefined4 *)(param_2 + 0x54) = 0; } } *(uint *)(param_2 + 0x78) = (uint)*(byte *)(lVar14 + 9); if (param_5 == 9) { *(undefined4 *)(param_2 + 0x7c) = 0; *(uint *)(param_2 + 0x80) = (uint)*(byte *)(lVar14 + 0x13); *(uint *)(param_2 + 0x84) = (uint)*(byte *)(lVar14 + 0x14); *(undefined4 *)(param_2 + 0x88) = 0; *(undefined4 *)(param_2 + 0x90) = 0; *(undefined4 *)(param_2 + 0x74) = 2; *(undefined4 *)(param_2 + 0x8c) = 2; if (param_4 < 0x641) { *(undefined4 *)(param_2 + 0x60) = 0x80; puVar18 = &DAT_00011df0; *(undefined4 *)(param_2 + 100) = 0x10; uVar15 = 0; do { if (param_4 << 1 <= (uint)(&DAT_00011df0)[uVar15 * 6]) goto LAB_00007050; uVar15 = uVar15 + 1; } while (uVar15 != 6); } else { puVar18 = &DAT_00011e80; uVar15 = 0; *(undefined4 *)(param_2 + 0x60) = 0; *(undefined4 *)(param_2 + 100) = 0; do { if (param_4 << 1 <= (uint)(&DAT_00011e80)[uVar15 * 6]) goto LAB_00007050; uVar15 = uVar15 + 1; } while (uVar15 != 10); } } else { *(uint *)(param_2 + 0x80) = (uint)*(byte *)(lVar14 + 0x13); *(undefined4 *)(param_2 + 0x8c) = 0; *(undefined4 *)(param_2 + 0x88) = 1; } LAB_00007068: FUN_00000aac(param_3,0,0x2ac); FUN_0000de34(0); uVar16 = FUN_0000de40(param_2,param_3); if ((int)uVar16 == 0) { if (*(int *)(param_2 + 0x28) == 9) { uVar12 = param_4 >> 1; if (0x640 < param_4) { uVar12 = param_4 >> 2; } *(undefined4 *)(param_3 + 0x84) = *(undefined4 *)(param_3 + 0x244); *(undefined4 *)(param_3 + 0x88) = *(undefined4 *)(param_3 + 0x17c); *(undefined4 *)(param_3 + 0x8c) = *(undefined4 *)(param_3 + 0x24c); *(undefined4 *)(param_3 + 0x90) = *(undefined4 *)(param_3 + 0x250); *(undefined4 *)(param_3 + 0x98) = 0; *(undefined4 *)(param_3 + 0x1dc) = 0; uVar2 = *(uint *)(param_3 + 0x248); if (*(uint *)(param_3 + 0x248) < *(uint *)(param_3 + 0x234)) { uVar2 = *(uint *)(param_3 + 0x234); } *(uint *)(param_3 + 0x180) = uVar2; *(undefined4 *)(param_3 + 0x1e0) = 0; *(uint *)(param_3 + 0x6c) = (uVar12 * 3 + (uVar12 >> 1) + 999) / 1000; uVar12 = (uVar12 * 0xe + 999) / 1000; if (uVar12 < 10) { uVar12 = 10; } *(uint *)(param_3 + 0x194) = uVar12; } else { *(int *)(param_3 + 0x1c4) = *(int *)(param_3 + 0x1c4) + 2; *(int *)(param_3 + 0x78) = *(int *)(param_3 + 0x78) + 2; *(int *)(param_3 + 0x188) = *(int *)(param_3 + 0x188) + 2; *(int *)(param_3 + 400) = *(int *)(param_3 + 400) + 2; *(int *)(param_3 + 0x84) = *(int *)(param_3 + 0x84) + 2; } } return uVar16; LAB_00007050: if (puVar18[(uVar15 & 0xffffffff) * 6 + 1] == 0) { *(undefined4 *)(param_2 + 0x70) = 1; } goto LAB_00007068; } // FUN_000072d8 @ 000072d8 void FUN_000072d8(long param_1,ulong param_2,long param_3,long param_4) { int iVar1; bool bVar2; long lVar3; int iVar4; long lVar5; undefined4 *puVar6; undefined4 *puVar7; ulong uVar8; undefined4 *puVar9; uVar8 = param_2 & 0xffffffff; lVar3 = *(long *)(param_1 + uVar8 * 0x20 + 8); iVar1 = *(int *)(param_4 + uVar8 * 0x6c); lVar5 = (param_2 & 0xffffffff) * 0x17c; puVar6 = (undefined4 *)(param_3 + lVar5 + 0x1a4); puVar7 = (undefined4 *)(lVar3 + 0xbb0); do { puVar9 = puVar7 + 1; *puVar6 = *puVar7; puVar6 = puVar6 + 1; puVar7 = puVar9; } while (puVar9 != (undefined4 *)(lVar3 + 0xbc4)); *(uint *)(lVar3 + 0x10) = *(uint *)(lVar3 + 0x10) & 0xfffffff8 | 4; *(undefined4 *)(param_3 + uVar8 * 0x17c + 0x1c8) = *(undefined4 *)(lVar3 + 0x6c); *(uint *)(lVar3 + 0x10) = *(uint *)(lVar3 + 0x10) & 0xfffffff8; iVar4 = 0; puVar6 = (undefined4 *)(param_3 + lVar5 + 0x1cc); puVar7 = (undefined4 *)(param_3 + lVar5 + 0x26c); puVar9 = (undefined4 *)(param_3 + lVar5 + 0x1b8); while (iVar4 != iVar1) { bVar2 = iVar4 != 0; lVar5 = 0xf0; if (bVar2) { lVar5 = 0x5e4; } iVar4 = iVar4 + 1; *puVar9 = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0xfc; if (bVar2) { lVar5 = 0x5f0; } puVar9[1] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x18c; if (bVar2) { lVar5 = 0x76c; } *puVar6 = *(undefined4 *)(lVar3 + lVar5); lVar5 = 400; if (bVar2) { lVar5 = 0x770; } puVar6[1] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x19c; if (bVar2) { lVar5 = 0x774; } puVar6[2] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x1a8; if (bVar2) { lVar5 = 0x778; } puVar6[3] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x1b4; if (bVar2) { lVar5 = 0x77c; } puVar6[4] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x1c0; if (bVar2) { lVar5 = 0x780; } puVar6[5] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x1cc; if (bVar2) { lVar5 = 0x784; } puVar6[6] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x1d8; if (bVar2) { lVar5 = 0x788; } puVar6[7] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x1e4; if (bVar2) { lVar5 = 0x78c; } puVar6[8] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x574; if (bVar2) { lVar5 = 0x764; } puVar9[0x29] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x580; if (bVar2) { lVar5 = 0x768; } puVar9[0x2a] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x610; if (bVar2) { lVar5 = 0x790; } puVar6[0x12] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x614; if (bVar2) { lVar5 = 0x794; } puVar6[0x13] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x620; if (bVar2) { lVar5 = 0x798; } puVar6[0x14] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x62c; if (bVar2) { lVar5 = 0x79c; } puVar6[0x15] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x638; if (bVar2) { lVar5 = 0x7a0; } puVar6[0x16] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x644; if (bVar2) { lVar5 = 0x7a4; } puVar6[0x17] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x650; if (bVar2) { lVar5 = 0x7a8; } puVar6[0x18] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x65c; if (bVar2) { lVar5 = 0x7ac; } puVar6[0x19] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x668; if (bVar2) { lVar5 = 0x7b0; } puVar6[0x1a] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x1f0; if (bVar2) { lVar5 = 0x410; } *puVar7 = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x1fc; if (bVar2) { lVar5 = 0x41c; } puVar7[1] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x208; if (bVar2) { lVar5 = 0x428; } puVar7[2] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x214; if (bVar2) { lVar5 = 0x434; } puVar7[3] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x220; if (bVar2) { lVar5 = 0x440; } puVar7[4] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x22c; if (bVar2) { lVar5 = 0x44c; } puVar7[5] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x238; if (bVar2) { lVar5 = 0x458; } puVar7[6] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x244; if (bVar2) { lVar5 = 0x464; } puVar7[7] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x250; if (bVar2) { lVar5 = 0x470; } puVar7[8] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x254; if (bVar2) { lVar5 = 0x474; } puVar7[9] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x490; if (bVar2) { lVar5 = 0x500; } puVar7[0x14] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x49c; if (bVar2) { lVar5 = 0x50c; } puVar7[0x15] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x4a8; if (bVar2) { lVar5 = 0x518; } puVar7[0x16] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x4b4; if (bVar2) { lVar5 = 0x524; } puVar7[0x17] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x4c0; if (bVar2) { lVar5 = 0x530; } puVar7[0x18] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x4cc; if (bVar2) { lVar5 = 0x53c; } puVar7[0x19] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x4d8; if (bVar2) { lVar5 = 0x548; } puVar7[0x1a] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x4e4; if (bVar2) { lVar5 = 0x554; } puVar7[0x1b] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x4f0; if (bVar2) { lVar5 = 0x560; } puVar7[0x1c] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0x4f4; if (bVar2) { lVar5 = 0x564; } puVar7[0x1d] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0xdc0; if (bVar2) { lVar5 = 0xdc8; } puVar9[0x55] = *(undefined4 *)(lVar3 + lVar5); lVar5 = 0xdc4; if (bVar2) { lVar5 = 0xdcc; } puVar9[0x56] = *(undefined4 *)(lVar3 + lVar5); puVar6 = puVar6 + 9; puVar7 = puVar7 + 10; puVar9 = puVar9 + 2; } return; } // FUN_00007730 @ 00007730 void FUN_00007730(uint param_1,uint param_2) { char *pcVar1; bool bVar2; bool bVar3; bool bVar4; bool bVar5; uint uVar6; int iVar7; undefined4 uVar8; undefined4 uVar9; uint uVar10; byte bVar11; int *piVar12; int *piVar13; long *plVar14; undefined4 uVar15; int iVar16; uint uVar17; long lVar18; ulong uVar19; long lVar20; long lVar21; long lVar22; long lVar23; uint *puVar24; uint uVar25; undefined8 uVar26; uint *puVar27; int iVar28; uint *puVar29; long *plVar30; uint *puVar31; ulong uVar32; uint *puVar33; ulong uVar34; uint uVar35; long lVar36; uint uVar37; long lVar38; long lVar39; uint *local_48; long local_40; int local_34; uint local_30; long local_28; piVar12 = DAT_00012b40; iVar7 = *(int *)(DAT_00012b80 + 0x1b4); uVar6 = *(uint *)(DAT_00012b78[2] + 0x300) & 1 ^ 1; if (param_2 == 0) { uVar35 = 0; } else { uVar35 = *(uint *)(DAT_00012b78[1] + 0xb8) >> 0x1e; if ((uVar35 & 1) == 0) { uVar35 = 1; } else { if (uVar35 != 1) { FUN_000104b8(s_phy_dvfs_mode_unknown____00010d53); return; } uVar35 = 2; } } uVar34 = (ulong)param_2; FUN_00000aac(DAT_00012b40,0,0x358); lVar23 = DAT_00012b30; FUN_00006f1c(piVar12,DAT_00012b30,DAT_00012b50,param_1,iVar7,0); plVar14 = DAT_00012b78; if (((iVar7 == 9) && ((*(uint *)(*DAT_00012b78 + ((ulong)*(uint *)(*DAT_00012b78 + 0x10008) & 3) * 0x100000 + 0xd00 ) & 1) != 0)) && (*(int *)(lVar23 + 0x60) == 0x80)) { puVar31 = (uint *)(DAT_00012b78 + 0x1b); puVar24 = (uint *)(DAT_00012b78 + 0x1d); do { if (*puVar31 != 0xf) { lVar23 = plVar14[(ulong)*puVar31 * 4]; if ((*(uint *)(lVar23 + 0x10100) & 1) != 0) { *(uint *)(lVar23 + 0x10100) = *(uint *)(lVar23 + 0x10100) | 4; } InstructionSynchronizationBarrier(); UnkSytemRegWrite(0,3,3,0xf,4,0); } puVar31 = puVar31 + 1; } while (puVar24 != puVar31); } lVar23 = DAT_00012b80; piVar12 = DAT_00012b40; FUN_00000ac8(DAT_00012b40 + 0xba,DAT_00012b80 + 0x2e8,0x40); FUN_00000ac8(piVar12 + 0xca,lVar23 + 0x328,0x20); lVar18 = FUN_0000337c(piVar12[0x6d],*(undefined4 *)(*(long *)(piVar12 + 0x8a) + 0x2c)); plVar14 = DAT_00012b78; uVar19 = (ulong)(param_2 << 0x14); lVar23 = uVar19 + 0xa80; local_40 = 0xc; uVar17 = uVar6 << 7 | uVar6 << 6; puVar31 = (uint *)(DAT_00012b78 + 0x1b); local_28 = 0; local_48 = puVar31; do { uVar25 = *local_48; uVar32 = (ulong)uVar25; if (uVar25 != 0xf) { lVar36 = plVar14[uVar32 * 4 + 1]; *(uint *)(lVar36 + 4) = *(uint *)(lVar36 + 4) & 0xfffffff7; FUN_00001c14(1,uVar25,1,3); FUN_00001c14(2,uVar32,1,3); piVar12 = DAT_00012b40; *(uint *)(lVar36 + 0xb8) = *(uint *)(lVar36 + 0xb8) & 0xffffdfff; FUN_0000186c(plVar14,uVar25,uVar6,piVar12[0x6c] << 1); lVar20 = DAT_00012b80; *(undefined4 *)(local_28 + (long)piVar12) = *(undefined4 *)(local_28 + DAT_00012b80); *(undefined4 *)(local_40 + (long)piVar12) = *(undefined4 *)(local_40 + lVar20); lVar39 = plVar14[uVar32 * 4]; lVar20 = plVar14[uVar32 * 4 + 1]; iVar16 = piVar12[0x6d]; pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar39 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; FUN_00005540(plVar14,uVar25,piVar12,param_2); if ((param_2 == 1) && ((int)plVar14[0x1d] == 0)) { *(uint *)(lVar39 + 0x100d0c) = *(uint *)((long)plVar14 + 0xec) & 0x1f | 0x600000 | *(uint *)(lVar39 + 0x100d0c) & 0xff00ffe0; } else { *(uint *)(lVar39 + uVar19 + 0xd0c) = (*(uint *)(DAT_00012b78 + 0x1d) & 0xff) << 0x10 | *(uint *)((long)DAT_00012b78 + 0xec) & 0x1f | *(uint *)(lVar39 + uVar19 + 0xd0c) & 0xff00ffe0; } FUN_000027e0(lVar39); piVar12 = DAT_00012b40; plVar30 = DAT_00012b78; FUN_000062d8(DAT_00012b78,uVar25,DAT_00012b40,uVar35); FUN_0000636c(plVar30,uVar32,piVar12,uVar35,param_2,1); if (iVar16 - 7U < 2) { local_30 = *(uint *)(lVar39 + uVar19 + 0x504) & 0xff3f; FUN_00002340(lVar39,3,0xd,local_30 | 0x80 >> uVar6); *(uint *)(lVar20 + 0xa84) = *(uint *)(lVar20 + 0xa84) & 0xffffff00 | uVar17 | local_30; } else if (iVar16 == 9) { bVar11 = *(byte *)((long)piVar12 + (ulong)uVar25 * 0x14 + 0x1dd); FUN_00002340(lVar39,3,0x10); *(uint *)(lVar20 + 0xa88) = *(uint *)(lVar20 + 0xa88) & 0xffffff | (bVar11 & 0xfffffff0 | uVar6 << 2) << 0x18; } piVar12 = DAT_00012b40; FUN_000033f4(DAT_00012b78,uVar25,DAT_00012b40,param_2,uVar35,1); if (iVar16 - 7U < 2) { FUN_00006c8c(lVar39,param_2,iVar16); } else if (iVar16 == 9) { FUN_00006d90(lVar39,piVar12 + (ulong)uVar25 * 5 + 0x75); } plVar30 = DAT_00012b78; piVar12 = DAT_00012b40; FUN_0000cb44(DAT_00012b78,uVar25,DAT_00012b40); FUN_000027f8(plVar30[uVar32 * 4],uVar34,DAT_00012b80 + (ulong)uVar25 * 0x6c,iVar7,param_1); FUN_0000d10c(plVar30,uVar25,piVar12); lVar39 = plVar30[uVar32 * 4]; lVar20 = plVar30[0x19]; if (1 < uVar25) { lVar20 = plVar30[0x1a]; } lVar38 = plVar30[uVar32 * 4 + 1]; if (uVar35 == 1) { lVar22 = 0xaf4; } else { lVar22 = 0xadc; if (uVar35 == 2) { lVar22 = 0xaf8; } } uVar37 = *(uint *)(lVar38 + lVar22); *(uint *)(lVar39 + 0x20090) = *(uint *)(lVar39 + 0x20090) & 0xfffffffe; do { } while ((*(uint *)(lVar39 + 0x20114) & 0x10001) != 0); uVar15 = FUN_0000cf84(lVar39); *(uint *)(s_config_pctl_regs_init_00010b78 + lVar39 + 0xc) = *(uint *)(s_config_pctl_regs_init_00010b78 + lVar39 + 0xc) | 2; do { } while (((*(uint *)(s_config_pctl_regs_init_00010b78 + lVar39 + 0x10) ^ 0xffffffff) & 0x36000000) != 0); if ((*(uint *)(lVar39 + 0x10100) & 1) == 0) { local_34 = 0; } else if ((*(uint *)(lVar39 + 0x10200) >> 8 & 1) == 0) { *(uint *)(lVar39 + 0x10100) = *(uint *)(lVar39 + 0x10100) | 4; local_34 = 2; } else { *(uint *)(lVar39 + 0x10100) = *(uint *)(lVar39 + 0x10100) & 0xfffffffe; local_34 = 1; } pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar39 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; bVar2 = -1 < *(int *)(lVar39 + 0x10508); if (bVar2) { *(uint *)(lVar39 + 0x10508) = *(uint *)(lVar39 + 0x10508) | 0x80000000; } FUN_000027e0(lVar39); *(uint *)(s_config_pctl_regs_init_00010b78 + lVar39 + 0x14) = *(uint *)(s_config_pctl_regs_init_00010b78 + lVar39 + 0x14) | 0x20000; do { } while ((*(uint *)(s_ddr_v1_19_ff1a08bde6_00010b90 + lVar39) >> 0x11 & 1) != 0); pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar39 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; bVar3 = (*(uint *)(lVar39 + 0x10518) & 1) != 0; if (bVar3) { *(uint *)(lVar39 + 0x10518) = *(uint *)(lVar39 + 0x10518) & 0xfffffffe; } FUN_000027e0(lVar39); bVar4 = (*(uint *)(lVar39 + lVar23) & 1) != 0; if (bVar4) { *(uint *)(lVar39 + lVar23) = *(uint *)(lVar39 + lVar23) & 0xfffffffe; } pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar39 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; uVar8 = *(undefined4 *)(lVar39 + 0x10184); *(uint *)(lVar39 + 0x10184) = *(uint *)(lVar39 + 0x10184) & 0xfffffffe; FUN_000027e0(lVar39); do { } while ((*(uint *)(lVar39 + 0x10014) & 7) != 1); uVar9 = *(undefined4 *)(lVar39 + 0x10500); *(undefined4 *)(lVar39 + 0x10500) = 0; do { } while ((*(uint *)(lVar39 + 0x10514) & 6) != 0); *(uint *)(lVar39 + 0x10180) = *(uint *)(lVar39 + 0x10180) & 0xfffffdff; *(uint *)(lVar39 + 0x10180) = *(uint *)(lVar39 + 0x10180) | 0x800; do { } while ((*(uint *)(lVar39 + 0x10014) & 7) != 3); do { } while ((*(uint *)(lVar39 + 0x10014) & 0x30) != 0x20); *(uint *)(s_config_pctl_regs_init_00010b78 + lVar39 + 0xc) = *(uint *)(s_config_pctl_regs_init_00010b78 + lVar39 + 0xc) | 1; do { } while ((*(uint *)(s_config_pctl_regs_init_00010b78 + lVar39 + 0x10) & 0x30000000) != 0x30000000); pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar39 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *(uint *)(lVar39 + 0x10510) = *(uint *)(lVar39 + 0x10510) & 0xfffffffe; FUN_000027e0(lVar39); bVar5 = (*(uint *)(lVar39 + 0x10508) >> 0xf & 1) != 0; if (bVar5) { pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar39 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *(uint *)(lVar39 + 0x10508) = *(uint *)(lVar39 + 0x10508) & 0xffff7fff; FUN_000027e0(lVar39); } *(uint *)(lVar38 + 0xb8) = *(uint *)(lVar38 + 0xb8) & 0x3fffffff | uVar35 << 0x1e; *(uint *)(lVar38 + 0xe04) = *(uint *)(lVar38 + 0xe04) & 0x7fffffff; pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar39 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *(uint *)(lVar39 + 0x10510) = *(uint *)(lVar39 + 0x10510) | 0x20; FUN_000027e0(lVar39); do { } while ((*(uint *)(lVar39 + 0x10514) & 1) != 0); lVar22 = (ulong)((uVar25 & 1) + 0x4c) * 4; *(undefined4 *)(lVar20 + lVar22) = 0x80000; lVar21 = DAT_00012b78[uVar32 * 4 + 2]; *(undefined4 *)(lVar21 + 0xa00) = 0x20002; *(uint *)(lVar20 + lVar22) = uVar35 | 0x30000; *(uint *)(lVar21 + 0x300) = uVar6 | 0x10000; *(undefined4 *)(lVar21 + 0xa00) = 0x20000; *(undefined4 *)(lVar20 + lVar22) = 0x80008; pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar39 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *(uint *)(lVar39 + 0x10008) = *(uint *)(lVar39 + 0x10008) & 0xfffffffc | param_2; if (iVar7 == 9) { *(uint *)(lVar39 + 0x10010) = uVar37 & 1 | *(uint *)(lVar39 + 0x10010) & 0xfffffffe; } FUN_000027e0(lVar39); *(uint *)(lVar39 + 0x10208) = *(uint *)(lVar39 + 0x10208) | 0x10; *(uint *)(lVar39 + 0x10208) = *(uint *)(lVar39 + 0x10208) & 0xffffffef; pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar39 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *(uint *)(lVar39 + 0x10510) = *(uint *)(lVar39 + 0x10510) & 0xffffffdf; FUN_000027e0(lVar39); if (bVar5) { pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar39 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *(uint *)(lVar39 + 0x10508) = *(uint *)(lVar39 + 0x10508) | 0x8000; FUN_000027e0(lVar39); } do { } while ((*(uint *)(lVar39 + 0x10514) & 1) == 0); *(uint *)(lVar38 + 0xe04) = *(uint *)(lVar38 + 0xe04) | 0x80000000; pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar39 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *(uint *)(lVar39 + 0x10510) = *(uint *)(lVar39 + 0x10510) | 1; FUN_000027e0(lVar39); *(uint *)(lVar39 + 0x10180) = *(uint *)(lVar39 + 0x10180) & 0xfffff7ff; do { } while ((*(uint *)(lVar39 + 0x10014) & 7) == 3); *(undefined4 *)(lVar39 + 0x10500) = uVar9; *(uint *)(s_config_pctl_regs_init_00010b78 + lVar39 + 0xc) = *(uint *)(s_config_pctl_regs_init_00010b78 + lVar39 + 0xc) & 0xfffffffe; if (iVar7 - 7U < 2) { uVar37 = *(uint *)(lVar39 + uVar19 + 0x504) & 0xff7f | uVar17; FUN_00002340(lVar39,3,0xd,uVar37 | 8); thunk_FUN_00010a38(1); uVar26 = 0xd; } else { uVar37 = *(byte *)((long)DAT_00012b40 + (ulong)uVar25 * 0x14 + 0x1dd) & 0xfffffff0 | uVar6 | uVar6 << 2; FUN_00002340(lVar39,3,0x10,uVar37 | 0x40); thunk_FUN_00010a38(1); uVar26 = 0x10; } FUN_00002340(lVar39,3,uVar26,uVar37); *(uint *)(s_config_pctl_regs_init_00010b78 + lVar39 + 0xc) = *(uint *)(s_config_pctl_regs_init_00010b78 + lVar39 + 0xc) & 0xfffffffd; if (local_34 == 1) { *(uint *)(lVar39 + 0x10100) = *(uint *)(lVar39 + 0x10100) | 1; *(uint *)(lVar39 + 0x10100) = *(uint *)(lVar39 + 0x10100) | 4; LAB_00007fa8: *(uint *)(lVar39 + 0x10100) = *(uint *)(lVar39 + 0x10100) & 0xfffffffb; } else if (local_34 == 2) goto LAB_00007fa8; if (bVar2) { pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar39 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *(uint *)(lVar39 + 0x10508) = *(uint *)(lVar39 + 0x10508) & 0x7fffffff; FUN_000027e0(lVar39); } pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar39 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; if (bVar3) { *(uint *)(lVar39 + 0x10518) = *(uint *)(lVar39 + 0x10518) | 1; } FUN_000027e0(lVar39); if (bVar4) { *(uint *)(lVar39 + lVar23) = *(uint *)(lVar39 + lVar23) | 1; } pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar39 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *(undefined4 *)(lVar39 + 0x10184) = uVar8; FUN_000027e0(lVar39); FUN_0000cfb4(lVar39,uVar15); *(uint *)(lVar39 + 0x20090) = *(uint *)(lVar39 + 0x20090) | 1; plVar30 = DAT_00012b78 + 0x1a; if (uVar25 < 2) { plVar30 = DAT_00012b78 + 0x19; } lVar20 = *plVar30; *(undefined4 *)(lVar20 + lVar22) = 0x200020; *(undefined4 *)(lVar20 + lVar22) = 0x100010; *(uint *)(lVar36 + 0xb0) = *(uint *)(lVar36 + 0xb0) & 0xffffffdf | (uint)*(byte *)(lVar18 + 1) << 5; *(uint *)(lVar36 + 0xb0) = *(uint *)(lVar36 + 0xb0) & 0xffffffbf; *(uint *)(lVar36 + 0xb0) = *(uint *)(lVar36 + 0xb0) | 0x40; do { } while ((*(uint *)(lVar36 + 0xb4) >> 0x12 & 1) == 0); *(undefined4 *)(lVar20 + lVar22) = 0x100000; *(undefined4 *)(lVar20 + lVar22) = 0x200000; } piVar12 = DAT_00012b40; local_48 = local_48 + 1; local_28 = local_28 + 0x6c; local_40 = local_40 + 0x6c; } while (local_28 != 0x1b0); puVar24 = (uint *)(DAT_00012b78 + 0x1d); puVar29 = puVar31; do { uVar6 = *puVar29; if (uVar6 != 0xf) { uVar15 = 3; if (piVar12[(ulong)uVar6 * 0x1b] != 2) { uVar15 = 0; } FUN_0000430c(DAT_00012b78,uVar6,uVar15,DAT_00012b40,uVar35,uVar34,0x10,1,0x100); } piVar13 = DAT_00012b40; puVar29 = puVar29 + 1; puVar33 = puVar31; } while (puVar24 != puVar29); do { uVar6 = *puVar33; if (uVar6 != 0xf) { uVar15 = 3; if (piVar13[(ulong)uVar6 * 0x1b] != 2) { uVar15 = 0; } FUN_0000430c(DAT_00012b78,uVar6,uVar15,DAT_00012b40,uVar35,uVar34,0x10,1,1); } piVar12 = DAT_00012b40; puVar33 = puVar33 + 1; puVar24 = puVar31; } while (puVar29 != puVar33); do { uVar6 = *puVar24; if (uVar6 != 0xf) { uVar15 = 3; if (piVar12[(ulong)uVar6 * 0x1b] != 2) { uVar15 = 0; } FUN_0000430c(DAT_00012b78,uVar6,uVar15,DAT_00012b40,uVar35,uVar34,8,1,0); } piVar13 = DAT_00012b40; puVar24 = puVar24 + 1; puVar29 = puVar31; } while (puVar24 != puVar33); do { uVar6 = *puVar29; if (uVar6 != 0xf) { uVar15 = 3; if (piVar13[(ulong)uVar6 * 0x1b] != 2) { uVar15 = 0; } FUN_0000430c(DAT_00012b78,uVar6,uVar15,DAT_00012b40,uVar35,uVar34,8,1,0x201); } puVar29 = puVar29 + 1; } while (puVar29 != puVar33); if ((int)DAT_00012b78[0x1f] == 1) { FUN_00002f7c(DAT_00012b40); } puVar24 = puVar31; do { uVar6 = *puVar24; if (uVar6 != 0xf) { uVar19 = (ulong)uVar6; if (param_1 - 0x215 < 0x215) { lVar23 = DAT_00012b78[uVar19 * 4 + 1]; *(uint *)(lVar23 + 4) = *(uint *)(lVar23 + 4) | 0x20; *(uint *)(lVar23 + 0x10) = *(uint *)(lVar23 + 0x10) | 0x200; FUN_00001770(lVar23); *(uint *)(lVar23 + 0x10) = *(uint *)(lVar23 + 0x10) & 0xfffffdff; } if ((int)DAT_00012b78[0x1f] == 1) { FUN_00002384(uVar6,DAT_00012b40); } piVar12 = DAT_00012b40; FUN_00003c48(DAT_00012b40,DAT_00012b78,uVar6,DAT_00012b40[uVar19 * 0x1b],0,0); uVar17 = *(uint *)((ulong)DAT_00011b42 * 4 + 0x11b4c) >> 0xb & 0x7f; if (uVar17 != 0) { if (param_1 < 0x42a) { iVar16 = 0; iVar28 = 0; } else { uVar17 = uVar17 * 2400000; iVar16 = piVar12[uVar19 * 0x1b]; if (iVar16 != 1) { iVar16 = 3; } iVar28 = 1; } lVar23 = DAT_00012b78[uVar19 * 4 + 1]; if (uVar35 == 1) { *(uint *)(lVar23 + 0xa48) = *(uint *)(lVar23 + 0xa48) & 0xffff3fff | iVar16 << 0xe; if (iVar28 != 0) goto LAB_00008a4c; LAB_00008688: *(uint *)(lVar23 + 0xa48) = *(uint *)(lVar23 + 0xa48) & 0xfffdffff | iVar28 << 0x11; } else if (uVar35 == 2) { *(uint *)(lVar23 + 0xa58) = *(uint *)(lVar23 + 0xa58) & 0xffff3fff | iVar16 << 0xe; if (iVar28 != 0) { LAB_00008a4c: *(uint *)(lVar23 + 0xa28) = *(uint *)(lVar23 + 0xa28) & 0x80000000 | uVar17; if (uVar35 == 1) goto LAB_00008688; if (uVar35 != 2) goto LAB_00008ab4; } *(uint *)(lVar23 + 0xa58) = *(uint *)(lVar23 + 0xa58) & 0xfffdffff | iVar28 << 0x11; } else { *(uint *)(lVar23 + 0xa24) = *(uint *)(lVar23 + 0xa24) & 0xff3fffff | iVar16 << 0x16; if (iVar28 != 0) goto LAB_00008a4c; LAB_00008ab4: *(uint *)(lVar23 + 0xa28) = *(uint *)(lVar23 + 0xa28) & 0x7fffffff | iVar28 << 0x1f; } } FUN_0000d1d0(DAT_00012b78,uVar6,DAT_00012b40); } puVar24 = puVar24 + 1; if (puVar24 == puVar33) { if (iVar7 == 9) { FUN_000027a0(); } plVar14 = DAT_00012b78; lVar18 = uVar34 * 0x850; lVar20 = DAT_00012b78[1]; uVar35 = *(uint *)(lVar20 + 0xb8) >> 0x1e; uVar17 = FUN_00010a60(); lVar23 = plVar14[0x11]; uVar6 = *(uint *)(lVar23 + 0x594); *(undefined4 *)(lVar23 + 0x594) = 0xc00040; puVar24 = (uint *)plVar14[2]; if ((puVar24[0xc0] & 1) == 0) { uVar37 = *puVar24; uVar19 = (ulong)(puVar24[1] >> 6); uVar10 = puVar24[1]; uVar25 = puVar24[2]; } else { uVar37 = puVar24[8]; uVar19 = (ulong)(puVar24[9] >> 6) & 0xfc00000000000007; uVar10 = puVar24[9]; uVar25 = puVar24[10]; } uVar10 = (uVar10 & 0x3f) << (uVar19 & 7); *(uint *)(lVar23 + 0x594) = uVar6 & 0xc0 | 0xc00000; uVar6 = 0; if (uVar10 != 0) { uVar6 = (((uVar25 & 0xffff) / 0xfff5 + (uVar37 & 0x3ff)) * (uVar17 / 1000000) * 2) / uVar10; } puVar29 = &DAT_00010ba8; *(uint *)(uVar34 * 0x850 + 0x12cfc) = uVar6 >> 1; uVar17 = 0x400; if (*DAT_00012b40 != 1) { uVar17 = 0xc00; } puVar27 = (uint *)(lVar18 + 0x12d00); do { uVar25 = *puVar29; uVar37 = puVar29[1]; *puVar27 = uVar25; puVar27[1] = uVar37; uVar10 = puVar29[2]; puVar27[2] = uVar10; if ((uVar35 != 1) && (uVar25 = uVar37, uVar35 != 2)) { uVar25 = uVar10; } if (uVar25 == 0xffffffff) { puVar27[3] = 0; } else { uVar37 = *(uint *)(lVar20 + (ulong)uVar25); puVar27[3] = uVar37; if ((0x429 < uVar6 >> 1) && ((uVar25 & 0xffffffef) == 0xa48)) { puVar27[3] = uVar37 | uVar17; } } puVar29 = puVar29 + 3; puVar27 = puVar27 + 4; } while (puVar29 != (uint *)&switchD_00000dec::switchdataD_00010c2c); lVar36 = uVar34 * 0x850; *(undefined4 *)(lVar36 + 0x12db0) = 0xffffffff; uVar6 = *(uint *)(lVar23 + 0x594); *(undefined4 *)(lVar23 + 0x594) = 0xc00040; if ((puVar24[0xc0] & 1) == 0) { *(uint *)(lVar36 + 0x12df0) = *puVar24; *(uint *)(lVar36 + 0x12df4) = puVar24[1]; *(uint *)(lVar36 + 0x12df8) = puVar24[2]; *(uint *)(lVar36 + 0x12dfc) = puVar24[3]; *(uint *)(lVar36 + 0x12e00) = puVar24[4]; uVar35 = puVar24[6]; *(uint *)(lVar36 + 0x12e04) = puVar24[5]; } else { *(uint *)(lVar36 + 0x12df0) = puVar24[8]; *(uint *)(lVar36 + 0x12df4) = puVar24[9]; *(uint *)(lVar36 + 0x12df8) = puVar24[10]; *(uint *)(lVar36 + 0x12dfc) = puVar24[0xb]; *(uint *)(lVar36 + 0x12e00) = puVar24[0xc]; uVar35 = puVar24[0xe]; *(uint *)(lVar36 + 0x12e04) = puVar24[0xd]; } *(uint *)(lVar36 + 0x12e08) = uVar35; *(uint *)(lVar23 + 0x594) = uVar6 & 0xc0 | 0xc00000; piVar12 = DAT_00012b40; lVar23 = uVar34 * 0x850; *(uint *)(lVar23 + 0x12e1c) = *(uint *)(lVar20 + 4) & 0x400000; *(int *)(lVar23 + 0x12e20) = piVar12[0x91]; *(int *)(lVar23 + 0x12e38) = piVar12[0x71]; *(int *)(lVar23 + 0x12e3c) = piVar12[0x72]; *(int *)(lVar23 + 0x12e40) = piVar12[0x73]; *(int *)(lVar23 + 0x12e44) = piVar12[0x74]; FUN_00000ac8(lVar18 + 0x12e48,piVar12 + 0x75,0x50); puVar24 = puVar31; do { uVar6 = *puVar24; if (uVar6 != 0xf) { uVar19 = (ulong)uVar6; *(uint *)((uVar34 * 0x214 + uVar19) * 4 + 0x12e0c) = (piVar12[uVar19 + 0xb6] & 0xffU) << 8 | (uint)*(byte *)(piVar12 + uVar19 + 0xb2); if (param_2 == 0) { lVar23 = uVar19 * 0x17c; lVar20 = DAT_00012b78[uVar19 * 4 + 1]; *(uint *)(lVar23 + 0x12e98) = *(uint *)(lVar20 + 0xb4) >> 0x15; *(uint *)(lVar23 + 0x136e8) = *(uint *)(lVar20 + 0xb4) >> 0x15; *(uint *)(lVar23 + 0x13f38) = *(uint *)(lVar20 + 0xb4) >> 0x15; *(uint *)(lVar23 + 0x14788) = *(uint *)(lVar20 + 0xb4) >> 0x15; } FUN_000072d8(DAT_00012b78,uVar6,lVar18 + 0x12cf8,DAT_00012b40); } piVar13 = DAT_00012b40; puVar24 = puVar24 + 1; } while (puVar24 != puVar33); do { if (*puVar31 != 0xf) { uVar19 = (ulong)*puVar31; lVar23 = uVar34 * 0x850 + uVar19 * 0x30; *(int *)(lVar23 + 0x13488) = piVar13[uVar19 * 0x1b + 0xf]; *(int *)(lVar23 + 0x1348c) = piVar13[uVar19 * 0x1b + 0x10]; *(int *)(lVar23 + 0x13490) = piVar13[uVar19 * 0x1b + 0x11]; *(int *)(lVar23 + 79000) = piVar13[uVar19 * 0x1b + 0x13]; *(int *)(lVar23 + 0x1349c) = piVar13[uVar19 * 0x1b + 0x14]; *(int *)(lVar23 + 0x13494) = piVar13[uVar19 * 0x1b + 0x12]; *(int *)(lVar23 + 0x134a0) = piVar13[uVar19 * 0x1b + 0x15]; *(int *)(lVar23 + 0x134a4) = piVar13[uVar19 * 0x1b + 0x16]; *(int *)(lVar23 + 0x134a8) = piVar13[uVar19 * 0x1b + 0x17]; iVar7 = piVar13[uVar19 * 0x1b + 0x19]; *(int *)(lVar23 + 0x134ac) = piVar13[uVar19 * 0x1b + 0x18]; *(int *)(lVar23 + 0x134b0) = iVar7; } puVar31 = puVar31 + 1; } while (puVar31 != puVar33); *(undefined4 *)(uVar34 * 0x850 + 0x12cf8) = 0xfead0004; return; } } while( true ); } // FUN_00008b40 @ 00008b40 undefined8 FUN_00008b40(long param_1,long param_2,int param_3) { char *pcVar1; uint uVar2; long lVar3; int iVar4; uint uVar5; undefined4 uVar6; uint uVar7; long *plVar8; uint uVar9; undefined8 uVar10; ulong uVar11; long lVar12; long lVar13; long lVar14; uint *puVar15; uint *puVar16; ulong uVar17; uint *puVar18; long lVar19; uint *puVar20; long lVar21; uint local_30; puVar16 = (uint *)(param_1 + 0xd8); iVar4 = *(int *)(param_2 + 0x1b4); FUN_0000bf30(param_1,param_2,1); puVar20 = puVar16; do { uVar5 = *puVar20; if (uVar5 != 0xf) { FUN_0000186c(param_1,uVar5,*(undefined4 *)(param_1 + 0xfc),0x18); lVar14 = (ulong)uVar5 * 0x20; lVar19 = *(long *)(param_1 + lVar14 + 0x10); lVar21 = *(long *)(param_1 + lVar14); plVar8 = (long *)(param_1 + 200); if (1 < uVar5) { plVar8 = (long *)(param_1 + 0xd0); } lVar3 = *plVar8; *(undefined4 *)(lVar19 + 0xa00) = 0x160016; thunk_FUN_00010a38(10); uVar2 = uVar5 & 1; lVar13 = *(long *)(param_1 + 0x88); *(undefined4 *)(lVar19 + 0xa00) = 0x100000; lVar12 = (ulong)(uVar5 + 0x14 + (uVar5 >> 1)) + 0x280; uVar17 = (ulong)(uVar2 * 4 + 0x130); uVar9 = 1 << (ulong)(uVar2 * -4 + 6 & 0x1f); uVar7 = uVar9 << 0x10; *(uint *)(lVar13 + lVar12 * 4) = uVar9 | uVar7; *(undefined4 *)(lVar3 + uVar17) = 0x80000; *(undefined4 *)(lVar19 + 0xa00) = 0x40000; thunk_FUN_00010a38(5); *(undefined4 *)(lVar3 + uVar17) = 0x80008; thunk_FUN_00010a38(5); uVar10 = *(undefined8 *)(param_1 + 0x88); *(undefined4 *)(lVar19 + 0xa00) = 0x20000; FUN_0000180c(uVar10,uVar5,1); thunk_FUN_00010a38(5); *(uint *)(*(long *)(param_1 + 0x88) + lVar12 * 4) = uVar7; thunk_FUN_00010a38(5); *(undefined4 *)(lVar3 + uVar17) = 0x80000; *(undefined4 *)(lVar19 + 0xa00) = 0x20002; FUN_00006c04(param_1,uVar5,param_2,1,0); lVar13 = *(long *)(param_1 + 0x88); local_30 = 0x80000; uVar9 = 3; if (uVar2 != 0) { uVar9 = 0; } *(undefined4 *)(lVar19 + 0xa00) = 0x20000; *(undefined4 *)(lVar3 + uVar17) = 0x80008; if (uVar2 != 0) { local_30 = 0x10000; } *(uint *)(lVar13 + lVar12 * 4) = 1 << (ulong)uVar9 | local_30; thunk_FUN_00010a38(10); *(uint *)(*(long *)(param_1 + 0x88) + lVar12 * 4) = local_30; thunk_FUN_00010a38(0x32); FUN_00005f90(param_1,uVar5,param_2,param_3); *(uint *)(lVar21 + 0xd0c) = (*(uint *)(param_1 + 0xe8) & 0xff) << 0x10 | *(uint *)(param_1 + 0xec) & 0x1f | *(uint *)(lVar21 + 0xd0c) & 0xff00ffe0; *(uint *)(lVar21 + 0x10280) = *(uint *)(lVar21 + 0x10280) | 0x80000000; *(uint *)(lVar21 + 0x20004) = *(uint *)(lVar21 + 0x20004) | 0x10000; if (*(int *)(param_2 + 0x1b4) == 9) { lVar12 = *(long *)(param_1 + 0xd0); *(uint *)(lVar21 + 0x20000) = *(uint *)(lVar21 + 0x20000) | 1; *(uint *)(lVar21 + 0x20004) = *(uint *)(lVar21 + 0x20004) | 0x2000; lVar19 = *(long *)(param_1 + 200); if (1 < uVar5) { lVar19 = lVar12; } *(undefined4 *)(lVar19 + (ulong)(uVar2 * 0x30)) = 0x10001000; } *(uint *)(lVar21 + 0x10008) = *(uint *)(lVar21 + 0x10008) & 0xfffffffc; FUN_000033f4(param_1,uVar5,param_2,0,0,0); lVar19 = param_2 + (ulong)uVar5 * 0x6c; lVar12 = (ulong)uVar5 * 0x6c; uVar2 = (uint)(*(int *)(lVar19 + 0x18) != *(int *)(lVar19 + 0x1c) || *(int *)(param_2 + lVar12) == 1); if (*(int *)(param_2 + 0x1b4) == 9) { uVar9 = 6; if (uVar2 != 0) { uVar9 = 2; } } else { uVar9 = (uVar2 ^ 1) << 2; } lVar14 = *(long *)(param_1 + lVar14); lVar19 = param_2 + (ulong)uVar5 * 0x6c; uVar6 = *(undefined4 *)(&DAT_000119f8 + (ulong)uVar9 * 0x28); *(uint *)(lVar19 + 0x38) = uVar9; *(undefined4 *)(lVar14 + 0x30004) = uVar6; FUN_00001200(lVar14 + 0x3000c,uVar9 * 0x28 + 0x119fc,0x24); uVar2 = *(uint *)(lVar19 + 0x18); if (*(uint *)(lVar19 + 0x18) < *(uint *)(lVar19 + 0x1c)) { uVar2 = *(uint *)(lVar19 + 0x1c); } if (0x11 < uVar2) { *(uint *)(lVar14 + 0x3001c) = (*(uint *)(lVar14 + 0x3001c) & 0x1f) << 0x18 | *(uint *)(lVar14 + 0x3001c) & 0xe0ffffff ; } for (uVar9 = 0x12; uVar2 < uVar9; uVar9 = uVar9 - 1) { lVar19 = ((ulong)(0x12 - uVar9) & 4) + 0x3001c; *(uint *)(lVar14 + lVar19) = 0x1f << (ulong)((uVar9 - 0x13 & 3) << 3) | *(uint *)(lVar14 + lVar19); } if (*(int *)(param_2 + lVar12) == 1) { *(uint *)(lVar14 + 0x30004) = *(uint *)(lVar14 + 0x30004) | 0x3f; } else { FUN_0000cb40(param_1,uVar5,*(undefined4 *)(param_2 + lVar12 + 4), *(undefined4 *)(param_2 + lVar12 + 8)); } lVar19 = param_2 + (ulong)uVar5 * 0x6c; if ((*(int *)(lVar19 + 0x14) != 0) && (uVar2 = *(uint *)(lVar19 + 0x18), 0xd < uVar2)) { *(uint *)(lVar14 + 0x30030) = uVar2 - 0xd; } FUN_0000180c(*(undefined8 *)(param_1 + 0x88),uVar5,0); *(uint *)(s_config_pctl_regs_init_00010b78 + lVar21 + 0xc) = *(uint *)(s_config_pctl_regs_init_00010b78 + lVar21 + 0xc) | 2; *(uint *)(lVar21 + 0x20090) = *(uint *)(lVar21 + 0x20090) & 0xfffffffe; pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar21 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *(uint *)(lVar21 + 0x10510) = *(uint *)(lVar21 + 0x10510) & 0xfffffffe; FUN_000027e0(lVar21); *(uint *)(lVar21 + 0x20090) = *(uint *)(lVar21 + 0x20090) | 1; *(uint *)(s_config_pctl_regs_init_00010b78 + lVar21 + 0xc) = *(uint *)(s_config_pctl_regs_init_00010b78 + lVar21 + 0xc) & 0xfffffffd; FUN_00006c04(param_1,uVar5,param_2,0,param_3); if (*(int *)(param_2 + 0x1b4) == 9) { *(uint *)(lVar21 + 0x10080) = *(uint *)(lVar21 + 0x10080) | 8; } } puVar20 = puVar20 + 1; } while ((uint *)(param_1 + 0xe8) != puVar20); puVar18 = puVar16; if (param_3 != 0) { FUN_00005f8c(&DAT_00011b38); } do { if (*puVar18 != 0xf) { lVar14 = (ulong)*puVar18 * 0x20; lVar19 = *(long *)(param_1 + lVar14); lVar14 = *(long *)(param_1 + lVar14 + 8); *(uint *)(lVar14 + 0xb0) = *(uint *)(lVar14 + 0xb0) & 0xffffffdf; pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar19 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *(uint *)(lVar19 + 0x10510) = *(uint *)(lVar19 + 0x10510) | 0x20; FUN_000027e0(); do { } while ((*(uint *)(lVar19 + 0x10514) & 1) == 0); } puVar18 = puVar18 + 1; puVar15 = puVar16; } while (puVar20 != puVar18); do { if (*puVar15 != 0xf) { lVar14 = *(long *)(param_1 + (ulong)*puVar15 * 0x20); pcVar1 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar14 + 8; pcVar1[0] = '\0'; pcVar1[1] = '\0'; pcVar1[2] = '\0'; pcVar1[3] = '\0'; *(uint *)(lVar14 + 0x10510) = *(uint *)(lVar14 + 0x10510) & 0xffffffdf; *(uint *)(lVar14 + 0x10510) = *(uint *)(lVar14 + 0x10510) | 1; FUN_000027e0(); } puVar15 = puVar15 + 1; } while (puVar18 != puVar15); if (iVar4 == 9) { thunk_FUN_00010a38(0x8a2); } puVar20 = puVar16; do { uVar5 = *puVar20; uVar17 = (ulong)uVar5; if (uVar5 != 0xf) { lVar14 = param_1 + uVar17 * 0x20; uVar6 = *(undefined4 *)(param_1 + 0xfc); lVar19 = *(long *)(param_1 + uVar17 * 0x20); plVar8 = (long *)(param_1 + 200); if (1 < uVar5) { plVar8 = (long *)(param_1 + 0xd0); } lVar21 = *plVar8; if (*(int *)(param_2 + 0x1b4) == 9) { FUN_00001770(*(undefined8 *)(lVar14 + 8)); uVar11 = (ulong)((uVar5 & 1) * 0x30 + 8); *(undefined4 *)(lVar21 + uVar11) = 0xff00ff; *(undefined4 *)(lVar21 + uVar11) = 0xff0000; thunk_FUN_00010a38(2); FUN_00006d90(lVar19,param_2 + uVar17 * 0x14 + 0x1d4); *(uint *)(lVar19 + 0x10080) = *(uint *)(lVar19 + 0x10080) & 0xfffffff7; *(uint *)(lVar19 + 0x10280) = *(uint *)(lVar19 + 0x10280) | 0x80000000; FUN_0000174c(lVar19); *(uint *)(lVar19 + 0x10280) = *(uint *)(lVar19 + 0x10280) & 0x7fffffff; } do { } while ((*(uint *)(lVar19 + 0x10014) & 7) != 1); if ((*(int *)(param_2 + 0x1b4) - 7U < 2) && (*(int *)(param_1 + 0x100) == 0)) { uVar5 = *(uint *)(lVar19 + 0x508); FUN_00002340(lVar19,1,0xb); FUN_00002340(lVar19,2,0xb,uVar5 >> 0x10 & 0xffffff8f); FUN_00002340(lVar19,3,0xc,uVar5 & 0xffff); uVar5 = *(uint *)(lVar19 + 0x50c); if (param_3 != 0) { FUN_00002340(lVar19,3,0xe,uVar5 & 0xffff); } FUN_00002340(lVar19,3,0x16,uVar5 >> 0x10); *(uint *)(lVar19 + 0x10280) = *(uint *)(lVar19 + 0x10280) | 0x80000000; FUN_0000174c(lVar19); *(uint *)(lVar19 + 0x10280) = *(uint *)(lVar19 + 0x10280) & 0x7fffffff; } lVar14 = *(long *)(lVar14 + 8); *(uint *)(lVar14 + 0x3d0) = *(uint *)(lVar14 + 0x3d0) & 0xffff0000 | 7; *(uint *)(lVar14 + 0x3c8) = *(uint *)(lVar14 + 0x3c8) & 0xfffbfff3 | 0x40004; *(uint *)(lVar14 + 0x3c8) = *(uint *)(lVar14 + 0x3c8) | 2; do { } while ((*(uint *)(lVar14 + 0x3cc) & 1) == 0); *(uint *)(lVar14 + 0x3c8) = *(uint *)(lVar14 + 0x3c8) & 0xfffbfffd; FUN_000029f4(param_1,uVar17,param_2 + 0x1b4,uVar6,*(int *)(param_2 + 0x1b0) << 1); } puVar20 = puVar20 + 1; } while (puVar20 != puVar18); FUN_0000bf30(param_1,param_2,0); do { uVar5 = *puVar16; if (uVar5 != 0xf) { plVar8 = (long *)(param_1 + 200); if (1 < uVar5) { plVar8 = (long *)(param_1 + 0xd0); } lVar14 = *plVar8; lVar12 = *(long *)(param_1 + (ulong)uVar5 * 0x20 + 8); lVar21 = FUN_0000337c(*(undefined4 *)(param_2 + 0x1b4), *(undefined4 *)(*(long *)(param_2 + 0x228) + 0x2c)); lVar19 = (ulong)((uVar5 & 1) + 0x4c) * 4; *(undefined4 *)(lVar14 + lVar19) = 0x200020; *(undefined4 *)(lVar14 + lVar19) = 0x100010; *(uint *)(lVar12 + 0xb0) = *(uint *)(lVar12 + 0xb0) & 0xffffff9f | (uint)*(byte *)(lVar21 + 1) << 5; *(uint *)(lVar12 + 0xb0) = *(uint *)(lVar12 + 0xb0) | 0x40; do { } while ((*(uint *)(lVar12 + 0xb4) >> 0x12 & 1) == 0); *(undefined4 *)(lVar14 + lVar19) = 0x100000; *(undefined4 *)(lVar14 + lVar19) = 0x200000; } puVar16 = puVar16 + 1; } while (puVar16 != puVar18); return 0; } // FUN_000093bc @ 000093bc undefined4 FUN_000093bc(void) { return *(undefined4 *)(&DAT_00011b38 + (ulong)DAT_00011b42 * 4); } // FUN_000093d4 @ 000093d4 undefined8 FUN_000093d4(undefined4 *param_1,undefined4 *param_2,uint *param_3,int param_4,ulong param_5) { int iVar1; uint uVar2; uint uVar3; undefined4 uVar4; long lVar5; long lVar6; lVar5 = (param_5 & 0xffffffff) * 0x20; lVar6 = *(long *)(DAT_00012b78 + lVar5); iVar1 = *(int *)(*DAT_00012b48 + 0x1b4); if (param_4 == 0) { *param_3 = (uint)*(ushort *) (DAT_00012b58 + ((ulong)*(uint *)(*(long *)(DAT_00012b78 + lVar5 + 8) + 0x3ec) & 0x3f) * 2); if (iVar1 == 7) { *param_2 = 699; *param_1 = 0xa6; } else { if (iVar1 == 8) { uVar4 = 600; } else { uVar4 = 500; } *param_2 = uVar4; *param_1 = 0xa6; } } else { if (iVar1 == 9) { *param_3 = (uint)*(byte *)(*DAT_00012b48 + (param_5 & 0xffffffff) * 0x14 + 0x1db) * 5 + 100; *param_1 = 100; uVar4 = 0x2df; } else { uVar2 = *(uint *)(lVar6 + ((ulong)*(uint *)(lVar6 + 0x10008) & 3) * 0x100000 + 0x50c); uVar3 = uVar2 >> 6; uVar2 = uVar2 & 0x3f; if (iVar1 == 7) { *param_3 = uVar2 * 4 + 100 + (uVar3 & 1) * 0xb3; *param_1 = 100; uVar4 = 0x1a4; } else { *param_3 = uVar2 * 6 + 0x96 + (uVar3 & 1) * 0x78; *param_1 = 0x96; uVar4 = 0x275; } } *param_2 = uVar4; } return 0; } // FUN_00009508 @ 00009508 uint FUN_00009508(uint param_1,uint param_2,int param_3,ulong param_4) { undefined4 uVar1; long lVar2; long lVar3; int iVar4; uint uVar5; undefined8 uVar6; uint local_4; if (param_3 == 0) { lVar2 = 0; lVar3 = *(long *)(DAT_00012b78 + (param_4 & 0xffffffff) * 0x20 + 8); if (699 < param_1) { param_1 = 699; } local_4 = param_1; if (param_1 < 0xa6) { local_4 = 0xa6; } do { uVar5 = (uint)lVar2; if (local_4 <= *(ushort *)(DAT_00012b58 + lVar2 * 2)) goto LAB_0000957c; lVar2 = lVar2 + 1; } while (lVar2 != 0x40); uVar5 = 0; LAB_0000957c: *(uint *)(lVar3 + 0x3ec) = *(uint *)(lVar3 + 0x3ec) & 0xffffc0c0 | uVar5 | uVar5 << 8; FUN_00001770(lVar3); local_4 = (uint)*(ushort *)(DAT_00012b58 + (ulong)uVar5 * 2); } else { uVar6 = *(undefined8 *)(DAT_00012b78 + (param_4 & 0xffffffff) * 0x20); local_4 = param_1; uVar1 = FUN_00002038(&local_4,*(undefined4 *)(*DAT_00012b48 + 0x1b4)); if (param_2 == 3) { iVar4 = 3; } else { iVar4 = 1 << (ulong)(param_2 & 0x1f); } FUN_00002340(uVar6,iVar4,0xe,uVar1); FUN_00002340(uVar6,iVar4,0xf,uVar1); } return local_4; } // FUN_00009628 @ 00009628 undefined8 FUN_00009628(int *param_1,uint *param_2,int param_3,uint param_4,int param_5,ulong param_6) { uint uVar1; uint uVar2; uint uVar3; int iVar4; uint uVar5; uint uVar6; uint uVar7; uint uVar8; long lVar9; lVar9 = *(long *)(DAT_00012b78 + (param_6 & 0xffffffff) * 0x20 + 8); if (param_4 - 0x11 < 0xffffffee) { return 0xffffffff; } uVar5 = *(uint *)(*(long *)(DAT_00012b78 + 8) + 0xb4) & 0x7ff; if ((*(uint *)(*(long *)(DAT_00012b78 + 8) + 0xb0) & 1) == 0) { uVar5 = uVar5 << 2; } else { uVar5 = uVar5 << 3; } uVar5 = uVar5 / 10; if (param_5 == 0) { if (param_4 != 0xffffffff) { uVar6 = (param_4 & 3) << 3; uVar7 = (param_4 & 4) + 0x978 + (param_4 >> 3) * 0xc; LAB_000096f4: uVar6 = *(uint *)(lVar9 + (ulong)uVar7) >> (ulong)(uVar6 & 0x1f); if (param_5 == 0) { uVar6 = uVar6 & 0x7f; iVar4 = 0x6f; } else { uVar6 = uVar6 & 0x3ff; iVar4 = 0x3ff; } *param_2 = iVar4 - uVar6; *param_1 = -uVar6; goto LAB_000097a4; } uVar6 = 0; uVar8 = 0; uVar7 = 0x3ff; do { uVar1 = uVar6 & 4; uVar2 = uVar6 >> 3; uVar3 = uVar6 & 3; uVar6 = uVar6 + 1; uVar1 = *(uint *)(lVar9 + (ulong)(uVar1 + 0x978 + uVar2 * 0xc)) >> (ulong)(uVar3 << 3) & 0x7f; if (uVar1 < uVar7) { uVar7 = uVar1; } if (uVar8 < uVar1) { uVar8 = uVar1; } } while (uVar6 != 0x10); } else { if (param_4 != 0xffffffff) { uVar6 = (param_4 >> 3) << 4; iVar4 = (param_4 & 7) * 0xc; uVar7 = iVar4 + 0x410; if (param_3 == 0) { uVar7 = iVar4 + 0x1f0; } goto LAB_000096f4; } uVar8 = 0; uVar7 = 0x3ff; uVar6 = 0; do { uVar2 = uVar6 / 9; uVar1 = uVar6 % 9; uVar6 = uVar6 + 1; iVar4 = uVar1 * 0xc; uVar1 = iVar4 + 0x410; if (param_3 == 0) { uVar1 = iVar4 + 0x1f0; } uVar1 = *(uint *)(lVar9 + (ulong)uVar1) >> (ulong)((uVar2 & 1) << 4) & 0x3ff; if (uVar1 < uVar7) { uVar7 = uVar1; } if (uVar8 < uVar1) { uVar8 = uVar1; } } while (uVar6 != 0x12); } *param_1 = -uVar7; if (param_5 == 0) { iVar4 = 0x6f; } else { iVar4 = 0x3ff; } *param_2 = iVar4 - uVar8; LAB_000097a4: iVar4 = -uVar5; if ((int)-uVar5 < *param_1) { iVar4 = *param_1; } *param_1 = iVar4; uVar6 = *param_2; if ((int)uVar5 < (int)*param_2) { uVar6 = uVar5; } *param_2 = uVar6; return 0; } // FUN_000097f4 @ 000097f4 undefined8 FUN_000097f4(int param_1,uint param_2,uint param_3,uint param_4,uint param_5) { uint uVar1; short sVar2; uint uVar3; ulong uVar4; uint uVar5; long lVar6; undefined2 *puVar7; ulong uVar9; uint uVar10; uint uVar11; int iVar12; long lVar13; undefined2 *puVar8; lVar13 = *(long *)(DAT_00012b78 + (ulong)param_5 * 0x20 + 8); if (((DAT_00012c3d != param_2) || (DAT_00012cf4 != param_4)) || (param_5 != DAT_00012c3c)) { lVar6 = 0; do { *(undefined2 *)(lVar6 + 0x12c40) = 0; lVar6 = lVar6 + 2; } while (lVar6 != 0x5a); puVar7 = (undefined2 *)&DAT_00012c9a; do { puVar8 = puVar7 + 1; *puVar7 = 0; puVar7 = puVar8; } while (puVar8 != (undefined2 *)&DAT_00012cf4); DAT_00012c3d = (byte)param_2; DAT_00012cf4 = (byte)param_4; DAT_00012c3c = (byte)param_5; } uVar9 = (ulong)param_2; if (param_4 == 0) { if (param_3 == 0xffffffff) goto LAB_000098a8; uVar11 = (param_3 & 3) << 3; uVar10 = (param_3 & 4) + 0x978 + (param_3 >> 3) * 0xc; uVar5 = 0x7f; } else { *(uint *)(lVar13 + 4) = *(uint *)(lVar13 + 4) | 0x20; if (param_3 == 0xffffffff) { LAB_000098a8: iVar12 = 0; uVar10 = 0; do { if (param_4 == 0) { if (0xf < uVar10) goto LAB_000098d4; uVar11 = (uVar10 & 3) << 3; uVar5 = 0x7f; uVar3 = (uVar10 & 4) + 0x978 + (uVar10 >> 3) * 0xc; } else { if (0x11 < uVar10) goto LAB_000098d4; uVar11 = uVar10 / 9 << 4; uVar5 = (uVar10 % 9 + 0x220) * 4; uVar3 = uVar5 + 0x60; if (param_2 == 0) { uVar3 = uVar5; } uVar5 = 0x3ff; } uVar4 = (ulong)uVar3; uVar10 = uVar10 + 1; uVar3 = ((*(uint *)(lVar13 + uVar4) >> (ulong)(uVar11 & 0x1f) & uVar5) - (int)*(short *)(uVar9 * 0x5a + 0x12c40)) + param_1; if ((int)uVar3 < 0 || (int)uVar5 < (int)uVar3) { iVar12 = -1; } if ((int)uVar3 < 0) { uVar3 = 0; } uVar1 = uVar5; if ((int)uVar3 < (int)uVar5) { uVar1 = uVar3; } *(uint *)(lVar13 + uVar4) = *(uint *)(lVar13 + uVar4) & (uVar5 << (ulong)(uVar11 & 0x1f) ^ 0xffffffff) | uVar1 << (ulong)(uVar11 & 0x1f); } while( true ); } iVar12 = (param_3 & 7) * 4; uVar11 = (param_3 >> 3) << 4; uVar10 = iVar12 + 0x8e0; if (param_2 == 0) { uVar10 = iVar12 + 0x880; } uVar5 = 0x3ff; } uVar4 = (ulong)uVar10; uVar10 = *(uint *)(lVar13 + uVar4); lVar6 = uVar9 * 0x2d + (ulong)param_3; sVar2 = *(short *)(lVar6 * 2 + 0x12c40); *(short *)(lVar6 * 2 + 0x12c40) = (short)param_1; param_1 = ((uVar10 >> (ulong)(uVar11 & 0x1f) & uVar5) - (int)sVar2) + param_1; if (param_1 < 0) { param_1 = 0; } if ((int)uVar5 < param_1) { return 0xffffffff; } *(uint *)(lVar13 + uVar4) = *(uint *)(lVar13 + uVar4) & (uVar5 << (ulong)(uVar11 & 0x1f) ^ 0xffffffff) | param_1 << (ulong)(uVar11 & 0x1f); goto LAB_00009928; LAB_000098d4: *(short *)(uVar9 * 0x5a + 0x12c40) = (short)param_1; if (iVar12 != 0) { return 0xffffffff; } LAB_00009928: if (param_4 == 0) { FUN_00001770(lVar13); } else { *(uint *)(lVar13 + 0x10) = *(uint *)(lVar13 + 0x10) | 0x200; FUN_00001770(lVar13); *(uint *)(lVar13 + 0x10) = *(uint *)(lVar13 + 0x10) & 0xfffffdff; } return 0; } // FUN_00009a68 @ 00009a68 undefined8 FUN_00009a68(undefined8 param_1) { FUN_00000ac8(DAT_00012b70,param_1,0x20); return 0; } // FUN_00009a90 @ 00009a90 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ /* WARNING: Restarted to delay deadcode elimination for space: ram */ undefined8 FUN_00009a90(void) { byte *pbVar1; byte bVar2; undefined1 uVar3; long *plVar4; long *plVar5; char cVar6; char cVar7; byte bVar8; ushort uVar9; int iVar10; uint uVar11; uint uVar12; int iVar13; undefined4 uVar14; uint uVar15; uint uVar16; ulong uVar17; int *piVar18; char *pcVar19; uint *puVar20; long lVar21; uint *puVar22; uint uVar23; long lVar24; ulong uVar25; undefined2 *puVar26; ulong uVar28; ulong extraout_x1; uint *puVar29; undefined *puVar30; undefined1 *puVar31; uint uVar32; uint uVar33; uint uVar34; undefined8 uVar35; uint *puVar36; int iVar37; long lVar38; byte *pbVar39; long lVar40; uint *puVar41; byte *pbVar42; undefined1 *local_80; long *local_60; uint *local_58; ulong local_50; uint *local_40; byte local_30 [8]; byte local_28 [4]; uint local_24; uint local_20; undefined4 local_1c; uint local_18; uint local_14; undefined4 local_10; undefined2 *puVar27; local_28[1] = 1; local_28[2] = 2; local_28[3] = 3; local_28[0] = 0; FUN_0000d390(DAT_00012b78); uVar17 = FUN_000009f0(); if ((uVar17 & 0xf0) == 0x30) { iVar10 = 7; FUN_0001053c(s_Class_B_0001109f); do { puVar22 = (uint *)FUN_00002110(iVar10); if ((puVar22 != (uint *)0x0) && (0x738 < (*puVar22 & 0xfff))) { *puVar22 = *puVar22 & 0xfffff000 | 0x738; } iVar10 = iVar10 + 1; } while (iVar10 != 10); } plVar5 = DAT_00012b78; _DAT_00014f74 = 0; if ((((((DAT_00011b3c == 5) && (DAT_00011b43 == '\b')) && (DAT_00011b51 == '\r')) && (((DAT_00011b59 == '\r' && (DAT_00011b53 == '\r')) && ((DAT_00011b42 != 0 && ((DAT_00011b50 != '\0' && (DAT_00011b58 != '\0')))))))) && (DAT_00011b52 != '\0')) && ((DAT_00011b5a != 0 && (DAT_00011b5c != 0)))) { if ((*(uint *)(*DAT_00012b78 + 0x10014) & 7) != 0) { FUN_0001053c(s_pd_pu_vd_ddr_000110bb); FUN_0000d328(plVar5); } plVar5 = DAT_00012b78; local_30[0] = 7; local_30[1] = 8; lVar21 = (ulong)DAT_00011b42 * 4; uVar16 = (&DAT_00011b3c)[DAT_00011b42]; *(uint *)(DAT_00012b78 + 0x1d) = uVar16 >> 0x10; *(uint *)((long)plVar5 + 0xec) = uVar16 & 0xffff; uVar16 = *(uint *)(&DAT_00011b44 + lVar21); *(uint *)(plVar5 + 0x1e) = uVar16 >> 0x1a & 1; *(uint *)((long)plVar5 + 0xf4) = uVar16 >> 0x1b & 1; *(uint *)(plVar5 + 0x1f) = (uint)(((ulong)uVar16 ^ 0x80000) >> 0x13) & 1; local_30[2] = 9; FUN_0000bf7c(); plVar5 = DAT_00012b78; uVar16 = *(uint *)(lVar21 + 0x11b4c) >> 5 & 0xf; if (uVar16 == 8) { local_30[1] = 7; local_30[0] = (byte)uVar16; } else if (uVar16 == 9) { local_30[1] = 7; local_30[2] = 8; local_30[0] = (byte)uVar16; } lVar24 = DAT_00012b78[0x18]; if (*(int *)(lVar24 + 0x84) == 0x2468ace) { *(undefined4 *)(DAT_00012b78 + 0x20) = 1; *(uint *)((long)plVar5 + 0xfc) = *(uint *)(lVar24 + 0x88) >> 0x1a & 1; *(undefined4 *)(lVar24 + 0x84) = 0x13579bdf; } else { *(undefined4 *)((long)DAT_00012b78 + 0xfc) = 0; *(undefined4 *)(plVar5 + 0x20) = 0; } plVar5 = DAT_00012b78; lVar24 = 0; iVar10 = 0; LAB_00009cf0: FUN_00000aac(DAT_00012b80,0,0x358); if ((int)DAT_00012b78[0x20] == 1) { uVar16 = *(uint *)(DAT_00012b78[0x18] + 0x88) >> 0x1b; } else { uVar16 = (uint)local_30[lVar24]; } lVar38 = 0; bVar8 = (&DAT_00011b43)[lVar21]; local_40 = (uint *)(DAT_00012b78 + 0x1b); puVar22 = local_40; do { bVar2 = local_28[lVar38]; *puVar22 = (uint)bVar2; if ((1 << (ulong)(bVar2 & 0x1f) & bVar8 & 0xf) == 0) { *puVar22 = 0xf; } plVar4 = DAT_00012b78; lVar38 = lVar38 + 1; puVar22 = puVar22 + 1; } while (lVar38 != 4); if ((int)DAT_00012b78[0x1b] == 0xf) { pcVar19 = s_channel_0_unavailable_000110c9; goto LAB_00009b14; } lVar38 = FUN_00002110(uVar16); puVar22 = DAT_00012b80; if (lVar38 == 0) goto LAB_0000a3fc; iVar10 = FUN_00006f1c(DAT_00012b80,DAT_00012b68,DAT_00012b28,0x210,uVar16,0); bVar8 = DAT_00011b42; if (iVar10 == 0) { uVar16 = puVar22[0x6d]; if ((int)plVar4[0x20] != 1) { uVar11 = puVar22[0x6c]; iVar10 = FUN_00008b40(plVar4,puVar22,0); if (iVar10 == 0) { uVar17 = 0; local_58 = local_40; do { uVar15 = *local_58; if (uVar15 != 0xf) { uVar28 = (ulong)uVar15; lVar40 = DAT_00012b78[uVar28 * 4]; lVar38 = DAT_00012b78[uVar28 * 4 + 1]; if (uVar16 == 9) { uVar35 = 0x18; } else { uVar35 = 0x10; } iVar10 = FUN_0000430c(DAT_00012b78,uVar15,0,DAT_00012b80,0,0,uVar35,1,0xff); plVar4 = DAT_00012b78; if (uVar15 == 0 && iVar10 != 0) goto LAB_0000a614; if (iVar10 != 0) goto LAB_0000a0b0; if (uVar16 - 7 < 2) { if ((uVar15 == 0) && ((iVar10 = FUN_00002e88(lVar40,1,0,0xe,7), iVar10 != 0x4d && uVar16 == 7 || (iVar10 != 0x5d && uVar16 == 8)))) { iVar10 = -1; goto LAB_0000a0c4; } FUN_00002340(lVar40,3,0xe,*(uint *)(lVar40 + 0x50c) & 0xffff); plVar4 = DAT_00012b78; iVar10 = FUN_0000430c(DAT_00012b78,uVar15,0,DAT_00012b80,0,0,8,1,0xff); if (uVar15 == 0 && iVar10 != 0) { uVar15 = 0; goto LAB_0000a0c4; } if (iVar10 != 0) goto LAB_0000a1a8; } if (uVar11 - 0x215 < 0x215) { *(uint *)(lVar38 + 4) = *(uint *)(lVar38 + 4) | 0x20; *(uint *)(lVar38 + 0x10) = *(uint *)(lVar38 + 0x10) | 0x200; FUN_00001770(lVar38); *(uint *)(lVar38 + 0x10) = *(uint *)(lVar38 + 0x10) & 0xfffffdff; } puVar22 = DAT_00012b80; lVar38 = plVar5[uVar28 * 4]; local_10 = CONCAT13(local_10._3_1_,0xe050c); uVar12 = DAT_00012b80[0x6d]; DAT_00012b80[uVar28 * 0x1b + 3] = 1; uVar25 = FUN_00002e88(lVar38,1,0,8,uVar12); if (uVar12 - 7 < 2) { puVar22[uVar28 * 0x1b + 2] = 3; uVar23 = (((uint)(uVar25 >> 2) & 0xf) + 1 >> 1) + 0xe; LAB_0000a274: puVar22[uVar28 * 0x1b + 6] = uVar23; } else if (uVar12 == 9) { puVar22[uVar28 * 0x1b + 2] = 4; uVar23 = (((uint)(uVar25 >> 2) & 0xf) + 1 >> 1) + 0xd; goto LAB_0000a274; } puVar22 = DAT_00012b80; DAT_00012b80[uVar28 * 0x1b + 1] = 10; puVar22[uVar28 * 0x1b + 4] = 1; if (((uint)(uVar25 >> 6) & 3) == 1) { puVar22[uVar28 * 0x1b + 4] = 0; puVar22[uVar28 * 0x1b + 6] = puVar22[uVar28 * 0x1b + 6] + 1; } if (((uint)uVar25 >> 2 & 1) == 0) { DAT_00012b80[uVar28 * 0x1b + 5] = 0; } else { DAT_00012b80[uVar28 * 0x1b + 5] = 1; } puVar22 = DAT_00012b80; uVar14 = *(undefined4 *)(lVar38 + 0x10180); *(undefined4 *)(lVar38 + 0x10180) = 0; if (puVar22[0x6c] < 800) { local_50 = 0; do { uVar3 = *(undefined1 *)((long)&local_10 + local_50); cVar6 = FUN_00002e88(lVar38,1,0,uVar3,uVar12); cVar7 = FUN_00002e88(lVar38,2,0,uVar3,uVar12); if (cVar6 != cVar7) goto LAB_0000a4f4; local_50 = local_50 + 1; } while (local_50 != 3); LAB_0000a350: uVar25 = FUN_00002e88(lVar38,2,0,8,uVar12); if (uVar12 - 7 < 2) { uVar23 = (((uint)(uVar25 >> 2) & 0xf) + 1 >> 1) + 0xe; LAB_0000a390: DAT_00012b80[uVar28 * 0x1b + 7] = uVar23; } else if (uVar12 == 9) { uVar23 = (((uint)(uVar25 >> 2) & 0xf) + 1 >> 1) + 0xd; goto LAB_0000a390; } if (((uint)(uVar25 >> 6) & 3) == 1) { if (DAT_00012b80[uVar28 * 0x1b + 4] == 1) { uVar12 = FUN_00002e88(lVar38,1,0,0,uVar12); if ((uVar12 >> 1 & 1) == 0) { FUN_0001053c(s_L_d__CH_d_CS0_x16_mode_and_CS1_x_000110f9,0xa6c,uVar15); pcVar19 = s_but_CS0_do_not_support_byte_mode_00011122; LAB_0000a3ec: iVar10 = -1; FUN_0001053c(pcVar19); goto LAB_0000a3f4; } FUN_0001053c(s_CS0__x16_mode__use_byte_mode_lat_0001114d); } puVar20 = DAT_00012b80; puVar22 = DAT_00012b80 + uVar28 * 0x1b + 7; DAT_00012b80[uVar28 * 0x1b + 4] = 0; puVar20[uVar28 * 0x1b + 7] = *puVar22 + 1; } else if (DAT_00012b80[uVar28 * 0x1b + 4] == 0) { uVar12 = FUN_00002e88(lVar38,2,0,0,uVar12); if ((uVar12 >> 1 & 1) == 0) { FUN_0001053c(s_L_d__CH_d_CS0_x8_mode_and_CS1_x1_00011174,0xa7a,uVar15); pcVar19 = s_but_CS1_do_not_support_byte_mode_0001119d; goto LAB_0000a3ec; } FUN_0001053c(s_CS1__x16_mode__use_byte_mode_lat_000111c8); } iVar10 = 1; DAT_00012b80[uVar28 * 0x1b + 0xb] = DAT_00012b80[uVar28 * 0x1b + 7]; } else { iVar10 = FUN_0000430c(DAT_00012b78,uVar15,1,puVar22,0,0,0x10,1,0xff); if (iVar10 == 0) goto LAB_0000a350; LAB_0000a4f4: puVar22 = DAT_00012b80; DAT_00012b80[uVar28 * 0x1b + 7] = 0; puVar22[uVar28 * 0x1b + 0xb] = 0; iVar10 = 0; } puVar22 = DAT_00012b80; *(undefined4 *)(lVar38 + 0x10180) = uVar14; puVar22[uVar28 * 0x1b] = iVar10 + 1; puVar22[uVar28 * 0x1b + 10] = puVar22[uVar28 * 0x1b + 6]; } uVar12 = (int)uVar17 + 1; uVar17 = (ulong)uVar12; local_58 = local_58 + 1; } while (uVar12 != 4); iVar10 = 0; } else { LAB_0000a614: uVar15 = 0; } goto LAB_0000a0c4; } uVar15 = *(uint *)(plVar4[0x18] + 0x88); uVar12 = *(uint *)(plVar4[0x18] + 0x8c); uVar11 = 0; puVar20 = local_40; do { uVar34 = uVar12 >> (ulong)((uVar11 & 3) << 3); uVar23 = uVar34 & 0xff; if (uVar23 == 0) { *puVar20 = 0xf; } else { uVar33 = (uVar15 >> (ulong)(uVar11 & 0x1f) & 1) + 1; puVar22[3] = 1; *puVar22 = uVar33; *puVar20 = uVar11; if (uVar16 - 7 < 2) { puVar22[2] = 3; uVar32 = ((uVar23 >> 2 & 0xf) + 1 >> 1) + 0xe; LAB_00009f3c: puVar22[6] = uVar32; } else if (uVar16 == 9) { puVar22[2] = 4; uVar32 = ((uVar23 >> 2 & 0xf) + 1 >> 1) + 0xd; goto LAB_00009f3c; } puVar22[1] = 10; puVar22[4] = uVar15 >> (ulong)(uVar11 + 0xc & 0x1f) & 1; if (uVar23 >> 6 == 1) { puVar22[6] = puVar22[6] + 1; } if ((uVar34 >> 2 & 1) == 0) { puVar22[5] = 0; } else { puVar22[5] = 1; } uVar23 = puVar22[6]; if (uVar33 == 2) { if ((uVar15 >> (ulong)(uVar11 + 4 & 0x1f) & 1) == 0) { if ((uVar15 >> (ulong)(uVar11 + 8 & 0x1f) & 1) != 0) { uVar34 = uVar23 + 1; goto LAB_00009f90; } puVar22[7] = uVar23; } else { uVar34 = uVar23 - 1; LAB_00009f90: puVar22[7] = uVar34; } puVar22[0xb] = puVar22[7]; } else { puVar22[7] = 0; puVar22[0xb] = 0; } puVar22[10] = uVar23; } uVar11 = uVar11 + 1; puVar20 = puVar20 + 1; puVar22 = puVar22 + 0x1b; } while (uVar11 != 4); goto LAB_00009e84; } FUN_000104b8(s_spec_timing_unsupported_000110e0); goto LAB_00009e04; } pcVar19 = s_common_info_error_000110a8; LAB_00009b14: FUN_000104b8(pcVar19); LAB_00009b18: FUN_000104b8(s_common_info_error_000110a8 + 0xc); return 0xffffffff; LAB_0000a0b0: do { lVar38 = uVar17 * 4; uVar11 = (int)uVar17 + 1; uVar17 = (ulong)uVar11; *(undefined4 *)((long)plVar4 + lVar38 + 0xd8) = 0xf; } while (uVar11 != 4); goto LAB_0000a0c4; LAB_0000a1a8: do { lVar38 = uVar17 * 4; uVar11 = (int)uVar17 + 1; uVar17 = (ulong)uVar11; *(undefined4 *)((long)plVar4 + lVar38 + 0xd8) = 0xf; } while (uVar11 != 4); LAB_0000a0c4: if (uVar15 != 0 && iVar10 != 0) { FUN_00000dcc(uVar16); FUN_0001053c(s___may_be_ch_d_soldering_abnormal_000111ef,uVar15); } LAB_0000a3f4: if (iVar10 != 0) goto LAB_0000a3f8; LAB_00009e84: puVar22 = DAT_00012b80; if (DAT_00012b80[0x6d] - 7 < 2) { piVar18 = &DAT_00011d50; LAB_00009ea4: uVar11 = DAT_00012b80[2]; *piVar18 = 8 << (ulong)(DAT_00012b80[3] & 0x1f); piVar18[1] = *puVar22; piVar18[2] = puVar22[6]; piVar18[3] = puVar22[7]; piVar18[4] = puVar22[10]; piVar18[5] = puVar22[0xb]; piVar18[6] = 1 << (ulong)(uVar11 & 0x1f); piVar18[7] = puVar22[1]; uVar11 = puVar22[5]; piVar18[8] = 8 << (ulong)(puVar22[4] & 0x1f); piVar18[9] = uVar11; } else { if (DAT_00012b80[0x6d] == 9) { piVar18 = &DAT_00011d90; goto LAB_00009ea4; } FUN_000104b8(s_unsupported_dram_type_00010da4); } puVar22 = DAT_00012b80; puVar20 = (uint *)FUN_00002110(DAT_00012b80[0x6d]); uVar11 = *puVar20; iVar10 = FUN_00006f1c(puVar22,DAT_00012b68,DAT_00012b28,uVar11 & 0xfff,puVar22[0x6d],1); plVar4 = DAT_00012b78; if ((iVar10 == 0) && (iVar10 = FUN_00008b40(DAT_00012b78,puVar22,1), iVar10 == 0)) { if ((int)plVar4[0x20] == 1) { puVar22 = local_40; do { lVar38 = plVar4[(ulong)*puVar22 * 4]; if (*puVar22 != 0xf) { *(uint *)(lVar38 + 0x10180) = *(uint *)(lVar38 + 0x10180) | 0x800; do { } while ((*(uint *)(lVar38 + 0x10014) & 0x23) != 0x23); } puVar22 = puVar22 + 1; } while (puVar22 != (uint *)(plVar4 + 0x1d)); uVar15 = *(uint *)(DAT_00012b78[0x17] + 0x20) & 0xff; puVar20 = local_40; plVar4 = DAT_00012b78; if (uVar15 != 0) { *(uint *)(DAT_00012b78[0x17] + 0x24) = uVar15 << 8 | uVar15 << 0x18; plVar4 = DAT_00012b78; } do { lVar38 = plVar4[(ulong)*puVar20 * 4]; if (*puVar20 != 0xf) { *(uint *)(lVar38 + 0x10180) = *(uint *)(lVar38 + 0x10180) & 0xfffff7ff; do { } while ((*(uint *)(lVar38 + 0x10014) & 3) != 1); if (uVar16 == 9) { FUN_00002340(lVar38,3,0x1c,4); thunk_FUN_00010a38(1); } *(uint *)(lVar38 + 0x10280) = *(uint *)(lVar38 + 0x10280) | 0x80000000; FUN_0000174c(lVar38); *(uint *)(lVar38 + 0x10280) = *(uint *)(lVar38 + 0x10280) & 0x7fffffff; } puVar20 = puVar20 + 1; } while (puVar22 != puVar20); } puVar36 = DAT_00012b80; puVar22 = (uint *)(DAT_00012b78 + 0x1d); puVar20 = local_40; do { uVar15 = *puVar20; if (uVar15 != 0xf) { uVar17 = (ulong)uVar15; uVar14 = 3; if (puVar36[uVar17 * 0x1b] != 2) { uVar14 = 0; } lVar38 = DAT_00012b78[uVar17 * 4 + 1]; FUN_0000430c(DAT_00012b78,uVar15,uVar14,DAT_00012b80,0,0,0x18,1,0xff); if ((uVar11 & 0xfff) - 0x215 < 0x215) { *(uint *)(lVar38 + 4) = *(uint *)(lVar38 + 4) | 0x20; *(uint *)(lVar38 + 0x10) = *(uint *)(lVar38 + 0x10) | 0x200; FUN_00001770(lVar38); *(uint *)(lVar38 + 0x10) = *(uint *)(lVar38 + 0x10) & 0xfffffdff; } puVar29 = DAT_00012b80; plVar4 = DAT_00012b78; FUN_00003c48(DAT_00012b80,DAT_00012b78,uVar15,DAT_00012b80[uVar17 * 0x1b],0,0); lVar38 = plVar4[uVar17 * 4 + 1]; uVar23 = *(uint *)(lVar38 + 0xb4) >> 0x15; uVar12 = *(uint *)(lVar38 + 0xafc); puVar29[uVar17 + 0xae] = uVar23; *(uint *)(lVar38 + 0xafc) = uVar12 & 0xfffff800 | uVar23; *(uint *)(lVar38 + 0xb4) = *(uint *)(lVar38 + 0xb4) | 0x20000; *(uint *)(lVar38 + 0xb4) = *(uint *)(lVar38 + 0xb4) & 0xfffdffff; FUN_00006efc(plVar4,uVar15,puVar29); } puVar29 = DAT_00012b80; puVar20 = puVar20 + 1; } while (puVar20 != puVar22); puVar22 = local_40; if (((int)DAT_00012b78[0x1f] == 1) || ((*(uint *)(&DAT_00011b44 + (ulong)bVar8 * 4) >> 0x17 & 1) != 0)) { do { if (*puVar22 != 0xf) { FUN_00002384(*puVar22,puVar29); FUN_0001053c(s_min_dq___d__min__d__d__max__d__d_00011038 + 0x2c); } puVar22 = puVar22 + 1; } while (puVar20 != puVar22); } plVar4 = DAT_00012b78; uVar14 = FUN_00002e88(*DAT_00012b78,1,0,5,uVar16); FUN_0001053c(s_Manufacturer_ID_0x_x_00011214,uVar14); if ((int)plVar4[0x1f] == 1) { FUN_00002f7c(DAT_00012b80,0); } plVar4 = DAT_00012b78; if (DAT_00012b80[0x6d] == 9) { uVar11 = 0; iVar37 = 0; puVar22 = local_40; do { if (*puVar22 != 0xf) { uVar17 = (ulong)*puVar22; iVar37 = iVar37 + 1; bVar8 = FUN_00002e88(plVar4[uVar17 * 4],1,0,4,9); if ((bVar8 & 0x40) != 0) { uVar11 = uVar11 + 1; } *(byte *)((long)&local_10 + uVar17 * 2) = bVar8; if (DAT_00012b80[uVar17 * 0x1b] == 2) { bVar8 = FUN_00002e88(DAT_00012b78[uVar17 * 4],2,0,4,9); if ((bVar8 & 0x40) != 0) { uVar11 = uVar11 + 1; } *(byte *)((long)&local_10 + uVar17 * 2 + 1) = bVar8; } } puVar22 = puVar22 + 1; } while (puVar22 != puVar20); if (uVar11 != iVar37 + 1U >> 1) { FUN_0001053c(s_______ERR__Not_a_master_die__zq__0001122a,uVar11); puVar20 = local_40; do { uVar11 = *puVar20; if (uVar11 != 0xf) { lVar38 = (ulong)uVar11 * 2; FUN_0001053c(s_ch_d_cs0_mr4_0x_x_00011257,uVar11, *(undefined1 *)((long)&local_10 + lVar38)); if (DAT_00012b80[(ulong)uVar11 * 0x1b] == 2) { FUN_0001053c(s_ch_d_cs1_mr4_0x_x_0001126a,uVar11, *(undefined1 *)((long)&local_10 + lVar38 + 1)); } } puVar20 = puVar20 + 1; } while (puVar22 != puVar20); if ((_DAT_ff000010 == 10) || (0x80 < _DAT_ff000010)) { do { /* WARNING: Do nothing block with infinite loop */ } while( true ); } } } FUN_00005214(DAT_00012b78,DAT_00012b80); if (uVar16 == 9) { FUN_000027a0(); } } LAB_0000a3f8: if (iVar10 == 0) goto LAB_0000a40c; LAB_0000a3fc: lVar24 = lVar24 + 1; if (lVar24 == 3) goto code_r0x0000a408; goto LAB_00009cf0; code_r0x0000a408: if (iVar10 == 0) { LAB_0000a40c: if ((int)DAT_00012b78[0x20] == 0) { puVar22 = (uint *)(DAT_00012b78 + 0x1d); iVar10 = 0; puVar20 = local_40; do { uVar16 = *puVar20; if (uVar16 != 0xf) { iVar37 = 0; do { lVar24 = 0; do { uVar11 = 1 << (ulong)((uint)lVar24 & 0x1f); if (iVar37 != 0) { uVar11 = ~uVar11; } *(uint *)(((ulong)uVar16 << 0x21) + lVar24 * 4) = uVar11; lVar24 = lVar24 + 1; } while (lVar24 != 0x10); uVar17 = 0; do { uVar11 = 1 << (ulong)((uint)uVar17 & 0x1f); if (iVar37 != 0) { uVar11 = ~uVar11; } if (*(uint *)(((ulong)uVar16 << 0x21) + uVar17 * 4) != uVar11) { FUN_0001053c(s_ch__d_dq_d_fail_write_0x_x_read__000112e6,uVar16,uVar17 & 0xffffffff) ; iVar10 = -1; } uVar17 = uVar17 + 1; } while (uVar17 != 0x10); iVar37 = iVar37 + 1; } while (iVar37 != 2); } puVar20 = puVar20 + 1; } while (puVar22 != puVar20); if (iVar10 != 0) { FUN_0000d328(DAT_00012b78); goto LAB_00009b18; } } uVar16 = DAT_00012b80[0x6d]; if (uVar16 - 7 < 2) { puVar22 = DAT_00012b80 + 4; iVar37 = 0; iVar10 = 0; puVar20 = local_40; do { if (*puVar20 != 0xf) { if (*puVar22 == 0) { uVar11 = puVar22[-4]; iVar13 = FUN_00002ee4(iVar10,uVar11 - 1,0,0,uVar16); if (iVar13 != 0) { iVar37 = -1; } iVar13 = FUN_00002ee4(iVar10,uVar11 - 1,1,1,uVar16); if (iVar13 != 0) { iVar37 = -1; } } else { uVar11 = 0; while (uVar11 < puVar22[-4]) { iVar13 = FUN_00002ee4(iVar10,uVar11,0,uVar11,uVar16); uVar11 = uVar11 + 1; if (iVar13 != 0) { iVar37 = -1; } } } } iVar10 = iVar10 + 2; puVar20 = puVar20 + 2; puVar22 = puVar22 + 0x36; } while (iVar10 != 4); if (iVar37 != 0) { FUN_000104b8(s_Please_check_the_soldering_and_h_0001130c); } } puVar22 = DAT_00012b80; *DAT_00012b48 = DAT_00012b80; if (puVar22[0x6c] < 0x42a) { uVar11 = 0; uVar16 = 0; } else { uVar16 = *(uint *)(&DAT_00011b44 + lVar21) >> 0x15 & 1; uVar11 = *(uint *)(&DAT_00011b44 + lVar21) >> 0x16 & 1; } local_50 = 0; local_60 = DAT_00012b78; puVar22 = DAT_00012b80 + 0xbb; local_80 = (undefined1 *)((long)DAT_00012b80 + 0x1db); puVar20 = DAT_00012b80; do { uVar17 = local_50 & 0xffffffff; if (*(int *)((long)DAT_00012b78 + local_50 * 4 + 0xd8) != 0xf) { FUN_0000d10c(DAT_00012b78,uVar17,DAT_00012b80); lVar24 = local_60[1]; FUN_00000aac(&DAT_00014e38,0,0x40); puVar36 = (uint *)(lVar24 + 0xb00); do { puVar41 = puVar36 + 1; *puVar36 = *puVar36 & 0xfffc45ff | 0x200; puVar29 = DAT_00012b80; puVar36 = puVar41; } while ((uint *)(lVar24 + 0xb48) != puVar41); iVar10 = 0; do { plVar5 = DAT_00012b78; iVar37 = 0; do { if (iVar10 == 0 || iVar37 == 0) { uVar15 = iVar10 << 0xb | iVar37 << 0xf; *(uint *)(lVar24 + 0xb48) = *(uint *)(lVar24 + 0xb48) & 0xfffc47ff | 0x200 | uVar15; *(uint *)(lVar24 + 0xb4c) = *(uint *)(lVar24 + 0xb4c) & 0xfffc47ff | 0x200 | uVar15; FUN_00001770(lVar24); FUN_0000430c(plVar5,uVar17,0,puVar29,0,0,0x10,0,0xff); uVar23 = 0; uVar12 = 0; uVar15 = 0; do { uVar33 = (uVar15 >> 3) << 4; iVar13 = (uVar15 & 7) * 0xc; uVar34 = *(uint *)(lVar24 + (ulong)(iVar13 + 400)) >> (ulong)(uVar33 & 0x1f) & 0x3ff ; uVar33 = *(uint *)(lVar24 + (ulong)(iVar13 + 0x614)) >> (ulong)(uVar33 & 0x1f) & 0x3ff; if (uVar15 < 8) { uVar12 = (uVar12 + uVar34 & 0xffff) - uVar33 & 0xffff; } else { uVar23 = (uVar23 + uVar34 & 0xffff) - uVar33 & 0xffff; } uVar15 = uVar15 + 1; } while (uVar15 != 0x10); if (_DAT_00014e3a < uVar12) { _DAT_00014e3a = (ushort)uVar12; DAT_00014e38 = (char)iVar10; DAT_00014e39 = (char)iVar37; } if (_DAT_00014e3e < uVar23) { _DAT_00014e3e = (ushort)uVar23; DAT_00014e3c = (char)iVar10; DAT_00014e3d = (char)iVar37; } } iVar37 = iVar37 + 1; } while (iVar37 != 8); iVar10 = iVar10 + 1; } while (iVar10 != 8); FUN_0001053c(s_DQS_rds__0001137e); pbVar42 = &DAT_00014e39; pbVar39 = pbVar42; do { bVar8 = *pbVar39; pbVar1 = pbVar39 + 4; bVar2 = pbVar39[-1]; *puVar41 = (uint)bVar8 << 0xf | (uint)bVar2 << 0xb | 0x200 | *puVar41 & 0xfffc47ff; puVar30 = &DAT_00011094; if (bVar2 != 0) { puVar30 = &DAT_00011092; } FUN_0001053c(s__s_d__00011387,puVar30,(uint)bVar2 + (uint)bVar8); pbVar39 = pbVar1; puVar41 = puVar41 + 1; } while (pbVar1 != (byte *)0x14e41); FUN_0001053c(&DAT_0001138d); FUN_00001770(lVar24); puVar36 = DAT_00012b80; plVar5 = DAT_00012b78; for (uVar15 = 0; uVar15 < *puVar20; uVar15 = uVar15 + 1) { FUN_0000430c(plVar5,uVar17,uVar15,puVar36,0,0,0x10,0,0xff); } uVar9 = 0x21; if (DAT_00012b80[0x6d] == 9) { uVar9 = 0x19; } FUN_00000aac(0x14e78,0,0xfc); FUN_00000aac(0x14f78,0,0xfc); uVar15 = *puVar20; if (uVar16 != 0) { FUN_000093d4(&local_24,&local_20,&local_1c,0,uVar17); plVar5 = DAT_00012b78; lVar38 = DAT_00012b58; lVar24 = 0; uVar12 = 0; local_24 = 0; local_20 = 0; do { FUN_00009508(*(undefined2 *)(lVar38 + lVar24),0,0,uVar17); FUN_00000aac(0x14e78,0,0xc); FUN_00003c48(DAT_00012b80,plVar5,uVar17,*puVar20,0x14e78,0); if (((_DAT_00014e7c == 0) || (_DAT_00014e7e == 0)) || ((uVar15 == 2 && ((_DAT_00014e80 == 0 || (_DAT_00014e82 == 0)))))) { FUN_00003c48(DAT_00012b80,DAT_00012b78,uVar17,*puVar20,0x14e78,0); } uVar23 = local_20; if (((_DAT_00014e7c < uVar9) || (_DAT_00014e7e < uVar9)) || ((uVar15 != 1 && (((uVar15 != 2 || (_DAT_00014e80 < uVar9)) || (_DAT_00014e82 < uVar9)))))) { if ((local_20 != 0) && (uVar12 = uVar12 + 1, 2 < uVar12)) break; } else { if (local_24 == 0) { local_24 = (uint)*(ushort *)(lVar24 + DAT_00012b58); } uVar12 = 0; uVar23 = (uint)*(ushort *)(lVar24 + DAT_00012b58); if (*(ushort *)(lVar24 + DAT_00012b58) < local_20) { uVar23 = local_20; } } local_20 = uVar23; lVar24 = lVar24 + 2; } while (lVar24 != 0x80); FUN_00009508(local_1c,0,0,uVar17); uVar12 = local_24 + local_20 >> 1; puVar22[-1] = uVar12; puVar22[1] = uVar12; } if (uVar11 != 0) { FUN_000093d4(&local_18,&local_14,&local_10,1,uVar17); uVar12 = local_10 - 100U; if (local_10 - 100U < local_18) { uVar12 = local_10 + ((local_10 - local_18) / 10) * -10; } local_18 = uVar12; uVar12 = local_10 + 100U; if (local_14 < local_10 + 100U) { uVar12 = local_10 + ((local_14 - local_10) / 10) * 10; } local_14 = uVar12; uVar28 = 0; uVar12 = 0; uVar23 = local_14 - local_18; do { FUN_00009508(local_14 + uVar12 * -10,3,1,uVar17); lVar24 = uVar28 * 0xc + 0x14f78; FUN_00000aac(lVar24,0,0xc); FUN_00003c48(DAT_00012b80,DAT_00012b78,uVar17,*puVar20,0,lVar24); lVar24 = uVar28 * 0xc; if (((*(short *)(&DAT_00014f7c + lVar24) != 0) && (*(short *)(&DAT_00014f7e + lVar24) != 0)) && ((uVar15 == 1 || (((uVar15 == 2 && (*(short *)(&DAT_00014f80 + lVar24) != 0)) && (*(short *)(&DAT_00014f82 + lVar24) != 0)))))) { lVar24 = uVar28 * 0xc; uVar28 = (ulong)((int)uVar28 + 1); *(uint *)(lVar24 + 0x14f78) = local_14 + uVar12 * -10; } uVar12 = uVar12 + 1; } while (uVar12 < uVar23 / 10 + 1); FUN_00009508(local_10,3,1,uVar17); uVar12 = 0; puVar36 = puVar22; for (uVar25 = 0; uVar15 != (uint)uVar25; uVar25 = (ulong)((uint)uVar25 + 1)) { uVar34 = 0; puVar29 = (uint *)&DAT_00014f9c; for (uVar23 = 3; uVar23 < (int)uVar28 - 3U; uVar23 = uVar23 + 1) { uVar32 = 0; for (uVar33 = uVar23 - 3; uVar33 <= uVar23 + 3; uVar33 = uVar33 + 1) { lVar24 = (ulong)uVar33 * 0xc + 0x14f78 + uVar25 * 4; uVar32 = uVar32 + (uint)*(ushort *)(lVar24 + 4) + (uint)*(ushort *)(lVar24 + 6); } if (uVar34 < uVar32) { uVar12 = *puVar29; uVar34 = uVar32; } puVar29 = puVar29 + 3; } *puVar36 = uVar12; puVar36 = puVar36 + 2; } } if (uVar16 != 0 || uVar11 != 0) { FUN_0001053c(s_CH_d_00011391,uVar17); if (uVar16 != 0) { FUN_0001053c(s_RX_Vref__d__d____000113af,puVar22[-1] / 10,puVar22[-1] % 10); FUN_00009508(puVar22[-1],3,0,uVar17); if (uVar11 == 0) goto LAB_0000b468; } FUN_0001053c(s_TX_Vref__d__d____d__d___00011397,*puVar22 / 10,*puVar22 % 10, puVar22[2] / 10,puVar22[2] % 10); FUN_00009508(*puVar22,3,1,uVar17); puVar36 = DAT_00012b80; uVar15 = FUN_00002038(puVar22,DAT_00012b80[0x6d]); if (puVar36[0x6d] == 9) { *local_80 = (char)uVar15; local_80[1] = (char)uVar15; } else { lVar24 = *local_60; pcVar19 = s_stride_0x_x__ddr_config_0x_x_00010c78 + lVar24 + 8; pcVar19[0] = '\0'; pcVar19[1] = '\0'; pcVar19[2] = '\0'; pcVar19[3] = '\0'; *(uint *)(lVar24 + 0x50c) = *(uint *)(lVar24 + 0x50c) & 0xffff0000 | uVar15; FUN_000027e0(lVar24); } } LAB_0000b468: lVar24 = local_60[1]; FUN_00000aac(&DAT_00014e38,0,0x40); iVar10 = 0; do { puVar36 = DAT_00012b80; plVar5 = DAT_00012b78; iVar37 = 0; do { if (iVar10 == 0 || iVar37 == 0) { puVar29 = (uint *)(lVar24 + 0xb00); do { puVar41 = puVar29 + 1; *puVar29 = *puVar29 & 0xfffc47ff | iVar10 << 0xb | 0x200U | iVar37 << 0xf; puVar29 = puVar41; } while ((uint *)(lVar24 + 0xb40) != puVar41); FUN_00001770(lVar24); FUN_0000430c(plVar5,uVar17,0,puVar36,0,0,0x10,0,0xff); uVar15 = 0; puVar31 = &DAT_00014e38; do { uVar12 = (uVar15 >> 3) << 4; iVar13 = (uVar15 & 7) * 0xc; uVar12 = ((*(uint *)(lVar24 + (ulong)(iVar13 + 400)) >> (ulong)(uVar12 & 0x1f) & 0x3ff) - (*(uint *)(lVar24 + (ulong)(iVar13 + 0x614)) >> (ulong)(uVar12 & 0x1f) & 0x3ff)) * 2; if (*(ushort *)(puVar31 + 2) < uVar12) { *(short *)(puVar31 + 2) = (short)uVar12; *puVar31 = (char)iVar10; puVar31[1] = (char)iVar37; } uVar15 = uVar15 + 1; puVar31 = puVar31 + 4; } while (uVar15 != 0x10); } iVar37 = iVar37 + 1; } while (iVar37 != 8); iVar10 = iVar10 + 1; } while (iVar10 != 8); puVar36 = (uint *)(lVar24 + 0xb00); iVar10 = 0; FUN_0001053c(s_DQ_rds__000113c1); do { bVar8 = *pbVar42; bVar2 = pbVar42[-1]; *puVar36 = (uint)bVar8 << 0xf | (uint)bVar2 << 0xb | 0x200 | *puVar36 & 0xfffc47ff; puVar30 = &DAT_00011094; if (bVar2 != 0) { puVar30 = &DAT_00011092; } FUN_0001053c(s__s_d_000113ca,puVar30,(uint)bVar2 + (uint)bVar8); if (iVar10 == 7) { FUN_0001053c(&DAT_000113d0); } iVar10 = iVar10 + 1; puVar36 = puVar36 + 1; pbVar42 = pbVar42 + 4; } while (iVar10 != 0x10); FUN_0001053c(s_min_dq___d__min__d__d__max__d__d_00011038 + 0x2d); FUN_00001770(lVar24); puVar36 = DAT_00012b80; plVar5 = DAT_00012b78; for (uVar15 = 0; puVar29 = DAT_00012b80, plVar4 = DAT_00012b78, uVar15 < *puVar20; uVar15 = uVar15 + 1) { FUN_0000430c(plVar5,uVar17,uVar15,puVar36,0,0,0x18,0,0xff); } FUN_00003c48(DAT_00012b80,DAT_00012b78,uVar17,*puVar20,0,0); FUN_0000d1d0(plVar4,uVar17,puVar29); if (uVar16 != 0 || uVar11 != 0) { FUN_0001053c(s_min_dq___d__min__d__d__max__d__d_00011038 + 0x2d); } } puVar36 = DAT_00012b80; plVar5 = DAT_00012b78; puVar20 = puVar20 + 0x1b; puVar22 = puVar22 + 4; local_50 = local_50 + 1; local_60 = local_60 + 4; local_80 = local_80 + 0x14; } while (local_50 != 4); if ((*(uint *)(&DAT_00011b44 + lVar21) >> 0x17 & 1) != 0) { uVar17 = 0; puVar22 = local_40; do { if (*puVar22 != 0xf) { lVar21 = plVar5[uVar17 * 4]; if ((*(uint *)(lVar21 + 0x10100) & 1) != 0) { if (puVar36[0x6d] == 9) { uVar16 = *(uint *)(lVar21 + 0x10100) & 0xfffffffe; } else { uVar16 = *(uint *)(lVar21 + 0x10100) | 4; } *(uint *)(lVar21 + 0x10100) = uVar16; } FUN_00001c14(1,uVar17 & 0xffffffff,0,3); } uVar17 = uVar17 + 1; puVar22 = puVar22 + 1; } while (uVar17 != 4); lVar21 = 0; do { *(undefined2 *)(lVar21 + 0x12c40) = 0; lVar21 = lVar21 + 2; } while (lVar21 != 0x5a); puVar26 = (undefined2 *)&DAT_00012c9a; do { puVar27 = puVar26 + 1; *puVar26 = 0; puVar22 = DAT_00012b80; plVar5 = DAT_00012b38; puVar26 = puVar27; } while (puVar27 != (undefined2 *)&DAT_00012cf4); DAT_00012c3d = 0; DAT_00012cf4 = 0; DAT_00012c3c = 0; uVar17 = 0; uVar11 = *(uint *)(DAT_00012b78[1] + 0xb4) & 0x7ff; uVar16 = (*(uint *)(DAT_00012b78[1] + 0xb0) & 1) + 1; uVar15 = 0; if (DAT_00012b80[0x6c] != 0) { uVar15 = 1000000000 / DAT_00012b80[0x6c]; } iVar10 = (uVar11 * uVar16) / 6 + 1; uVar12 = 0; if (uVar11 != 0) { uVar12 = uVar15 / uVar11; } uVar11 = 0; if (uVar16 != 0) { uVar11 = uVar12 / uVar16; } *(int *)((long)DAT_00012b38 + 0x2c) = iVar10; *(int *)(plVar5 + 6) = iVar10; *(undefined4 *)(plVar5 + 4) = 0x4000; uVar15 = uVar11 >> 1; *(uint *)((long)plVar5 + 0x24) = puVar22[3]; *(undefined4 *)((long)plVar5 + 100) = 0x14; *(undefined4 *)(plVar5 + 0xd) = 0x14; *(undefined4 *)(plVar5 + 7) = 1; *(undefined4 *)(plVar5 + 9) = 1; *(undefined4 *)((long)plVar5 + 0x4c) = 1; uVar16 = 0; if (uVar11 != 0) { uVar16 = (uVar15 + 16000) / uVar11; } *(undefined4 *)(plVar5 + 10) = 1; uVar12 = 0; if (uVar11 != 0) { uVar12 = (uVar15 + 37000) / uVar11; } plVar5[2] = 0; plVar5[3] = 0; *(undefined4 *)((long)plVar5 + 0x34) = 0; uVar23 = 0; if (uVar11 != 0) { uVar23 = (uVar15 + 43000) / uVar11; } *(uint *)(plVar5 + 0xb) = uVar16; *(undefined4 *)((long)plVar5 + 0x6c) = 0; uVar16 = 0; if (uVar11 != 0) { uVar16 = (uVar15 + 35000) / uVar11; } *(uint *)((long)plVar5 + 0x5c) = uVar12; *(uint *)((long)plVar5 + 0x54) = uVar23; *(uint *)(plVar5 + 0xc) = uVar16; FUN_0001053c(s_Unit___d_fs_margin__rx__d__d_tx__000113d4); puVar22 = local_40; do { puVar20 = DAT_00012b80; plVar5 = DAT_00012b38; if (*puVar22 != 0xf) { *DAT_00012b38 = uVar17 << 0x21; if (puVar20[uVar17 * 0x1b] == 2) { plVar5[1] = (1L << ((ulong)((*(uint *)(DAT_00012b78[uVar17 * 4] + 0x30004) & 0x3f) + 7) & 0x3f)) + (uVar17 << 0x21); } else { plVar5[1] = 0; } puVar20 = DAT_00012b80; plVar4 = DAT_00012b78; plVar5 = DAT_00012b38; *(undefined4 *)(DAT_00012b38 + 4) = 0x4000; *(int *)(plVar5 + 5) = (int)uVar17; FUN_0000d10c(plVar4,uVar17 & 0xffffffff,puVar20); FUN_0001053c(s_scan_ch__d___000113fb,uVar17 & 0xffffffff); uVar14 = FUN_0000fcc4(plVar5); (&local_10)[uVar17] = uVar14; FUN_0000d1d0(plVar4,uVar17 & 0xffffffff,puVar20); FUN_0001053c(s_min_dq___d__min__d__d__max__d__d_00011038 + 0x2d); } uVar17 = uVar17 + 1; puVar22 = puVar22 + 1; } while (uVar17 != 4); FUN_0001053c(s_all_dq_eye_scan_done_00011409); uVar17 = 0; do { uVar28 = uVar17 & 0xffffffff; if (*local_40 != 0xf) { puVar30 = &DAT_0001109b; if ((&local_10)[uVar17] == 0) { puVar30 = &DAT_00011096; } FUN_0001053c(s_Channel__d_result___s_0001141f,uVar28,puVar30); uVar28 = extraout_x1; } uVar17 = uVar17 + 1; local_40 = local_40 + 1; } while (uVar17 != 4); FUN_0001053c(s_min_dq___d__min__d__d__max__d__d_00011038 + 0x2c,uVar28); lVar21 = DAT_00012b78[0x10]; *(undefined4 *)(lVar21 + 0x208) = 0; *(undefined4 *)(lVar21 + 0x20c) = 0; *(undefined4 *)(lVar21 + 0x210) = 0; *(undefined4 *)(lVar21 + 0x214) = 0; _DAT_fd588080 = 0xef08a53c; FUN_00010420(); do { /* WARNING: Do nothing block with infinite loop */ } while( true ); } bVar8 = DAT_00011b5a; if (DAT_00012b80[0x6d] == 9) { bVar8 = DAT_00011b5c; } uVar16 = FUN_0000bf8c(DAT_00012b78,DAT_00012b80,&DAT_00011b38 + (ulong)bVar8 * 4, (&DAT_00011b42)[(ulong)DAT_00011b42 * 4]); puVar36[0x6f] = uVar16; if ((*(uint *)(lVar21 + 0x11b4c) >> 4 & 1) != 0) { *(undefined4 *)(plVar5[2] + 0x24) = 0x20002000; *(undefined4 *)(plVar5[6] + 0x24) = 0x20002000; *(undefined4 *)(plVar5[10] + 0x24) = 0x20002000; *(undefined4 *)(plVar5[0xe] + 0x24) = 0x20002000; goto LAB_0000b9d0; } uVar16 = *(uint *)((ulong)DAT_00011b42 * 4 + 0x11b4c) & 7; puVar22 = (uint *)FUN_00002110(puVar36[0x6d]); if (puVar22 != (uint *)0x0) { if ((int)plVar5[0x20] == 0) { FUN_00000aac(0x100000,0,0x2140); FUN_00000aac(0x12cf8,0,0x2140); } uVar11 = *puVar22 & 0xfff; uVar15 = puVar22[1] & 0xfff; uVar12 = *puVar22 >> 0xc & 0xfff; uVar23 = puVar22[1] >> 0xc & 0xfff; if (uVar16 == 1) { LAB_0000bba4: FUN_000104b8(s_change_to_F2__00011436); FUN_000104f8(uVar15); FUN_000104b8(&DAT_00011491); FUN_00007730(uVar15,2); if (uVar16 != 3) goto LAB_0000bd20; } else { FUN_000104b8(s_change_to_F1__00011445); FUN_000104f8(uVar12); FUN_000104b8(&DAT_00011491); FUN_00007730(uVar12,1); if (uVar16 != 2) goto LAB_0000bba4; LAB_0000bd20: FUN_000104b8(s_change_to_F3__00011454); FUN_000104f8(uVar23); FUN_000104b8(&DAT_00011491); FUN_00007730(uVar23,3); } FUN_000104b8(s_change_to_F0__00011463); FUN_000104f8(uVar11); FUN_000104b8(&DAT_00011491); FUN_00007730(uVar11,0); if (uVar16 != 0) { if (((uVar16 != 1) && (uVar12 = uVar15, uVar16 != 2)) && (uVar12 = uVar23, uVar16 != 3)) { uVar12 = 0; } FUN_000104b8(s_change_to_F_00011472); FUN_000104f8(uVar16); FUN_000104b8(s_change_to_F0__00011463 + 0xc); FUN_000104f8(uVar12); FUN_000104b8(&DAT_00011491); FUN_00007730(uVar12,uVar16); } puVar22 = DAT_00012b80; plVar5 = DAT_00012b78; if (0x429 < uVar11) { puVar20 = (uint *)(DAT_00012b78 + 0x1d); do { uVar16 = *local_40; if (uVar16 != 0xf) { lVar24 = plVar5[(ulong)uVar16 * 4 + 1]; iVar10 = 3; if (puVar22[(ulong)uVar16 * 0x1b] == 1) { iVar10 = 1; } *(uint *)(lVar24 + 0xa24) = *(uint *)(lVar24 + 0xa24) | iVar10 << 0x12; *(uint *)(lVar24 + 0xa48) = *(uint *)(lVar24 + 0xa48) | iVar10 << 10; *(uint *)(lVar24 + 0xa58) = iVar10 << 10 | *(uint *)(lVar24 + 0xa58); *(uint *)(lVar24 + 4) = *(uint *)(lVar24 + 4) | 0x4000000; } local_40 = local_40 + 1; } while (puVar20 != local_40); } } if ((int)DAT_00012b78[0x20] == 0) { FUN_00000ac8(0x100000,0x12cf8,0x2140); } LAB_0000b9d0: plVar5 = DAT_00012b78; if ((int)DAT_00012b78[0x20] != 1) { FUN_0000217c(); FUN_0000d27c(plVar5); FUN_000016bc(0x104000,&DAT_00011b38,0x130,DAT_00012b80[0x6d]); FUN_000104b8(&DAT_0001148c); FUN_000107ac(*(undefined4 *)(lVar21 + 0x11b48)); return 0; } FUN_0001053c(s_jump_to_0x_x_0001147e,0x40000); (*(code *)&SUB_00040000)(); do { /* WARNING: Do nothing block with infinite loop */ } while( true ); } LAB_00009e04: pcVar19 = s_unknown_device_If_no__may_be_ch__0001127d; goto LAB_00009b14; } // FUN_0000bde4 @ 0000bde4 int FUN_0000bde4(long param_1,ulong param_2,long param_3) { bool bVar1; uint uVar2; long lVar3; uint uVar4; uint uVar5; int iVar6; ulong uVar7; long lVar8; uint uVar9; uint uVar10; lVar8 = *(long *)(param_1 + (param_2 & 0xffffffff) * 0x20); lVar3 = ((ulong)*(uint *)(lVar8 + 0x10008) & 3) * 0x100000; uVar4 = *(uint *)(lVar8 + lVar3 + 8) >> 0x18 & 0x7f; if (*(int *)(param_3 + 0x1b4) == 9) { bVar1 = *(int *)(*(long *)(param_3 + 0x228) + 0x60) != 0; if (bVar1) { uVar4 = uVar4 * 2; iVar6 = 2; } else { uVar4 = uVar4 * 4; iVar6 = 4; } bVar1 = !bVar1; uVar10 = *(uint *)(lVar8 + lVar3 + 0x590) >> 0x18; uVar9 = *(uint *)(lVar8 + lVar3 + 0x590) >> 0x10 & 0xff; } else { uVar9 = 0; uVar10 = 0; iVar6 = 2; bVar1 = false; } uVar4 = uVar4 - 2; uVar5 = iVar6 + uVar4 >> 2; if (!bVar1) { uVar5 = iVar6 + uVar4 >> 1; } uVar7 = (ulong)(*(uint *)(lVar8 + lVar3 + 0x580) >> 0x10) & 0x3f; if (uVar5 < 4) { uVar5 = 3 - uVar5; } else { uVar5 = 0; } if (*(int *)(param_3 + 0x1b4) == 9) { uVar2 = (uint)uVar7; if (uVar10 < (uint)uVar7) { uVar2 = uVar10; } uVar7 = (ulong)uVar2; if (uVar9 < uVar4) { uVar4 = uVar9; } } if (bVar1) { uVar10 = (uint)(uVar7 >> 2); uVar4 = uVar4 >> 2; } else { uVar10 = (uint)(uVar7 >> 1); uVar4 = uVar4 >> 1; } uVar9 = uVar10; if (uVar4 < uVar10) { uVar9 = uVar4; } if (uVar9 < 4) { uVar9 = 3 - uVar9; } else { uVar9 = 0; } if (uVar5 < uVar9) { uVar5 = uVar9; } uVar4 = (*(uint *)(lVar8 + lVar3 + 8) >> 0x10 & 0x7f) - 7 >> 1; if (uVar5 + uVar10 < uVar4 + 4) { return 0; } return ((uVar5 + uVar10) - uVar4) + -4; } // FUN_0000bf30 @ 0000bf30 void FUN_0000bf30(long param_1,long param_2,int param_3) { long lVar1; uint uVar2; lVar1 = *(long *)(param_1 + 0x88); if (param_3 == 1) { *(undefined4 *)(param_2 + 0x34c) = *(undefined4 *)(lVar1 + 0x280); *(undefined4 *)(param_2 + 0x350) = *(undefined4 *)(lVar1 + 0x304); *(undefined4 *)(lVar1 + 0x280) = 0x3000000; uVar2 = 0xfc009c0; } else { *(uint *)(lVar1 + 0x280) = *(uint *)(param_2 + 0x34c) | 0xffff0000; uVar2 = *(uint *)(param_2 + 0x350) | 0xffff0000; } *(uint *)(lVar1 + 0x304) = uVar2; return; } // FUN_0000bf7c @ 0000bf7c void FUN_0000bf7c(long param_1) { long lVar1; lVar1 = *(long *)(param_1 + 0xa0); *(undefined4 *)(*(long *)(param_1 + 0x98) + 0x300) = 0; *(undefined4 *)(lVar1 + 0x240) = 0; return; } // FUN_0000bf8c @ 0000bf8c /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined8 FUN_0000bf8c(long param_1,int *param_2,uint *param_3,uint param_4) { uint uVar1; long lVar2; uint uVar3; uint uVar4; int *piVar5; long lVar6; ulong uVar7; uint uVar8; int *piVar9; int iVar10; uint uVar11; int iVar12; uint uVar13; iVar10 = 1; piVar9 = (int *)(param_1 + 0xdc); piVar5 = param_2 + 0x21; uVar4 = param_2[0xe]; do { if ((*piVar9 != 0xf) && (((iVar10 = iVar10 + 1, uVar4 != piVar5[8] || (param_2[6] != *piVar5)) || (param_2[7] != piVar5[1])))) { param_4 = 0xff; break; } piVar5 = piVar5 + 0x1b; piVar9 = piVar9 + 1; } while (param_2 + 0x72 != piVar5); if (uVar4 == 0) { uVar8 = 0xffffc00; } else { uVar8 = 0x1ffff000; if (uVar4 < 5) { uVar8 = 0xffff800; } } if (iVar10 == 1) { param_4 = 0xff; } uVar1 = uVar4 & 0xfffffffb; lVar6 = *(long *)(param_1 + 0x98); lVar2 = *(long *)(param_1 + 0xa0); if (param_4 == 5 && uVar4 != 2) { if (uVar4 != 6) { param_4 = 4; goto LAB_0000c130; } param_4 = 5; LAB_0000c03c: iVar12 = 5; } else { if (5 < param_4) { *(undefined4 *)(lVar6 + 0x300) = 0; *(undefined4 *)(lVar2 + 0x240) = 0; if ((*param_2 == 2) && (uVar4 < 4)) { uVar7 = 0x200000000; } else { uVar7 = FUN_00000e9c(param_2,0xf,param_2[0x6d]); if (param_2[5] != 0) { uVar7 = uVar7 * 3 >> 2; } } uVar7 = uVar7 >> 0x14; if (uVar7 == 0x100) { uVar4 = 7; } else if (uVar7 == 0x200) { uVar4 = 4; } else if (uVar7 == 0x400) { uVar4 = 3; } else if (uVar7 == 0x600) { uVar4 = 8; } else if (uVar7 == 0x800) { uVar4 = 2; } else if (uVar7 == 0xc00) { uVar4 = 6; } else if (uVar7 == 0x1000) { uVar4 = 1; } else if (uVar7 == 0x1800) { uVar4 = 5; } else { if (uVar7 != 0x2000) { FUN_000104b8(s_grf_con_size_unsupported__00010c5d); } uVar4 = 0; } _DAT_fd59800c = uVar4 | 0x1f0000; *(uint *)(*(long *)(param_1 + 0x90) + 0x10) = uVar4 << 4 | 0x1f00000; goto LAB_0000c1f8; } LAB_0000c130: if (uVar1 == 2) goto LAB_0000c03c; iVar12 = 4; } uVar3 = iVar12 - param_4; if (5 < uVar3) { uVar3 = 5; } uVar11 = param_4 + 8; if (iVar10 != 2) { uVar11 = param_4; } uVar13 = uVar11 << 4 | uVar3 << 0xc | uVar4 << 8 | 1; *(uint *)(lVar6 + 0x300) = uVar13; *(uint *)(lVar2 + 0x240) = uVar13; if (iVar10 == 2) { uVar11 = uVar11 - 8; } *(uint *)(lVar6 + 0x314) = uVar8 & *param_3 | 8 << (ulong)(uVar11 & 0x1f); if (iVar10 != 2) { *(uint *)(lVar6 + 0x318) = uVar8 & param_3[1] | 0x10 << (ulong)(uVar11 & 0x1f); } else { *(undefined4 *)(lVar6 + 0x318) = 0; } uVar13 = (uint)(iVar10 != 2); if (uVar1 == 2) { *(undefined4 *)(lVar6 + 0x304) = 0; uVar13 = uVar11 + uVar3 + uVar13; *(uint *)(lVar6 + 0x308) = uVar8 & param_3[3] | 0x10 << (ulong)(uVar13 & 0x1f); *(uint *)(lVar6 + 0x30c) = uVar8 & param_3[4] | 0x20 << (ulong)(uVar13 & 0x1f); *(uint *)(lVar6 + 0x310) = uVar8 & param_3[5] | 0x40 << (ulong)(uVar13 & 0x1f); if (uVar4 == 2) goto LAB_0000c110; *(uint *)(lVar6 + 0x31c) = uVar8 & param_3[6] | 0x80 << (ulong)(uVar13 & 0x1f); } else { uVar13 = uVar11 + uVar3 + uVar13; *(uint *)(lVar6 + 0x304) = uVar8 & param_3[2] | 0x10 << (ulong)(uVar13 & 0x1f); *(uint *)(lVar6 + 0x308) = uVar8 & param_3[3] | 0x20 << (ulong)(uVar13 & 0x1f); *(uint *)(lVar6 + 0x30c) = uVar8 & param_3[4] | 0x40 << (ulong)(uVar13 & 0x1f); if (uVar1 == 0) { *(undefined4 *)(lVar6 + 0x310) = 0; } else { *(uint *)(lVar6 + 0x310) = uVar8 & param_3[5] | 0x80 << (ulong)(uVar13 & 0x1f); } if (uVar4 < 4) { LAB_0000c110: *(undefined4 *)(lVar6 + 0x31c) = 0; } else { if (uVar4 == 4) { iVar10 = 0x80; } else { iVar10 = 0x100; } *(uint *)(lVar6 + 0x31c) = uVar8 & param_3[6] | iVar10 << (ulong)(uVar13 & 0x1f); } } *(undefined4 *)(lVar2 + 0x244) = *(undefined4 *)(lVar6 + 0x304); *(undefined4 *)(lVar2 + 0x248) = *(undefined4 *)(lVar6 + 0x308); *(undefined4 *)(lVar2 + 0x24c) = *(undefined4 *)(lVar6 + 0x30c); *(undefined4 *)(lVar2 + 0x250) = *(undefined4 *)(lVar6 + 0x310); *(undefined4 *)(lVar2 + 0x254) = *(undefined4 *)(lVar6 + 0x314); *(undefined4 *)(lVar2 + 600) = *(undefined4 *)(lVar6 + 0x318); *(undefined4 *)(lVar2 + 0x25c) = *(undefined4 *)(lVar6 + 0x31c); *(undefined4 *)(*(long *)(param_1 + 0x90) + 0x10) = 0x1f00000; _DAT_fd59800c = 0x1f0000; LAB_0000c1f8: FUN_0001053c(s_stride_0x_x__ddr_config_0x_x_00010c78, *(uint *)(*(long *)(param_1 + 0x98) + 0x300) >> 4 & 0xf, *(uint *)(*(long *)(param_1 + 0x98) + 0x300) >> 8 & 0xf); lVar6 = *(long *)(param_1 + 0x98); FUN_0001053c(s_hash_ch_mask0_1_0x_x_0x_x__bank__00010c96,*(undefined4 *)(lVar6 + 0x314), *(undefined4 *)(lVar6 + 0x318),*(undefined4 *)(lVar6 + 0x304), *(undefined4 *)(lVar6 + 0x308),*(undefined4 *)(lVar6 + 0x30c), *(undefined4 *)(lVar6 + 0x310),*(undefined4 *)(lVar6 + 0x31c)); return 0; } // FUN_0000c3d8 @ 0000c3d8 /* WARNING: Restarted to delay deadcode elimination for space: stack */ void FUN_0000c3d8(long param_1,int *param_2,uint *param_3,int param_4) { long lVar1; int iVar2; uint uVar3; bool bVar4; bool bVar5; long lVar6; long lVar7; undefined8 uVar8; long *plVar9; undefined8 *puVar10; uint uVar11; long lVar12; ulong uVar13; ulong *puVar14; uint uVar15; long lVar16; int *piVar17; ulong uVar18; ulong uVar19; int *piVar20; long lVar21; long local_60 [9]; long local_18; long local_10; long local_8; piVar17 = (int *)(param_1 + 0xd8); iVar2 = param_2[0x6d]; lVar21 = 0; bVar4 = true; uVar3 = *(uint *)(*(long *)(param_1 + 0x98) + 0x300); uVar18 = 0; puVar14 = (ulong *)(local_60 + 5); uVar15 = *(uint *)(*(long *)(param_1 + 0x98) + 0x300) & 1; uVar11 = param_2[0xe]; local_60[0] = 0; local_60[1] = 0; lVar12 = 0; local_60[2] = 0; local_60[3] = 0; piVar20 = param_2; do { if (*piVar17 == 0xf) { local_60[lVar12] = 0; puVar14[-1] = 0; *puVar14 = 0; } else { uVar18 = (ulong)((int)uVar18 + 1); uVar19 = FUN_00000e9c(piVar20,0,iVar2); puVar14[-1] = uVar19; uVar13 = FUN_00000e9c(piVar20,1,iVar2); *puVar14 = uVar13; lVar21 = uVar19 + lVar21 + uVar13; if (piVar20[5] != 0) { puVar14[-1] = uVar19 * 3 >> 2; *puVar14 = uVar13 * 3 >> 2; } uVar19 = puVar14[-1]; uVar13 = *puVar14; local_60[lVar12] = uVar19 + uVar13; if ((lVar12 != 0) && (uVar19 + uVar13 != local_60[0])) { bVar4 = false; } } lVar7 = local_60[3]; lVar6 = local_60[2]; lVar1 = local_60[1]; lVar16 = local_60[0]; lVar12 = lVar12 + 1; piVar17 = piVar17 + 1; piVar20 = piVar20 + 0x1b; puVar14 = puVar14 + 2; } while (lVar12 != 4); piVar17 = param_2 + 0x51; uVar19 = local_60[0] + local_60[1] + local_60[2] + local_60[3]; FUN_00000aac(param_3,0,0xb8); param_3[1] = 0; param_3[2] = 0; param_3[3] = 0; if (uVar15 == 0) { if ((uVar11 < 4) && (*param_2 == 2)) { if ((int)uVar18 == 4) { *param_3 = 8; *(long *)(param_3 + 0x16) = local_60[6]; *(long *)(param_3 + 0x18) = local_60[7]; param_3[6] = 0; param_3[7] = 2; *(long *)(param_3 + 0x1a) = local_60[8]; param_3[8] = 0; param_3[9] = 3; *(long *)(param_3 + 0x1c) = local_18; param_3[10] = 0; param_3[0xb] = 4; *(long *)(param_3 + 0x1e) = local_10; param_3[0xc] = 0; param_3[0xd] = 5; param_3[0xe] = 0; param_3[0xf] = 6; param_3[4] = 0; param_3[5] = 1; *(long *)(param_3 + 0x12) = local_60[4]; *(long *)(param_3 + 0x14) = local_60[5]; *(long *)(param_3 + 0x20) = local_8; param_3[0x10] = 0; param_3[0x11] = 7; } else { *param_3 = 4; param_3[4] = 0; param_3[5] = 1; param_3[6] = 0; param_3[7] = 2; *(long *)(param_3 + 10) = local_60[4]; *(long *)(param_3 + 0xc) = local_60[5]; *(long *)(param_3 + 0xe) = local_60[6]; *(long *)(param_3 + 0x10) = local_60[7]; param_3[8] = 0; param_3[9] = 3; } } else if (bVar4) { LAB_0000c854: *(ulong *)(param_3 + 4) = uVar19; *param_3 = 1; } else if ((int)uVar18 == 4) { *param_3 = 4; *(long *)(param_3 + 4) = lVar16; *(long *)(param_3 + 6) = lVar16 * 2; *(long *)(param_3 + 10) = lVar16; *(long *)(param_3 + 0xc) = lVar1; *(long *)(param_3 + 0xe) = lVar6; *(long *)(param_3 + 0x10) = lVar7; *(long *)(param_3 + 8) = lVar16 * 3; } else { *(long *)(param_3 + 4) = lVar16; *(long *)(param_3 + 6) = lVar16; *param_3 = 2; *(long *)(param_3 + 8) = lVar1; } } else { uVar3 = uVar3 >> 4 & 0xf; param_2 = piVar17; if (uVar11 < 4) { uVar19 = local_60[4] + local_60[6] + local_60[8] + local_10; if (uVar19 < 0x3fc000001 || 7 < uVar3) { if (uVar19 < 0x1fe000001 || uVar3 < 8) { if (local_60[5] == 0) { *(ulong *)(param_3 + 4) = uVar19; *param_3 = 1; } else { *param_3 = 2; if (uVar3 < 8) { uVar8 = 0x400000000; } else { uVar8 = 0x200000000; } *(undefined8 *)(param_3 + 4) = uVar8; *(ulong *)(param_3 + 6) = uVar19; *(long *)(param_3 + 8) = local_18 + local_8 + local_60[5] + local_60[7]; } goto LAB_0000c520; } *param_3 = 3; param_3[8] = 0xfe000000; param_3[9] = 1; param_3[4] = 0xfe300000; param_3[5] = 1; param_3[6] = 0; param_3[7] = 2; uVar8 = 0x1c00000; } else { *param_3 = 3; param_3[8] = 0xfc000000; param_3[9] = 3; param_3[4] = 0xfc500000; param_3[5] = 3; param_3[6] = 0; param_3[7] = 4; uVar8 = 0x3a00000; } *(undefined8 *)(param_3 + 10) = uVar8; *(long *)(param_3 + 0xc) = local_18 + local_8 + local_60[5] + local_60[7]; } else { if (uVar19 < 0x3fc000001 || 7 < uVar3) { if (uVar19 < 0x1fe000001 || uVar3 < 8) goto LAB_0000c854; if (uVar19 < 0x200000001) { param_3[4] = 0xfe300000; param_3[5] = 1; param_3[6] = 0xfe000000; param_3[7] = 1; *param_3 = 2; uVar8 = 0x1c00000; goto LAB_0000c630; } param_3[8] = 0xfe000000; param_3[9] = 1; param_3[10] = 0x1c00000; param_3[0xb] = 0; *param_3 = 3; param_3[4] = 0xfe300000; param_3[5] = 1; param_3[6] = 0; param_3[7] = 2; lVar12 = -0x20000000; } else { if (uVar19 < 0x400000001) { param_3[4] = 0xfc500000; param_3[5] = 3; param_3[6] = 0xfc000000; param_3[7] = 3; *param_3 = 2; uVar8 = 0x3a00000; LAB_0000c630: *(undefined8 *)(param_3 + 8) = uVar8; goto LAB_0000c520; } lVar12 = -0x400000000; param_3[8] = 0xfc000000; param_3[9] = 3; *param_3 = 3; param_3[4] = 0xfc500000; param_3[5] = 3; param_3[6] = 0; param_3[7] = 4; param_3[10] = 0x3a00000; param_3[0xb] = 0; } *(ulong *)(param_3 + 0xc) = uVar19 + lVar12; } } LAB_0000c520: if ((param_4 != 0 & uVar15) == 0) { if (param_4 != 0) goto LAB_0000c93c; bVar4 = false; } else { if (0xffffffff < *(ulong *)(param_3 + (ulong)*param_3 * 2 + 2)) { if (local_60[5] == 0) { if (0x100000000 < (ulong)local_60[4]) { lVar12 = 0; bVar4 = false; bVar5 = false; uVar19 = 0; goto LAB_0000c978; } uVar19 = lVar21 + 0xf0000000; if (local_60[4] == 0x100000000) { for (plVar9 = (long *)(param_1 + 0x18); (long *)(param_1 + uVar18 * 0x20 + 0x18) != plVar9 ; plVar9 = plVar9 + 4) { uVar15 = 0; if (uVar18 != 0) { uVar15 = (uint)(0x100000000 / uVar18); } *(uint *)(*plVar9 + 0xc) = *(uint *)(*plVar9 + 0xc) & 0xffff00ff | uVar15; } } } else { if (0x80000000 < (ulong)local_60[4]) goto LAB_0000ca34; if (uVar11 < 4) { if (param_2[5] == 0) { uVar19 = uVar18 * local_60[4] + 0xf0000000; } else { uVar19 = ((ulong)(local_60[4] << 2) / 3) * uVar18 + 0xf0000000; } } else { for (plVar9 = (long *)(param_1 + 0x18); plVar9 != (long *)(param_1 + uVar18 * 0x20 + 0x18) ; plVar9 = plVar9 + 4) { *(uint *)(*plVar9 + 0xc) = (uint)((ulong)local_60[5] >> 0x19) & 0xff | (int)((ulong)local_60[4] >> 0x19) << 8; } uVar19 = lVar21 + 0xf0000000; } } bVar4 = false; bVar5 = true; lVar12 = 0x10000000; goto LAB_0000c978; } LAB_0000c93c: if (*(ulong *)(param_3 + (ulong)*param_3 * 2 + 2) < 0x100000000) { LAB_0000ca34: bVar4 = false; } else { bVar4 = true; *(undefined4 *)(*(long *)(param_1 + 0x98) + 8) = 0x1000000; } } bVar5 = false; lVar12 = 0; uVar19 = 0; LAB_0000c978: FUN_00000aac(&DAT_000150a0,0,0xa0); uVar3 = *param_3; uVar18 = 0; puVar14 = (ulong *)(param_3 + 2); for (uVar15 = 0; uVar11 = (uint)uVar18, uVar15 < uVar3; uVar15 = uVar15 + 1) { uVar13 = *puVar14; lVar16 = *(long *)(param_3 + (ulong)(uVar3 + uVar15) * 2 + 2); lVar21 = uVar18 * 0x10; *(ulong *)(&DAT_000150a0 + lVar21) = uVar13; if (uVar13 < 0x100000000) { uVar18 = uVar13 + lVar16; if (bVar4) { lVar1 = lVar16; if (0xf6ffffff < uVar18) { lVar1 = 0xf7000000; } *(long *)(&DAT_000150a8 + lVar21) = lVar1; if (0xffffffff < uVar18) { uVar11 = uVar11 + 1; *(undefined8 *)(&DAT_000150a0 + (ulong)uVar11 * 0x10) = 0xff140000; *(undefined8 *)(&DAT_000150a8 + (ulong)uVar11 * 0x10) = 0xeb0000; } } else { lVar1 = lVar16; if (0xefffffff < uVar18) { lVar1 = 0xf0000000; } *(long *)(&DAT_000150a8 + lVar21) = lVar1; } if (0x100000000 < uVar18) { uVar11 = uVar11 + 1; *(undefined8 *)(&DAT_000150a0 + (ulong)uVar11 * 0x10) = 0x100000000; *(ulong *)(&DAT_000150a8 + (ulong)uVar11 * 0x10) = uVar18 - 0x100000000; } } else { *(long *)(&DAT_000150a8 + lVar21) = lVar16; } if ((bVar5) && ((uVar3 <= uVar15 + 1 || ((uVar13 + lVar16 < uVar19 && (uVar19 + lVar12 < puVar14[1])))))) { uVar11 = uVar11 + 1; bVar5 = false; *(ulong *)(&DAT_000150a0 + (ulong)uVar11 * 0x10) = uVar19; *(long *)(&DAT_000150a8 + (ulong)uVar11 * 0x10) = lVar12; } uVar18 = (ulong)(uVar11 + 1); puVar14 = puVar14 + 1; } *param_3 = uVar11; puVar10 = (undefined8 *)&DAT_000150a8; puVar14 = (ulong *)(param_3 + 2); for (uVar15 = 0; uVar15 < uVar11; uVar15 = uVar15 + 1) { *puVar14 = puVar10[-1]; *(undefined8 *)(param_3 + (ulong)(uVar11 + uVar15) * 2 + 2) = *puVar10; puVar10 = puVar10 + 2; puVar14 = puVar14 + 1; } param_3[0x2a] = param_3[0x2a] | 2; return; } // FUN_0000cb40 @ 0000cb40 void FUN_0000cb40(void) { return; } // FUN_0000cb44 @ 0000cb44 void FUN_0000cb44(long param_1,ulong param_2,long param_3) { uint uVar1; uint uVar2; int iVar3; uint uVar4; char cVar5; uint uVar6; int iVar7; long lVar8; uint uVar9; byte bVar10; uint uVar11; int iVar12; int iVar13; long lVar14; long lVar15; long lVar16; long lVar17; param_2 = param_2 & 0xffffffff; lVar16 = *(long *)(param_3 + 0x228); lVar15 = *(long *)(param_3 + 0x230); lVar17 = *(long *)(param_1 + param_2 * 0x20); iVar7 = *(int *)(param_3 + 0x1b4); lVar8 = FUN_0000337c(*(undefined4 *)(lVar16 + 0x28),*(undefined4 *)(lVar16 + 0x2c)); if (iVar7 == 9) { uVar9 = (*(int *)(lVar16 + 0x60) == 0x80) + 1; } else { uVar9 = 2; } uVar4 = iVar7 - 7; lVar14 = param_3 + param_2 * 0x6c; uVar11 = *(uint *)(lVar17 + 0x10000); uVar2 = *(uint *)(lVar14 + 0xc); bVar10 = 0; if (uVar9 != 0) { bVar10 = (byte)(*(uint *)(lVar15 + 0x40) / uVar9); } *(byte *)(lVar14 + 0x3c) = *(byte *)(lVar14 + 0x3c) & 0xc0 | bVar10 & 0x3f; iVar13 = *(int *)(lVar15 + 0x1ec); iVar7 = *(int *)(lVar15 + 0x28) + *(int *)(lVar15 + 0x24); bVar10 = 0; if (uVar9 != 0) { bVar10 = (byte)((uint)(iVar13 + *(int *)(lVar15 + 0x30) + iVar7) / uVar9); } *(byte *)(lVar14 + 0x3e) = *(byte *)(lVar14 + 0x3e) & 0xc0 | bVar10 & 0x3f; if (uVar4 < 2) { uVar6 = *(uint *)(lVar15 + 0x1f0) >> 1; bVar10 = 0; if (uVar9 != 0) { bVar10 = (byte)(((iVar7 + *(int *)(lVar15 + 0x38)) - uVar6) / uVar9); } *(byte *)(lVar14 + 0x3d) = *(byte *)(lVar14 + 0x3d) & 0xc0 | bVar10 & 0x3f; iVar3 = *(int *)(lVar15 + 0x1e8); cVar5 = '\0'; if (uVar9 != 0) { cVar5 = (char)((uVar6 + iVar7 + iVar3) / uVar9); } *(char *)(lVar14 + 0x3f) = cVar5 + '<'; uVar6 = *(byte *)(lVar8 + 0xd) + 4; if (uVar6 < *(uint *)(lVar15 + 0x6c)) { uVar6 = *(uint *)(lVar15 + 0x6c); } if (*(int *)(lVar16 + 0x40) == 1) { uVar6 = ((iVar3 + 2) - (*(int *)(lVar15 + 0xa8) + *(int *)(lVar15 + 200))) + uVar6; } else { uVar6 = (uVar6 - iVar13) + iVar3 + 3; } bVar10 = 0; if (uVar9 != 0) { bVar10 = (byte)(uVar6 / uVar9); } *(byte *)(lVar14 + 0x40) = *(byte *)(lVar14 + 0x40) & 0xe0 | bVar10 & 0x1f; lVar8 = param_3 + param_2 * 0x6c; bVar10 = 0; if (uVar9 != 0) { bVar10 = (byte)((iVar13 + *(int *)(lVar15 + 0x4c) + 1U) / uVar9); } *(byte *)(lVar8 + 0x41) = *(byte *)(lVar8 + 0x41) & 0xe0 | bVar10 & 0x1f; } else { bVar10 = 0; if (uVar9 != 0) { bVar10 = (byte)((uint)(iVar7 + *(int *)(lVar15 + 0x23c)) / uVar9); } *(byte *)(lVar14 + 0x3d) = *(byte *)(lVar14 + 0x3d) & 0xc0 | bVar10 & 0x3f; iVar3 = *(int *)(lVar15 + 0x1e8); cVar5 = '\0'; if (uVar9 != 0) { cVar5 = (char)((uint)(iVar3 + *(int *)(lVar15 + 0x20c) + iVar7) / uVar9); } *(char *)(lVar14 + 0x3f) = cVar5 + '6'; uVar6 = (uint)*(byte *)(lVar8 + 0xc); if (7 < *(byte *)(lVar8 + 0xc)) { uVar6 = -(uVar6 & 7); } iVar7 = *(byte *)(lVar8 + 0xd) + uVar6; if (*(int *)(lVar16 + 0x60) == 0x80) { iVar7 = iVar7 + 6; iVar12 = 2; } else { iVar7 = iVar7 + 4; iVar12 = 4; } uVar6 = 0; if (iVar12 != 0) { uVar6 = iVar7 / iVar12; } lVar8 = param_3 + param_2 * 0x6c; uVar1 = *(uint *)(lVar15 + 0x26c); if (*(uint *)(lVar15 + 0x26c) < uVar6) { uVar1 = uVar6; } if (*(int *)(lVar16 + 0x40) == 1) { bVar10 = 0; if (uVar9 != 0) { bVar10 = (byte)((((iVar3 + *(int *)(lVar15 + 0x260)) - (*(int *)(lVar15 + 0xa8) + *(int *)(lVar15 + 200))) + uVar1 + 1) / uVar9); } *(byte *)(lVar8 + 0x40) = *(byte *)(lVar8 + 0x40) & 0xe0 | bVar10 & 0x1f; } else { bVar10 = 0; if (uVar9 != 0) { bVar10 = (byte)(((iVar3 - iVar13) + uVar1) / uVar9); } *(byte *)(lVar8 + 0x40) = *(byte *)(lVar8 + 0x40) & 0xe0 | bVar10 & 0x1f; } lVar8 = param_3 + param_2 * 0x6c; if (*(int *)(lVar16 + 100) == 0) { iVar7 = *(int *)(lVar15 + 0x238); } else { iVar7 = *(int *)(lVar15 + 0x4c) - *(int *)(lVar15 + 0x208); iVar13 = iVar13 + *(int *)(lVar15 + 0x204); } bVar10 = 0; if (uVar9 != 0) { bVar10 = (byte)((uint)(iVar7 + iVar13) / uVar9); } *(byte *)(lVar8 + 0x41) = *(byte *)(lVar8 + 0x41) & 0xe0 | bVar10 & 0x1f; } lVar8 = param_3 + param_2 * 0x6c; bVar10 = 0; if (uVar9 != 0) { bVar10 = (byte)(*(uint *)(lVar15 + 0x44) / uVar9); } iVar7 = ((uint)(8 << (ulong)(uVar2 & 0x1f)) >> 3) * 2 * (uVar11 >> 0x10 & 0xf); *(byte *)(lVar8 + 0x42) = *(byte *)(lVar8 + 0x42) & 0xf0 | bVar10 & 0xf; bVar10 = 0; if (uVar9 != 0) { bVar10 = (byte)(*(uint *)(lVar15 + 0x5c) / uVar9); } *(byte *)(lVar8 + 0x43) = *(byte *)(lVar8 + 0x43) & 0xc0 | bVar10 & 0x3f; bVar10 = (char)uVar9 * '\x02'; *(byte *)(lVar8 + 0x44) = *(byte *)(lVar8 + 0x44) & 0xf0 | bVar10; *(byte *)(lVar8 + 0x45) = *(byte *)(lVar8 + 0x45) & 0xc0 | bVar10 + (char)(uVar9 << 2); bVar10 = *(byte *)(lVar8 + 0x50); *(byte *)(lVar8 + 0x4c) = *(byte *)(lVar8 + 0x4c) & 8 | 0x11; *(byte *)(lVar8 + 0x4d) = *(byte *)(lVar8 + 0x4d) & 0x80 | 0x11; *(byte *)(lVar8 + 0x50) = bVar10 & 0xfc | 4; if (iVar7 == 0x10) { bVar10 = bVar10 & 0xe4 | 4; } else if (iVar7 == 0x20) { bVar10 = bVar10 & 0xe0 | 0xc; } else { if (iVar7 != 0x40) { *(byte *)(lVar8 + 0x50) = bVar10 & 0xfc | 0x1c; goto LAB_0000cd60; } bVar10 = bVar10 & 0xe0 | 0x14; } *(byte *)(lVar8 + 0x50) = bVar10; LAB_0000cd60: lVar8 = param_3 + param_2 * 0x6c; *(byte *)(lVar8 + 0x50) = *(byte *)(lVar8 + 0x50) & 0x80 | *(byte *)(lVar8 + 0x50) & 0x1f | 0x20; if (uVar4 < 2) { uVar11 = *(uint *)(lVar15 + 0x48); } else { uVar11 = *(uint *)(lVar15 + 0x240); } bVar10 = 0; if (uVar9 != 0) { bVar10 = (byte)(uVar11 / uVar9); } *(byte *)(lVar8 + 0x48) = *(byte *)(lVar8 + 0x48) & 0xf8 | bVar10 & 7; param_3 = param_3 + param_2 * 0x6c; *(byte *)(param_3 + 0x48) = *(byte *)(param_3 + 0x48) & 7 | (byte)((*(byte *)(param_3 + 0x41) & 0x1f) << 3); *(byte *)(param_3 + 0x49) = *(byte *)(param_3 + 0x49) & 0xf0 | *(byte *)(param_3 + 0x42) & 0xf; lVar8 = *(long *)(param_1 + param_2 * 0x20 + 0x18); *(undefined4 *)(lVar8 + 0x10) = *(undefined4 *)(param_3 + 0x3c); *(undefined4 *)(lVar8 + 0x14) = *(undefined4 *)(param_3 + 0x40); *(undefined4 *)(lVar8 + 0x18) = *(undefined4 *)(param_3 + 0x44); *(undefined4 *)(lVar8 + 0x20) = *(undefined4 *)(param_3 + 0x4c); *(undefined4 *)(lVar8 + 0x24) = *(undefined4 *)(param_3 + 0x50); *(undefined4 *)(lVar8 + 0x1c) = *(undefined4 *)(param_3 + 0x48); return; } // FUN_0000cf84 @ 0000cf84 undefined8 FUN_0000cf84(long param_1) { if ((*(uint *)(param_1 + 0x200e0) & 1) != 0) { *(uint *)(param_1 + 0x200e0) = *(uint *)(param_1 + 0x200e0) & 0xfffffffe; do { } while ((*(uint *)(param_1 + 0x200e4) & 1) != 0); return 1; } return 0; } // FUN_0000cfb4 @ 0000cfb4 void FUN_0000cfb4(long param_1,int param_2) { if (param_2 == 1) { *(uint *)(param_1 + 0x200e0) = *(uint *)(param_1 + 0x200e0) | 1; } return; } // FUN_0000cfd0 @ 0000cfd0 void FUN_0000cfd0(long param_1,uint param_2,long param_3) { long lVar1; int iVar2; long *plVar3; uint uVar4; long lVar5; long lVar6; lVar5 = (ulong)param_2 * 0x20; lVar6 = *(long *)(param_1 + lVar5); lVar5 = *(long *)(param_1 + lVar5 + 8); plVar3 = (long *)(param_1 + 0xd0); if (param_2 < 2) { plVar3 = (long *)(param_1 + 200); } lVar1 = *plVar3; uVar4 = FUN_0000bde4(); iVar2 = (param_2 & 1) * 0x30; *(uint *)(lVar1 + (ulong)(iVar2 + 0x18)) = uVar4 | 0xffff0000; *(undefined4 *)(lVar1 + (ulong)(iVar2 + 4)) = 0x1f0017; if ((*(uint *)(lVar6 + 0x10100) & 1) == 0) { uVar4 = 0x2000; } else { uVar4 = 0x2fff; } *(uint *)(lVar1 + (ulong)(iVar2 + 0x24)) = uVar4 | 0x2fff0000; *(undefined4 *)(lVar1 + (ulong)((param_2 & 1) + 0x4c) * 4) = 0x40004000; *(uint *)(lVar5 + 0xe04) = *(uint *)(lVar5 + 0xe04) | 0x80000000; if (*(long *)(param_1 + 0xe8) != 0) { *(uint *)(lVar6 + 0x10180) = *(uint *)(lVar6 + 0x10180) | 0x200; } uVar4 = 3; if (*(int *)(param_3 + (ulong)param_2 * 0x6c) != 2) { uVar4 = 1; } if (*(int *)(param_1 + 0xec) == 0) { *(uint *)(lVar6 + 0x10180) = *(uint *)(lVar6 + 0x10180) & 0xffffff0f; } else { *(uint *)(lVar6 + 0x10180) = *(uint *)(lVar6 + 0x10180) & 0xffffff0f | uVar4 << 4; } if (*(int *)(param_1 + 0xe8) == 0) { uVar4 = *(uint *)(lVar6 + 0x10180) & 0xfffffff0; } else { uVar4 = *(uint *)(lVar6 + 0x10180) & 0xfffffff0 | uVar4; } *(uint *)(lVar6 + 0x10180) = uVar4; return; } // FUN_0000d10c @ 0000d10c void FUN_0000d10c(long param_1,uint param_2,long param_3) { long lVar1; int iVar2; long *plVar3; long lVar4; long lVar5; lVar5 = (ulong)param_2 * 0x20; lVar4 = *(long *)(param_1 + lVar5); plVar3 = (long *)(param_1 + 0xd0); if (param_2 < 2) { plVar3 = (long *)(param_1 + 200); } lVar1 = *plVar3; *(undefined4 *)(param_3 + lVar5 + 0x238) = *(undefined4 *)(lVar4 + 0x10180); *(uint *)(lVar4 + 0x10180) = *(uint *)(lVar4 + 0x10180) & 0xfffbfd00; do { } while ((*(uint *)(lVar4 + 0x10014) & 7) != 1); param_3 = param_3 + (ulong)param_2 * 0x20; iVar2 = (param_2 & 1) * 0x30; lVar4 = (ulong)((param_2 & 1) + 0x4c) * 4; *(uint *)(param_3 + 0x244) = *(uint *)(lVar1 + (ulong)(iVar2 + 0x18)) & 0xffff; *(uint *)(param_3 + 0x240) = *(uint *)(lVar1 + (ulong)(iVar2 + 4)) & 0x1f; *(undefined4 *)(lVar1 + (ulong)(iVar2 + 4)) = 0x1f0000; *(uint *)(param_3 + 0x248) = *(uint *)(lVar1 + (ulong)(iVar2 + 0x24)) & 0x2fff; *(undefined4 *)(lVar1 + (ulong)(iVar2 + 0x24)) = 0x2fff0fff; *(uint *)(param_3 + 0x24c) = *(uint *)(lVar1 + lVar4) & 0x4000; *(undefined4 *)(lVar1 + lVar4) = 0x40000000; return; } // FUN_0000d1d0 @ 0000d1d0 void FUN_0000d1d0(long param_1,uint param_2,long param_3) { long lVar1; int iVar2; long *plVar3; uint uVar4; long lVar5; plVar3 = (long *)(param_1 + 0xd0); if (param_2 < 2) { plVar3 = (long *)(param_1 + 200); } lVar1 = *plVar3; lVar5 = *(long *)(param_1 + (ulong)param_2 * 0x20); uVar4 = FUN_0000bde4(); param_3 = param_3 + (ulong)param_2 * 0x20; iVar2 = (param_2 & 1) * 0x30; *(uint *)(param_3 + 0x244) = uVar4; *(uint *)(lVar1 + (ulong)(iVar2 + 0x18)) = uVar4 | 0xffff0000; *(uint *)(lVar1 + (ulong)(iVar2 + 4)) = *(uint *)(param_3 + 0x240) | 0x1f0000; *(uint *)(lVar1 + (ulong)(iVar2 + 0x24)) = *(uint *)(param_3 + 0x248) | 0x2fff0000; *(uint *)(lVar1 + (ulong)((param_2 & 1) + 0x4c) * 4) = *(uint *)(param_3 + 0x24c) | 0x40000000; *(undefined4 *)(lVar5 + 0x10180) = *(undefined4 *)(param_3 + 0x238); return; } // FUN_0000d27c @ 0000d27c void FUN_0000d27c(long param_1) { uint uVar1; long *plVar2; long lVar3; uint *puVar4; lVar3 = *(long *)(param_1 + 0x88); *(undefined4 *)(lVar3 + 0x850) = 0x22012201; *(undefined4 *)(lVar3 + 0x854) = 0x200020; *(undefined4 *)(lVar3 + 0x85c) = 0x22012201; *(undefined4 *)(lVar3 + 0x860) = 0x200020; *(undefined4 *)(lVar3 + 0x850) = 0x88048804; *(undefined4 *)(lVar3 + 0x854) = 0x800080; *(undefined4 *)(lVar3 + 0x85c) = 0x88048804; *(undefined4 *)(lVar3 + 0x860) = 0x800080; *(undefined4 *)(lVar3 + 0x858) = 0x630063; *(undefined4 *)(lVar3 + 0x864) = 0x630063; puVar4 = (uint *)(param_1 + 0xd8); do { uVar1 = *puVar4; if (uVar1 != 0xf) { lVar3 = *(long *)(param_1 + (ulong)uVar1 * 0x20 + 8); *(uint *)(lVar3 + 0x18) = *(uint *)(lVar3 + 0x18) | 0x1000; plVar2 = (long *)(param_1 + 0xd0); if (uVar1 < 2) { plVar2 = (long *)(param_1 + 200); } *(undefined4 *)(*plVar2 + (ulong)((uVar1 & 1) * 0x30 + 0x1c)) = 0xf000f; } puVar4 = puVar4 + 1; } while (puVar4 != (uint *)(param_1 + 0xe8)); return; } // FUN_0000d328 @ 0000d328 void FUN_0000d328(long param_1) { long lVar1; lVar1 = *(long *)(param_1 + 0xb8); *(undefined4 *)(lVar1 + 0x8110) = 0xf000f000; do { } while ((*(uint *)(lVar1 + 0x8118) & 0xf0000000) == 0); do { } while ((*(uint *)(lVar1 + 0x8120) & 0xf0000000) == 0); *(undefined4 *)(lVar1 + 0x8160) = 0x30003; *(undefined4 *)(lVar1 + 0x8154) = 0x30003; do { } while ((*(uint *)(lVar1 + 0x8184) & 3) == 0); *(undefined4 *)(lVar1 + 0x8154) = 0x30000; do { } while ((*(uint *)(lVar1 + 0x8184) & 3) != 0); *(undefined4 *)(lVar1 + 0x8160) = 0x30000; *(undefined4 *)(lVar1 + 0x8110) = 0xf0000000; return; } // FUN_0000d390 @ 0000d390 void FUN_0000d390(undefined8 *param_1) { *param_1 = 0xf7000000; param_1[4] = 0xf8000000; param_1[8] = 0xf9000000; param_1[0xc] = 0xfa000000; param_1[1] = 0xfe0c0000; param_1[5] = 0xfe0d0000; param_1[9] = 0xfe0e0000; param_1[0xd] = 0xfe0f0000; param_1[2] = 0xfd800000; param_1[6] = 0xfd804000; param_1[10] = 0xfd808000; param_1[0xe] = 0xfd80c000; param_1[3] = 0xfe000000; param_1[7] = 0xfe002000; param_1[0xb] = 0xfe004000; param_1[0xf] = 0xfe006000; param_1[0x19] = 0xfd59c000; param_1[0x1a] = 0xfd59d000; param_1[0x13] = 0xfd586000; param_1[0x14] = 0xfd587000; param_1[0x11] = 0xfd7c0000; param_1[0x17] = 0xfd8d0000; param_1[0x18] = 0xfd588000; param_1[0x10] = 0xfd58a000; param_1[0x12] = 0xfd59e000; return; } // FUN_0000d468 @ 0000d468 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_0000d468(long param_1,uint *param_2,int param_3) { uint uVar1; int iVar2; uint uVar3; uint uVar4; bool bVar5; uint uVar6; int iVar8; uint uVar9; uint *puVar10; uint uVar11; uint uVar12; int iVar13; uint uVar14; uint uVar7; uVar1 = *(uint *)(param_1 + 0x2c); uVar14 = 0; for (puVar10 = (uint *)(param_1 + 4); puVar10 != (uint *)(param_1 + (ulong)*(uint *)(param_1 + 0x30) * 0x14 + 4); puVar10 = puVar10 + 5) { if (*puVar10 != 0) { if (uVar14 < puVar10[1]) { uVar14 = puVar10[1]; } if ((1 < *puVar10) && (uVar14 < puVar10[2])) { uVar14 = puVar10[2]; } } } FUN_00000aac(param_2,0,0x2ac); uVar11 = *(uint *)(param_1 + 0x34); iVar2 = *(int *)(param_1 + 0x34); bVar5 = *(int *)(param_1 + 0x10) == 8; uVar9 = *(uint *)(param_1 + 0x44); *param_2 = uVar1; param_2[0x79] = 0; param_2[0x7c] = uVar11; iVar13 = bVar5 + 9; uVar6 = (uint)bVar5; uVar7 = (uint)bVar5; uVar11 = (uint)(uVar11 == 0x20); if (uVar1 < 0x10b) { if (4 < _DAT_00015140) { LAB_0000d5c0: if (_DAT_00015140 < 7) { if (uVar9 == 0) { uVar7 = 10; } else { uVar7 = 0xc; } param_2[0x4e] = 9; param_2[0x7d] = (bVar5 + 5) * 2; param_2[0x7b] = 6; uVar12 = 0x14; param_2[0x2a] = 0; param_2[0x2b] = 0; param_2[0x7a] = uVar7; param_2[0xe] = 8; } else { LAB_0000d620: if (_DAT_00015140 < 9) { if (uVar9 == 0) { iVar8 = uVar7 + 7; } else { iVar8 = uVar7 + 8; } param_2[0x4e] = 0x12; param_2[0x7a] = iVar8 << 1; param_2[0x7d] = 0x10; param_2[0x2a] = 0; param_2[0x2b] = 0; uVar12 = 0x24; param_2[0xe] = 8; param_2[0x7b] = 8; } else { LAB_0000d678: if (_DAT_00015140 < 0xb) { iVar8 = uVar7 + 10; if (uVar9 != 0) { iVar8 = uVar7 + 0xb; } param_2[0x7a] = iVar8 * 2; param_2[0x7b] = 10; param_2[0xe] = 8; param_2[0x4e] = 0x1b; param_2[0x2a] = 4; uVar12 = 0x34; param_2[0x7d] = (uVar7 + 10) * 2; param_2[0x2b] = 0x14; } else { LAB_0000d6e4: if (_DAT_00015140 < 0xd) { if (uVar9 == 0) { iVar8 = uVar7 + 0xc; } else { iVar8 = uVar7 + 0xe; } param_2[0x4e] = 0x24; param_2[0x7a] = iVar8 << 1; param_2[0xe] = 10; param_2[0x7b] = 0xc; param_2[0x2a] = 4; uVar12 = 0x44; param_2[0x7d] = (uVar6 + 6) * 4; param_2[0x2b] = 0x16; } else { LAB_0000d750: if (_DAT_00015140 < 0xf) { if (uVar9 == 0) { iVar8 = uVar6 + 7; } else { iVar8 = uVar6 + 8; } param_2[0x7a] = iVar8 << 2; param_2[0x4e] = 0x2d; param_2[0xe] = 0xc; param_2[0x7b] = 0xe; param_2[0x2a] = 6; uVar12 = 0x54; param_2[0x7d] = (uVar6 + 0xf) * 2; param_2[0x2b] = 0x18; } else { LAB_0000d7bc: if (0x10 < _DAT_00015140) goto LAB_0000d820; iVar8 = iVar13; if (uVar9 == 0) { iVar8 = uVar7 + 8; } param_2[0x7a] = iVar8 * 4; param_2[0x4e] = 0x36; param_2[0xe] = 0xe; param_2[0x7b] = 0x10; uVar12 = 100; param_2[0x2a] = 6; param_2[0x7d] = (uint)bVar5 * 4 + 0x22; param_2[0x2b] = 0x1a; } } } } } goto LAB_0000d608; } uVar11 = uVar11 | 4; param_2[0x7a] = 6; param_2[0x7d] = 6; param_2[0x2a] = 0; param_2[0x2b] = 0; param_2[0x4e] = 0; param_2[0x7b] = 4; param_2[0xe] = 8; } else { if (uVar1 < 0x216) goto LAB_0000d5c0; if (uVar1 < 0x321) goto LAB_0000d620; if (uVar1 < 0x42b) goto LAB_0000d678; if (uVar1 < 0x536) goto LAB_0000d6e4; if (uVar1 < 0x641) goto LAB_0000d750; if (uVar1 < 0x74b) goto LAB_0000d7bc; LAB_0000d820: iVar8 = iVar13; if (uVar9 != 0) { iVar8 = uVar7 + 10; } param_2[0x4e] = 0x3f; param_2[0x7b] = 0x12; param_2[0xe] = 0x10; param_2[0x7d] = (uVar7 + 10) * 4; param_2[0x2a] = 8; uVar12 = 0x74; param_2[0x7a] = iVar8 * 4; param_2[0x2b] = 0x1c; LAB_0000d608: uVar11 = uVar11 | uVar12; } param_2[0x4d] = uVar11; uVar11 = *(uint *)(param_1 + 0x48); if (uVar9 != 0) { uVar9 = 0x40; } if (uVar11 != 0) { uVar11 = 0x80; } uVar7 = uVar9 | uVar11 | 1; if (param_3 == 8) { uVar7 = uVar9 | uVar11; } uVar9 = *(uint *)(param_1 + 0x4c); if (uVar9 == 0x50) { uVar7 = uVar7 | 0x18; } else if (uVar9 < 0x51) { if (uVar9 == 0x30) { uVar7 = uVar7 | 0x28; } else if (uVar9 == 0x3c) { uVar7 = uVar7 | 0x20; } else { LAB_0000d5b0: uVar7 = uVar7 | 0x30; } } else if (uVar9 == 0x78) { uVar7 = uVar7 | 0x10; } else { if (uVar9 != 0xf0) goto LAB_0000d5b0; uVar7 = uVar7 | 8; } param_2[0x4f] = uVar7; uVar9 = *(uint *)(param_1 + 0x40); param_2[0x4c] = 0; if (uVar9 != 0) { uVar9 = *(uint *)(param_1 + 0x50); if (uVar9 == 0x3c) { uVar9 = 4; } else if (uVar9 < 0x3d) { if (uVar9 == 0) { uVar9 = 0; } else if (uVar9 == 0x30) { uVar9 = 5; } else { LAB_0000d8b0: uVar9 = 6; } } else if (uVar9 == 0x78) { uVar9 = 2; } else if (uVar9 == 0xf0) { uVar9 = 1; } else { if (uVar9 != 0x50) goto LAB_0000d8b0; uVar9 = 3; } } uVar11 = *(uint *)(param_1 + 0x54); if (uVar11 == 0x3c) { uVar9 = uVar9 | 0x40; goto LAB_0000d968; } if (uVar11 < 0x3d) { if (uVar11 == 0) goto LAB_0000d968; if (uVar11 == 0x30) { uVar9 = uVar9 | 0x50; goto LAB_0000d968; } } else { if (uVar11 == 0x78) { uVar9 = uVar9 | 0x20; goto LAB_0000d968; } if (uVar11 == 0xf0) { uVar9 = uVar9 | 0x10; goto LAB_0000d968; } if (uVar11 == 0x50) { uVar9 = uVar9 | 0x30; goto LAB_0000d968; } } uVar9 = uVar9 | 0x60; LAB_0000d968: param_2[0x53] = uVar9; uVar6 = (uVar1 * 5 + 999) / 1000; uVar9 = (uVar1 * 200000 + 999) / 1000; uVar7 = (uVar1 * 10 + 999) / 1000; param_2[4] = uVar6; param_2[5] = (uVar1 * 2000 + 999) / 1000; uVar11 = (uVar1 * 2000000 + 999) / 1000; param_2[6] = uVar9; uVar12 = (uVar1 * 0xf3c) / 1000; param_2[1] = uVar9; param_2[2] = uVar7; param_2[3] = uVar11; param_2[7] = uVar11; param_2[8] = uVar12; uVar9 = (uVar1 * 0x12 + 999) / 1000; uVar11 = (uVar1 * 0x15 + 999) / 1000; if (uVar9 < 4) { uVar9 = 4; } param_2[9] = uVar9; param_2[10] = uVar9; uVar3 = (uVar1 * 0x2a + 999) / 1000; if (uVar11 < 4) { uVar11 = 4; } param_2[0xb] = uVar11; if (uVar3 < 3) { uVar3 = 3; } if (uVar7 < 4) { uVar7 = 4; } param_2[0x16] = uVar3; param_2[0xf] = uVar11 + uVar3; param_2[0x11] = uVar7; param_2[0x10] = uVar9 + uVar3; if (iVar2 == 0x20) { uVar11 = 0x10; } else { uVar11 = 8; } param_2[0x12] = uVar11; uVar12 = uVar12 * 9; iVar13 = iVar13 * uVar1 * 2; param_2[0x14] = 0; param_2[0x5b] = param_2[0x12] << 2; uVar11 = (iVar13 + 999U) / 1000; uVar7 = (iVar13 + uVar1 * -8 + 999) / 1000; if (uVar11 < 6) { uVar11 = 6; } param_2[0xc] = uVar11; if (uVar7 < 8) { uVar7 = 8; } param_2[0x13] = uVar7; uVar11 = (uVar1 * 0x11238) / 1000; if (uVar12 < uVar11) { uVar11 = uVar12; } param_2[0x15] = uVar11; param_2[0x17] = (uVar1 * 0x28 + 999) / 1000; uVar11 = uVar1 >> 1; if (uVar14 < 0x40000001) { if (uVar14 < 0x20000001) { if (uVar14 < 0x10000001) { uVar14 = (uVar1 * 0x3c + 999) / 1000; param_2[0x19] = uVar14; param_2[0x5c] = uVar14; param_2[0x18] = (uVar1 * 0x82 + 999) / 1000; iVar13 = 0x89; } else { param_2[0x5c] = (uVar1 * 0x5a + 999) / 1000; param_2[0x19] = (uVar1 * 900 + 999) / 1000; param_2[0x18] = (uVar1 * 0xb4 + 999) / 1000; iVar13 = 0xbb; } } else { param_2[0x5c] = (uVar1 * 0x5a + 999) / 1000; param_2[0x19] = (uVar1 * 0x8c + 999) / 1000; param_2[0x18] = (uVar1 * 0x118 + 999) / 1000; iVar13 = 0x11f; } } else { param_2[0x5c] = (uVar1 * 0x5a + 999) / 1000; param_2[0x19] = (uVar1 * 0xbe + 999) / 1000; param_2[0x18] = (uVar1 * 0x17c + 999) / 1000; iVar13 = 0x183; } uVar7 = uVar1 * 3; param_2[0x29] = uVar9 + 3; uVar14 = (uVar11 + uVar1 * iVar13 + 999) / 1000; if (uVar14 < 2) { uVar14 = 2; } param_2[0x1c] = uVar14; param_2[0x1d] = uVar14; uVar12 = (uVar1 + 999 + (uVar7 >> 2)) / 1000; uVar3 = (uVar1 * 0x1e + 999) / 1000; param_2[0x1a] = uVar11 / 1000; param_2[0x61] = uVar12; param_2[99] = uVar12; param_2[0x5d] = 4; param_2[0x1b] = (uVar7 / 5 + uVar7 + 999) / 1000; uVar9 = (uVar11 + uVar1 * 7 + 999) / 1000; uVar14 = uVar9; if (uVar9 < 5) { uVar14 = 5; } if (uVar9 < 4) { uVar9 = 4; } param_2[0x1e] = uVar14; if (uVar12 < 3) { uVar12 = 3; } param_2[0x21] = uVar9; param_2[0x5e] = uVar12; param_2[0x60] = uVar12; param_2[100] = uVar14; uVar4 = (uVar1 * 0xf + 999) / 1000; param_2[0x68] = uVar12; param_2[0x70] = uVar12; param_2[0x71] = uVar14; if (uVar4 < 3) { uVar4 = 3; } param_2[0x5f] = uVar4; if (uVar6 < 5) { uVar6 = 5; } param_2[0x62] = uVar6; uVar14 = (uVar1 * 0xe + 999) / 1000; if (uVar14 < 10) { uVar14 = 10; } param_2[0x65] = uVar14; param_2[0x27] = uVar14; param_2[0x28] = 8; if (uVar3 < 8) { uVar3 = 8; } param_2[0x67] = uVar3; uVar6 = (uVar1 + 999 + uVar11) / 1000; uVar14 = (uVar11 + uVar7 + 999) / 1000; param_2[0x32] = uVar6; param_2[0x34] = uVar14; param_2[0x35] = uVar6; param_2[0x36] = uVar14; param_2[0x66] = (uVar1 * 1000 + 999) / 1000; uVar14 = (uVar1 * 0x32 + 999) / 1000; if (uVar14 < 3) { uVar14 = 3; } param_2[0x40] = uVar14; param_2[0x41] = 0x28; param_2[0x43] = 0x14; uVar14 = (uVar1 * 0x14 + 999) / 1000; uVar11 = (uVar1 * 0xfa + 999) / 1000; param_2[0x42] = uVar14; param_2[0x45] = uVar11; param_2[0x49] = uVar14; param_2[0x4a] = uVar6; param_2[0x69] = uVar11; param_2[0x6d] = uVar11; param_2[0x6e] = uVar9; param_2[0x6f] = uVar9; uVar14 = (uVar1 * 100 + 999) / 1000; param_2[0x6a] = uVar14; param_2[0x6c] = uVar14; param_2[0x6b] = (uVar1 * 200 + 999) / 1000; return; } // FUN_0000de34 @ 0000de34 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_0000de34(undefined4 param_1) { _DAT_00015140 = param_1; return; } // FUN_0000de40 @ 0000de40 undefined8 FUN_0000de40(long param_1,uint *param_2) { int iVar1; int iVar2; int iVar3; int iVar4; uint uVar5; uint uVar6; int iVar7; uint uVar8; uint uVar9; uint uVar10; uint uVar11; uint uVar12; bool bVar13; int iVar14; uint uVar15; uint uVar16; uint *puVar17; undefined4 *puVar18; int iVar19; uint uVar20; int iVar21; uint uVar22; uint uVar23; undefined *puVar24; uint uVar25; uint uVar26; uint uVar27; uint uVar28; uint uVar29; long lVar30; iVar19 = *(int *)(param_1 + 0x28); if (iVar19 == 8) { LAB_0000de78: FUN_0000d468(); return 0; } if (iVar19 != 9) { if (iVar19 != 7) { return 0xffffffff; } goto LAB_0000de78; } uVar28 = 0; uVar23 = *(uint *)(param_1 + 0x2c); for (puVar17 = (uint *)(param_1 + 4); puVar17 != (uint *)(param_1 + (ulong)*(uint *)(param_1 + 0x30) * 0x14 + 4); puVar17 = puVar17 + 5) { if (*puVar17 != 0) { if (uVar28 < puVar17[1]) { uVar28 = puVar17[1]; } if ((1 < *puVar17) && (uVar28 < puVar17[2])) { uVar28 = puVar17[2]; } } } uVar22 = uVar23 * 2; iVar19 = *(int *)(param_1 + 0x10); if (*(int *)(param_1 + 0x60) == 0x80) { uVar26 = uVar23 >> 1; uVar27 = 2; } else { uVar26 = uVar23 >> 2; uVar27 = 4; } if (*(int *)(param_1 + 0x6c) == 0) { if (iVar19 == 8) { if (*(int *)(param_1 + 0x44) != 0) { lVar30 = 2; goto LAB_0000e07c; } } else if (*(int *)(param_1 + 0x44) == 0) { lVar30 = 0; uVar29 = 0; goto LAB_0000df4c; } lVar30 = 1; uVar29 = (uint)(iVar19 == 8); } else { if (uVar23 < 0x640) { return 0xffffffff; } if (iVar19 == 8) { lVar30 = 1; LAB_0000e07c: uVar29 = 1; } else { lVar30 = 0; uVar29 = 0; } } LAB_0000df4c: iVar4 = *(int *)(param_1 + 0x68); FUN_00000aac(param_2,0,0x2ac); uVar5 = *(uint *)(param_1 + 0x60); uVar20 = *(uint *)(param_1 + 0x34); iVar1 = *(int *)(param_1 + 0x68); iVar3 = *(int *)(param_1 + 0x6c); param_2[4] = 5; param_2[0x79] = 0; param_2[0x7c] = uVar20; uVar25 = (uVar26 * 2000000 + 999) / 1000; uVar9 = (uVar26 * 200000 + 999) / 1000; uVar10 = (uVar26 * 10 + 999) / 1000; param_2[6] = uVar9; param_2[7] = uVar25; *param_2 = uVar23; param_2[1] = uVar9; param_2[2] = uVar10; param_2[3] = uVar25; iVar14 = *(int *)(param_1 + 0x6c); param_2[5] = (uVar26 * 2000 + 999) / 1000; param_2[0x5a] = iVar14 << 6 | *(int *)(param_1 + 0x68) << 4; if (uVar5 == 0x80) { if (uVar22 < 0x216) { puVar24 = &DAT_00011ff0; puVar18 = &DAT_00012220; } else if (uVar22 < 0x42c) { puVar24 = &DAT_0001200c; puVar18 = &DAT_00012220; LAB_0000e2a8: puVar18 = puVar18 + 0x12; } else if (uVar22 < 0x641) { puVar24 = &DAT_00012028; puVar18 = &DAT_00012220; LAB_0000e2d4: puVar18 = puVar18 + 0x24; } else { if (0x855 < uVar22) { if (0xabe < uVar22) { if (0xc80 < uVar22) { return 0xffffffff; } puVar18 = &DAT_00012220; puVar24 = &DAT_0001207c; goto LAB_0000e358; } puVar18 = &DAT_00012220; puVar24 = &DAT_00012060; goto LAB_0000e32c; } puVar24 = &DAT_00012044; puVar18 = &DAT_00012220; LAB_0000e300: puVar18 = puVar18 + 0x36; } } else if (uVar22 < 0x216) { puVar24 = &DAT_00012098; puVar18 = &DAT_000123d0; } else { if (uVar22 < 0x42c) { puVar24 = (undefined *)0x120b4; puVar18 = &DAT_000123d0; goto LAB_0000e2a8; } if (uVar22 < 0x641) { puVar24 = (undefined *)0x120d0; puVar18 = &DAT_000123d0; goto LAB_0000e2d4; } if (uVar22 < 0x856) { puVar24 = (undefined *)0x120ec; puVar18 = &DAT_000123d0; goto LAB_0000e300; } if (uVar22 < 0xabf) { puVar24 = (undefined *)0x12108; puVar18 = &DAT_000123d0; LAB_0000e32c: puVar18 = puVar18 + 0x48; } else if (uVar22 < 0xc81) { puVar24 = (undefined *)0x12124; puVar18 = &DAT_000123d0; LAB_0000e358: puVar18 = puVar18 + 0x5a; } else if (uVar22 < 0xe96) { puVar24 = &DAT_00012140; if (iVar14 == 0) { puVar18 = &DAT_000123d0; LAB_0000e384: puVar18 = puVar18 + 0x6c; } else { puVar18 = &DAT_000127c0; } } else if (uVar22 < 0x10ac) { puVar24 = &DAT_0001215c; if (iVar14 != 0) { puVar18 = &DAT_000127c0; goto LAB_0000e2a8; } puVar18 = &DAT_000123d0; LAB_0000e3b0: puVar18 = puVar18 + 0x7e; } else if (uVar22 < 0x12c1) { puVar24 = &DAT_00012178; if (iVar14 != 0) { puVar18 = &DAT_000127c0; goto LAB_0000e2d4; } puVar18 = &DAT_00012610; } else if (uVar22 < 0x157d) { puVar24 = &DAT_00012194; if (iVar14 != 0) { puVar18 = &DAT_000127c0; goto LAB_0000e300; } puVar18 = &DAT_00012658; } else if (uVar22 < 0x1771) { puVar24 = &DAT_000121b0; if (iVar14 != 0) { puVar18 = &DAT_000127c0; puVar24 = &DAT_000121b0; goto LAB_0000e32c; } puVar18 = &DAT_000126a0; } else if (uVar22 < 0x1901) { puVar24 = &DAT_000121cc; if (iVar14 != 0) { puVar18 = &DAT_000127c0; puVar24 = &DAT_000121cc; goto LAB_0000e358; } puVar18 = &DAT_000126e8; } else if (uVar22 < 0x1d4d) { puVar24 = &DAT_000121e8; if (iVar14 != 0) { puVar18 = &DAT_000127c0; puVar24 = &DAT_000121e8; goto LAB_0000e384; } puVar18 = &DAT_00012730; } else { if (0x2155 < uVar22) { return 0xffffffff; } puVar24 = &DAT_00012204; if (iVar14 != 0) { puVar18 = &DAT_000127c0; puVar24 = &DAT_00012204; goto LAB_0000e3b0; } puVar18 = &DAT_00012778; } } uVar25 = *(uint *)(param_1 + 0x8c); param_2[0x7b] = puVar18[3]; param_2[0x84] = puVar18[7]; uVar8 = uVar26 >> 1; param_2[0x85] = puVar18[9]; param_2[0x86] = puVar18[10]; param_2[0x87] = puVar18[0xb]; param_2[0x7a] = puVar18[lVar30]; param_2[0x88] = puVar18[lVar30 + 0xc]; param_2[0x89] = puVar18[0xf]; param_2[0x8a] = puVar18[0x10]; param_2[0x8b] = puVar18[0x11]; param_2[0x7d] = *(uint *)(puVar24 + ((ulong)(iVar4 != 0) * 2 + (ulong)uVar29) * 4); uVar6 = puVar18[5]; param_2[0x4d] = puVar18[6]; iVar4 = *(int *)(param_1 + 0x7c); uVar29 = *(uint *)(param_1 + 0x80); param_2[0x4e] = uVar6 | *(uint *)(puVar24 + 0x18); param_2[0x7e] = iVar4 << 1 | *(int *)(param_1 + 0x78) << 4 | uVar25 << 2 | uVar29 << 6 | *(uint *)(param_1 + 0x84); uVar6 = *(uint *)(param_1 + 100); iVar4 = *(int *)(param_1 + 0x78); if (uVar5 == 0x80) { uVar20 = uVar20 >> 2; param_2[0x81] = uVar20; param_2[0x82] = uVar20; param_2[0x83] = uVar20; param_2[0x99] = uVar29; uVar20 = 0; uVar11 = (uVar8 + uVar26 * 7 + 999) / 1000; if (uVar11 < 4) { uVar11 = 4; } iVar14 = 2; if (uVar29 == 3) { iVar14 = 4; } uVar15 = uVar25 + 2; param_2[0x8f] = uVar11 - 4; uVar25 = uVar25 + 1; param_2[0xa0] = uVar15; param_2[0xa1] = uVar25; param_2[0x28] = 8; param_2[0x98] = uVar29 + 1; } else { if (uVar6 == 0) { param_2[0x81] = uVar20 >> 2; param_2[0x83] = uVar20 >> 2; if (uVar20 == 0x10) { uVar20 = 2; param_2[0x82] = 2; } else { uVar20 = uVar20 >> 4; param_2[0x82] = uVar20 * 3; } } else { uVar20 = uVar20 >> 3; param_2[0x81] = uVar20; param_2[0x82] = uVar20; param_2[0x83] = uVar20; uVar20 = 0; } uVar11 = (uVar8 + uVar26 * 7 + 999) / 1000; if (uVar11 < 2) { uVar11 = 2; } param_2[0x8f] = uVar11 - 2; param_2[0x98] = (uVar29 == 2) + 1; param_2[0x99] = (uint)(uVar29 == 2); bVar13 = uVar25 != 0; iVar14 = (uVar29 == 3) + 1; param_2[0xa1] = (uint)bVar13; if (uVar25 != 2) { uVar25 = 1; } uVar29 = (uint)(uVar29 != 0); param_2[0xa0] = bVar13 + 1; param_2[0x28] = 4; } iVar2 = *(int *)(param_1 + 0x40); iVar21 = *(int *)(param_1 + 0x44); iVar7 = *(int *)(param_1 + 0x48); uVar11 = *(uint *)(param_1 + 0x50); param_2[0x53] = 0; param_2[0x4f] = iVar7 << 7 | iVar21 << 6 | uVar6 | 6; if (iVar2 != 0) { if (uVar11 == 0x50) { uVar15 = 3; LAB_0000e490: param_2[0x53] = uVar15; } else { if (0x50 < uVar11) { if (uVar11 == 0x78) { uVar15 = 2; } else { if (uVar11 != 0xf0) goto LAB_0000e250; uVar15 = 1; } goto LAB_0000e490; } if (uVar11 == 0x30) { uVar15 = 6; goto LAB_0000e490; } if (uVar11 == 0x3c) { uVar15 = 4; goto LAB_0000e490; } } LAB_0000e250: param_2[0x53] = param_2[0x53] | 8; } uVar15 = *(uint *)(param_1 + 0x54); if (uVar15 == 0x3c) { uVar16 = param_2[0x53] | 0x40; LAB_0000e4e0: param_2[0x53] = uVar16; } else { if (0x3c < uVar15) { uVar16 = param_2[0x53]; if (uVar15 == 0x78) { uVar16 = uVar16 | 0x20; } else if (uVar15 == 0xf0) { uVar16 = uVar16 | 0x10; } else { if (uVar15 != 0x50) goto LAB_0000e278; uVar16 = uVar16 | 0x30; } goto LAB_0000e4e0; } if (uVar15 != 0) { if (uVar15 == 0x30) { uVar16 = param_2[0x53] | 0x50; } else { LAB_0000e278: uVar16 = param_2[0x53] | 0x60; } goto LAB_0000e4e0; } } if (iVar2 != 0) { uVar15 = *(uint *)(param_1 + 0x58); if (uVar15 == 0x3c) { uVar16 = param_2[0x80] | 0x80; } else if (uVar15 < 0x3d) { if (uVar15 == 0) goto LAB_0000e560; if (uVar15 == 0x30) { uVar16 = param_2[0x80] | 0xa0; } else { LAB_0000e504: uVar16 = param_2[0x80] | 0xc0; } } else { uVar16 = param_2[0x80]; if (uVar15 == 0x78) { uVar16 = uVar16 | 0x40; } else if (uVar15 == 0xf0) { uVar16 = uVar16 | 0x20; } else { if (uVar15 != 0x50) goto LAB_0000e504; uVar16 = uVar16 | 0x60; } } param_2[0x80] = uVar16; } LAB_0000e560: param_2[0x55] = 0; if (uVar22 < 0xc81) { param_2[0x7f] = uVar5; } else { param_2[0x7f] = uVar5 | 8; } iVar2 = *(int *)(param_1 + 0x70); if (iVar2 != 0) { param_2[0x7f] = param_2[0x7f] | 0x10; } param_2[0x59] = *(uint *)(param_1 + 0x74); uVar15 = param_2[0x81]; if (uVar6 == 0) { uVar15 = param_2[0x82]; } param_2[0xe] = uVar15 + param_2[0x8f]; param_2[0x90] = uVar20; param_2[0x12] = param_2[0x81]; uVar20 = (uVar26 * 0xf3c) / 1000; param_2[8] = uVar20; if (uVar28 < 0x80000001) { if (0x40000000 < uVar28) { param_2[0x18] = (uVar26 * 0x118 + 999) / 1000; iVar21 = 0x8c; goto LAB_0000e5e4; } if (0x20000000 < uVar28) { param_2[0x18] = (uVar26 * 0xd2 + 999) / 1000; iVar21 = 0x78; goto LAB_0000e5e4; } if (uVar28 < 0x10000001) { param_2[0x18] = (uVar26 * 0x82 + 999) / 1000; iVar21 = 0x3c; } else { param_2[0x18] = (uVar26 * 0xb4 + 999) / 1000; iVar21 = 0x5a; } uVar28 = (uVar26 * iVar21 + 999) / 1000; param_2[0x19] = uVar28; } else { param_2[0x18] = (uVar26 * 0x17c + 999) / 1000; iVar21 = 0xbe; LAB_0000e5e4: param_2[0x19] = (uVar26 * iVar21 + 999) / 1000; uVar28 = (uVar26 * 0x5a + 999) / 1000; } param_2[0x5c] = uVar28; if (uVar6 == 8) { param_2[0x8c] = uVar10; } else { param_2[0x8c] = (uVar8 + uVar26 * 7 + 999) / 1000; } uVar20 = uVar20 * 9; uVar28 = (uVar26 * 0x12 + 999) / 1000; uVar15 = (uVar26 * 0x15 + 999) / 1000; param_2[0x5d] = 2; uVar16 = (uVar26 * 0x11238) / 1000; if (uVar28 < 2) { uVar28 = 2; } param_2[9] = uVar28; param_2[10] = uVar28; uVar12 = (uVar26 * 5 + 999) / 1000; if (uVar15 < 2) { uVar15 = 2; } param_2[0xb] = uVar15; if (uVar20 < uVar16) { uVar16 = uVar20; } uVar20 = (uVar26 * 0x2a + 999) / 1000; if (uVar20 < 3) { uVar20 = 3; } param_2[0x15] = uVar16; param_2[0x16] = uVar20; param_2[0xf] = uVar15 + uVar20; param_2[0x10] = uVar28 + uVar20; uVar20 = (uVar26 * 0x22 + 999) / 1000; uVar15 = (uVar26 * 0x14 + 999) / 1000; if (uVar20 < 3) { uVar20 = 3; } param_2[0xc] = uVar20; uVar20 = uVar12; if (uVar12 < 2) { uVar20 = 2; } param_2[0x11] = uVar20; param_2[0x17] = uVar15; iVar21 = (uVar26 >> 2) + uVar26 * 6; uVar20 = (iVar21 + 999U) / 1000; if (uVar20 < 4) { uVar20 = 4; } param_2[0x8e] = uVar20; uVar20 = (uVar26 * 0xc + 999) / 1000; if (uVar20 < 4) { uVar20 = 4; } param_2[0x74] = uVar20; if (iVar19 == 0x10) { if (uVar6 != 0x10) { if (uVar6 != 8) goto LAB_0000e740; uVar16 = uVar10; if (uVar10 < 2) { uVar16 = 2; } param_2[0x11] = uVar16; param_2[0x17] = (uVar26 * 0x28 + 999) / 1000; } param_2[0x13] = uVar20; } else if (iVar19 == 8) { if (uVar6 == 0) { uVar20 = (uVar26 * 0x24 + 999) / 1000; if (uVar20 < 3) { uVar20 = 3; } param_2[0xc] = uVar20; uVar20 = (uVar26 * 2 + iVar21 + 999) / 1000; if (uVar20 < 4) { uVar20 = 4; } param_2[0x8e] = uVar20; uVar20 = (uVar26 * 0xe + 999) / 1000; if (uVar20 < 4) { uVar20 = 4; } param_2[0x74] = uVar20; } else { if (uVar6 != 0x10) { if (uVar6 != 8) goto LAB_0000e740; uVar20 = uVar10; if (uVar10 < 2) { uVar20 = 2; } param_2[0x11] = uVar20; param_2[0x17] = (uVar26 * 0x28 + 999) / 1000; } uVar20 = (uVar26 * 0x24 + 999) / 1000; if (uVar20 < 3) { uVar20 = 3; } param_2[0xc] = uVar20; uVar20 = (uVar26 * 0xe + 999) / 1000; if (uVar20 < 4) { uVar20 = 4; } param_2[0x13] = uVar20; } } LAB_0000e740: uVar20 = uVar10; if (uVar10 < 5) { uVar20 = 5; } param_2[0x9d] = uVar20; param_2[0x29] = uVar28 + 2; param_2[0x8d] = 2; param_2[0x94] = 2; uVar20 = (uVar26 * 0xe + 999) / 1000; uVar28 = uVar20; if (uVar20 < 5) { uVar28 = 5; } param_2[0x27] = uVar28; uVar16 = (uVar26 * 7 + 999) / 1000; uVar28 = (uVar26 * 7 + uVar8 + 999) / 1000; if (uVar28 < 2) { uVar28 = 2; } param_2[0x1c] = uVar28 + param_2[0x18]; param_2[0x92] = 3; param_2[0x91] = uVar10 + 1; uVar28 = (uVar26 * 0xf + 999) / 1000; if (uVar28 < 2) { uVar28 = 2; } if (uVar12 < 3) { uVar12 = 3; } if (uVar16 < 3) { uVar16 = 3; } param_2[0x5f] = uVar28; param_2[0x1e] = uVar16; param_2[0x93] = uVar12; uVar28 = uVar20; if (uVar20 < 6) { uVar28 = 6; } param_2[0x97] = uVar28; param_2[0x95] = (uVar23 + 999 + (uVar23 * 3 >> 2)) / 1000; param_2[0x96] = (uVar26 * 3 + 999) / 1000; param_2[0x9a] = (uint)(((ulong)uVar26 * 6 + 9999) / 10000); if (uVar22 < 0xc81) { lVar30 = 0x76c; param_2[0x9b] = (uint)(((ulong)uVar26 * 0x13 + 9999) / 10000); } else { param_2[0x9b] = (uint)(((ulong)uVar26 * 0x10 + 9999) / 10000); lVar30 = 0x640; } param_2[0x9e] = uVar10 + 1; param_2[0x9f] = uVar9; uVar9 = (uVar8 + uVar26 * 3 + 999) / 1000; uVar23 = (uVar26 + uVar8) / 1000; param_2[0x9c] = (uint)(((ulong)uVar26 * lVar30) / 1000000); uVar28 = (uVar26 * 0x1e + 999) / 1000; param_2[0x36] = uVar9; uVar10 = (uVar26 + uVar8 + 999) / 1000; param_2[0x33] = uVar23; param_2[0x34] = uVar9; param_2[0xa5] = uVar28; param_2[0x32] = uVar10; param_2[0x35] = uVar10; param_2[0xa2] = (uVar26 * 0x5dc + 999) / 1000; param_2[0xa3] = (uVar26 * 3000 + 999) / 1000; param_2[0xa4] = (uVar26 * 6000 + 999) / 1000; if (uVar28 < 4) { uVar28 = 4; } param_2[0x67] = uVar28; uVar28 = (uVar26 * 0x32 + 999) / 1000; if (uVar28 < 3) { uVar28 = 3; } param_2[0x40] = uVar28; if (uVar20 < 0xe) { uVar20 = 0xe; } if (uVar15 < 0xe) { uVar15 = 0xe; } param_2[0x41] = uVar20; param_2[0x42] = uVar15; if (uVar5 == 0) { uVar28 = param_2[0x7b]; if (uVar22 < 0x641) { LAB_0000e954: uVar28 = uVar28 - 1; } else if (uVar22 < 0xe96) { LAB_0000ebdc: uVar28 = uVar28 - 2; } else { LAB_0000ec08: uVar28 = uVar28 - 3; } LAB_0000e958: param_2[0x2a] = uVar28; } else if (uVar5 == 0x80) { uVar28 = param_2[0x7b]; if (uVar22 < 0x216) goto LAB_0000e954; if (uVar22 < 0x641) goto LAB_0000ebdc; if (uVar22 < 0xabf) goto LAB_0000ec08; uVar28 = uVar28 - 4; goto LAB_0000e958; } uVar28 = param_2[0x7a]; if (uVar6 == 0x10 || uVar6 == 8) { if (uVar5 == 0x80) { uVar26 = param_2[0x7b] + 9; if (param_2[0x7c] == 0x10) { uVar26 = param_2[0x7b] + 5; } param_2[0x2b] = uVar26; } else if (uVar5 == 0) { uVar26 = param_2[0x7b] + 5; if (param_2[0x7c] == 0x10) { uVar26 = param_2[0x7b] + 3; } param_2[0x2b] = uVar26; goto LAB_0000ec38; } LAB_0000e990: if (uVar22 < 0x216) { uVar26 = uVar28 - 1; } else if (uVar22 < 0x641) { uVar26 = uVar28 - 2; } else if (uVar22 < 0xabf) { uVar26 = uVar28 - 3; } else { uVar26 = uVar28 - 4; } param_2[0x2d] = uVar26; if (uVar5 == 0x80) { uVar26 = uVar28 + 9; if (param_2[0x7c] == 0x10) { uVar26 = uVar28 + 5; } if (0x640 < uVar22) { uVar26 = uVar26 + 1; } goto LAB_0000e9c4; } if (uVar5 == 0) goto LAB_0000ec48; } else { if (uVar6 == 0) { uVar26 = param_2[0x7b] + 7; if (param_2[0x7c] == 0x10) { uVar26 = param_2[0x7b] + 3; } param_2[0x2b] = uVar26; } if (uVar5 != 0) goto LAB_0000e990; LAB_0000ec38: if (uVar22 < 0x641) { uVar26 = uVar28 - 1; } else if (uVar22 < 0xe96) { uVar26 = uVar28 - 2; } else { uVar26 = uVar28 - 3; } param_2[0x2d] = uVar26; LAB_0000ec48: if (uVar22 < 0xc81) { uVar26 = uVar28 + 5; if (param_2[0x7c] == 0x10) { uVar26 = uVar28 + 3; } } else { uVar26 = uVar28 + 4; if (uVar22 < 0xe96) { uVar26 = uVar28 + 3; } param_2[0x2c] = uVar26; if (uVar6 == 8) { uVar26 = uVar26 + 2; } else { uVar26 = uVar26 + 4; } } LAB_0000e9c4: param_2[0x2c] = uVar26; } iVar19 = *(int *)(param_1 + 0x74); uVar22 = param_2[0x2c]; uVar26 = param_2[0x2d]; param_2[0x2e] = uVar22; param_2[0x2f] = uVar26; if (iVar19 != 0) { if (iVar4 == 3) { if (uVar5 == 0) { uVar22 = uVar22 + 1; goto LAB_0000ed00; } } else { if (uVar5 == 0x80) { uVar22 = uVar22 + 2; LAB_0000ed00: uVar26 = uVar26 - 2; param_2[0x2c] = uVar22; } else { uVar26 = uVar26 - 1; param_2[0x2c] = uVar22 + 1; } param_2[0x2d] = uVar26; } } param_2[0x30] = param_2[0x2c]; param_2[0x31] = param_2[0x2d]; uVar22 = param_2[0x9b]; if (uVar6 == 0) { uVar26 = param_2[0x83]; if (uVar11 == 0) { uVar23 = (uVar22 - param_2[0x7b]) + uVar28 + uVar26; LAB_0000ed9c: param_2[0x14] = uVar23; } else { iVar19 = (uVar22 + param_2[0x99] + uVar28 + uVar26) - (uVar23 + param_2[0x2a]); param_2[0x14] = iVar19 + 1; if (((*(int *)(param_1 + 0x58) != 0) && (iVar1 == 0)) && (*(int *)(param_1 + 0x90) == 0)) { uVar23 = iVar19 + 2; goto LAB_0000ed9c; } } uVar26 = (param_2[0x14] + param_2[0x82]) - uVar26; } else { if (uVar11 == 0) { uVar26 = (uVar22 - param_2[0x7b]) + uVar28 + param_2[0x81]; LAB_0000eecc: param_2[0x14] = uVar26; } else { uVar23 = (((uVar22 + param_2[0x99] + uVar28 + param_2[0x81]) - param_2[0x2a]) + 1) - uVar23; param_2[0x14] = uVar23; if ((((iVar19 != 0) && (*(int *)(param_1 + 0x58) != 0)) && (iVar1 == 0)) && (*(int *)(param_1 + 0x90) == 0)) { uVar26 = uVar23 + 1; if (uVar5 != 0x80) goto LAB_0000eecc; param_2[0x14] = uVar23 + 2; } } uVar26 = param_2[0x14]; } param_2[0xaa] = uVar26; if (iVar1 != 0) { param_2[0x14] = param_2[0x14] + 1; } if (iVar2 == 0) { uVar23 = param_2[0x83]; uVar22 = param_2[0x84]; uVar26 = param_2[0x88]; if (uVar11 == 0) { iVar1 = uVar23 + uVar28 + uVar25; iVar19 = uVar23 + param_2[0x7b] + uVar25; param_2[0xa6] = iVar1 - uVar26; param_2[0xa8] = iVar1 - uVar22; param_2[0xa7] = iVar19 - uVar22; } else { iVar1 = uVar23 + uVar28 + uVar25; param_2[0xa6] = iVar1 - uVar26; uVar28 = param_2[0x36]; if (param_2[0x36] < uVar25) { uVar28 = uVar25; } iVar19 = uVar23 + param_2[0x7b] + uVar28; param_2[0xa7] = iVar19 - uVar22; uVar28 = param_2[0x2a] + param_2[0x33]; if (uVar22 < param_2[0x2a] + param_2[0x33]) { uVar28 = uVar22; } param_2[0xa8] = iVar1 - uVar28; } param_2[0xa9] = iVar19 - uVar26; goto LAB_0000ee34; } uVar23 = param_2[0x82]; if (uVar11 == 0) { param_2[0xa7] = uVar23 + 1; uVar26 = 0; if (uVar27 != 0) { uVar26 = 4 / uVar27; } uVar22 = (uVar22 - param_2[0x7b]) + uVar23 + uVar28 + uVar29; param_2[0xa6] = uVar26 + uVar23 + 1 + iVar14; uVar26 = (1 - uVar28) + uVar23 + param_2[0x7b]; param_2[0xa8] = uVar22; LAB_0000ef14: param_2[0xa9] = uVar26; LAB_0000ee1c: if ((iVar3 == 0) && (iVar1 == 0)) goto LAB_0000ee34; } else { uVar5 = param_2[0x2a]; if (*(int *)(param_1 + 0x58) == 0) { iVar19 = param_2[0x2b] + param_2[0x36]; uVar20 = 0; if (uVar27 != 0) { uVar20 = 4 / uVar27; } uVar26 = iVar19 - uVar28; param_2[0xa7] = iVar19 - uVar5; uVar22 = ((uVar28 + uVar22) - (uVar5 + param_2[0x33])) + 1; param_2[0xa8] = uVar22; param_2[0xa6] = uVar20 + iVar14 + uVar23 + 1; goto LAB_0000ef14; } iVar19 = param_2[0x2b] + param_2[0x36]; uVar26 = iVar19 - uVar28; iVar4 = *(int *)(param_1 + 0x90); uVar22 = (uVar22 + 1 + uVar28 + uVar23) - (uVar5 + param_2[0x33]); param_2[0xa6] = param_2[0x2c] - param_2[0x2d]; param_2[0xa7] = iVar19 - uVar5; param_2[0xa8] = uVar22; param_2[0xa9] = uVar26; if (iVar4 != 0) goto LAB_0000ee1c; } param_2[0xa8] = uVar29 + uVar22; param_2[0xa9] = iVar14 + uVar26; LAB_0000ee34: param_2[0x73] = param_2[0x11]; return 0; } // FUN_0000f170 @ 0000f170 undefined8 FUN_0000f170(long *param_1,int param_2,uint param_3,undefined4 param_4,long param_5, undefined4 param_6) { bool bVar1; bool bVar2; bool bVar3; uint uVar4; uint uVar5; uint uVar6; uint uVar7; long lVar8; long lVar9; undefined8 uVar10; uint uVar11; long *plVar12; uint uVar13; uint uVar14; uint uVar15; uint uVar16; uint uVar17; uint local_8; uint local_4; if (param_3 == 0xffffffff) { uVar13 = 0; } else { uVar13 = ~(1 << (ulong)(param_3 & 0x1f)); } FUN_00009628(&local_8,&local_4,param_2,param_3,param_4,param_6); FUN_000097f4(0,param_2,param_3,param_4,param_6); uVar4 = FUN_000002f4(*param_1,(int)param_1[1],1,*(undefined4 *)((long)param_1 + 0xc),uVar13, param_3); bVar1 = param_3 == 0xffffffff && param_2 == 0; if (bVar1) { plVar12 = param_1 + 2; do { lVar8 = *plVar12; if ((lVar8 != 0) && (lVar8 != *param_1)) { uVar5 = FUN_000002f4(lVar8,(int)param_1[1],1,*(undefined4 *)((long)param_1 + 0xc),uVar13, 0xffffffff); uVar4 = uVar4 | uVar5; } plVar12 = plVar12 + 1; } while (param_1 + 5 != plVar12); } uVar11 = 1; lVar8 = 0; uVar14 = 0; uVar5 = 0; LAB_0000f27c: bVar2 = true; bVar3 = false; uVar17 = 0; uVar15 = uVar14; LAB_0000f29c: if (!bVar2) goto LAB_0000f3e4; LAB_0000f2a0: uVar6 = uVar17 + 8; if (lVar8 == 0) { uVar6 = uVar17 - 8; } LAB_0000f2ac: uVar7 = uVar15; uVar16 = uVar5; if ((uVar4 != 0) && ((((uint)(0 < (int)uVar6) & ((uint)lVar8 ^ 1) & 1) != 0 || (((uVar11 & 1 ^ 1) & uVar6 >> 0x1f) != 0)))) { LAB_0000f4a4: if (uVar16 != 0 || uVar14 != 0) goto LAB_0000f4c8; uVar7 = 0; uVar16 = 0; goto LAB_0000f4b0; } if ((int)uVar6 < (int)local_8) { uVar17 = local_8; if (bVar2) { LAB_0000f2d8: if (!(bool)(uVar4 != 0 & (bVar3 ^ 1U))) { bVar2 = false; goto LAB_0000f2ec; } goto LAB_0000f4a4; } uVar7 = uVar14; uVar16 = local_8; if (lVar8 != 0) goto LAB_0000f408; LAB_0000f428: uVar7 = uVar15; uVar5 = uVar16; if (uVar4 != 0) goto LAB_0000f4a4; LAB_0000f4b8: lVar8 = lVar8 + 1; uVar11 = uVar11 + 1; goto LAB_0000f27c; } uVar17 = uVar6; if ((int)local_4 < (int)uVar6) { uVar17 = local_4; if (bVar2) goto LAB_0000f2d8; uVar7 = local_4; if (lVar8 == 0) goto LAB_0000f428; LAB_0000f408: uVar14 = uVar7; uVar16 = uVar5; if (uVar4 != 0) goto LAB_0000f4a4; LAB_0000f4b0: uVar14 = uVar7; uVar5 = uVar16; if (uVar11 == 2) { LAB_0000f4c8: FUN_000097f4(0,param_2,param_3,param_4,param_6); if ((uVar16 == 0 && uVar7 == 0) || ((int)uVar7 <= (int)uVar16)) { uVar10 = 0xffffffff; } else { *(uint *)(param_5 + 4) = uVar16; *(uint *)(param_5 + 8) = uVar7; uVar10 = 0; } return uVar10; } goto LAB_0000f4b8; } LAB_0000f2ec: FUN_000097f4(uVar17,param_2,param_3,param_4,param_6); uVar6 = FUN_000002f4(*param_1,(int)param_1[1],1,*(undefined4 *)((long)param_1 + 0xc),uVar13, param_3); if (bVar1) { plVar12 = param_1 + 2; do { lVar9 = *plVar12; if ((lVar9 != 0) && (lVar9 != *param_1)) { uVar7 = FUN_000002f4(lVar9,(int)param_1[1],1,*(undefined4 *)((long)param_1 + 0xc),uVar13, 0xffffffff); uVar6 = uVar6 | uVar7; } plVar12 = plVar12 + 1; } while (param_1 + 5 != plVar12); } if (uVar4 == 0) { if ((bool)(bVar2 & uVar6 != 0)) { bVar2 = false; } if ((bool)((bVar2 ^ 1U) & uVar6 == 0)) { uVar7 = uVar17; if (lVar8 == 0) { uVar7 = uVar14; uVar16 = uVar17; } goto LAB_0000f4b0; } goto LAB_0000f29c; } if (bVar2) { if (bVar3 || uVar6 != 0) { if (!(bool)(uVar6 != 0 & bVar3)) goto LAB_0000f458; goto LAB_0000f3f0; } bVar3 = false; } else { LAB_0000f458: if (((bool)((bVar2 ^ 1U) & (bVar3 ^ 1U))) && (uVar6 != 0)) goto code_r0x0000f470; if (!(bool)((bVar2 ^ 1U) & bVar3)) goto LAB_0000f29c; if (uVar6 == 0) { uVar7 = uVar14; uVar16 = uVar17; if (lVar8 != 0) { uVar14 = uVar17; uVar7 = uVar17; uVar16 = uVar5; } goto LAB_0000f4a4; } LAB_0000f3f0: bVar3 = true; } bVar2 = false; LAB_0000f3e4: if (lVar8 == 0) { uVar6 = uVar17 + 1; } else { uVar6 = uVar17 - 1; } goto LAB_0000f2ac; code_r0x0000f470: if (lVar8 == 0) { uVar14 = uVar17 - 1; uVar15 = uVar14; } else { uVar5 = uVar17 + 1; } bVar3 = true; bVar2 = true; goto LAB_0000f2a0; } // FUN_0000f524 @ 0000f524 int FUN_0000f524(undefined8 param_1,uint *param_2,undefined4 param_3,int param_4,int param_5, undefined4 param_6,int param_7) { uint uVar1; uint uVar2; int iVar3; int iVar4; int iVar5; long lVar6; undefined *puVar7; int iVar8; uint uVar9; if (0xfffffffd < param_4 - 1U) { FUN_000093d4(param_2,param_2 + 1,param_2 + 2,param_5,param_6); iVar8 = 0; uVar1 = (param_2[1] - *param_2) / 0x14; do { uVar9 = param_2[2]; while( true ) { FUN_00009508(uVar9,param_3,param_5,param_6); iVar3 = FUN_0000f170(param_1,param_3,0,param_5,&DAT_00015300,param_6); if (iVar3 != 0) break; uVar2 = -uVar1; if (iVar8 == 0) { uVar2 = uVar1; } uVar9 = uVar9 + uVar2; if ((param_2[1] <= uVar9) || (uVar9 <= *param_2)) goto LAB_0000f5e4; } if (iVar8 == 0) { param_2[1] = uVar9; } else { *param_2 = uVar9; } LAB_0000f5e4: iVar8 = iVar8 + 1; } while (iVar8 != 2); if (param_7 != 0) { if (param_5 == 0) { puVar7 = &DAT_00010df0; } else { puVar7 = &DAT_00010ded; } FUN_0001053c(s__svref__d__d____d__d____d__d___00010df3,puVar7,*param_2 / 10,*param_2 % 10, param_2[2] / 10,param_2[2] % 10,param_2[1] / 10,param_2[1] % 10); } } uVar1 = *param_2; uVar9 = param_2[1]; iVar8 = uVar9 + 0x13; lVar6 = 0; do { *(undefined4 *)(&DAT_00015300 + lVar6) = 0; lVar6 = lVar6 + 0xc; } while (lVar6 != 0xf0); iVar3 = 0; for (; (int)*param_2 <= (int)uVar9; uVar9 = uVar9 - (iVar8 - uVar1) / 0x14) { iVar4 = FUN_00009508(uVar9,param_3,param_5,param_6); if (*(int *)(&DAT_00015300 + (long)(iVar3 + -1) * 0xc) != iVar4) { iVar5 = FUN_0000f170(param_1,param_3,param_4,param_5,&DAT_00015300 + (long)iVar3 * 0xc,param_6 ); if (iVar5 == 0) { lVar6 = (long)iVar3; iVar3 = iVar3 + 1; *(int *)(&DAT_00015300 + lVar6 * 0xc) = iVar4; } if (iVar3 == 0x14) break; } } FUN_00009508(param_2[2],param_3,param_5,param_6); return -(uint)(iVar3 == 0); } // FUN_0000f770 @ 0000f770 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 FUN_0000f770(undefined4 param_1,uint param_2,int param_3,undefined4 param_4,uint *param_5, long param_6,uint *param_7) { uint uVar1; int iVar2; uint uVar3; bool bVar4; uint *puVar5; long lVar6; undefined *puVar7; uint uVar8; int iVar9; undefined4 uVar10; int iVar11; uint uVar12; uint uVar13; undefined *local_20; uint local_18; uint local_14; uint local_8; int local_4; FUN_00009628(&DAT_000152c8,&DAT_000153f0,param_1,param_2,param_3,param_4); local_4 = *(int *)(param_6 + 100); if (param_3 == 0) { iVar11 = *(int *)(param_6 + 0x54); iVar2 = *(int *)(param_6 + 0x58); } else { iVar11 = *(int *)(param_6 + 0x5c); iVar2 = *(int *)(param_6 + 0x60); local_4 = *(int *)(param_6 + 0x68); } uVar8 = -iVar2; iVar9 = 0; local_14 = 0; puVar5 = param_7; uVar12 = _DAT_000152c8; uVar13 = _DAT_000153f0; do { if (*puVar5 == 0) break; uVar1 = puVar5[1]; uVar3 = puVar5[2]; if ((int)uVar1 < (int)uVar13) { uVar13 = uVar1; } if ((int)uVar12 < (int)uVar3) { uVar12 = uVar3; } if (iVar9 < (int)(uVar3 - uVar1)) { iVar9 = uVar3 - uVar1; local_14 = *puVar5; } puVar5 = puVar5 + 3; } while (param_7 + 0x3c != puVar5); if (param_2 == 0xffffffff) { if (param_3 == 0) { puVar7 = &DAT_00010df0; } else { puVar7 = &DAT_00010ded; } FUN_0001053c(s__s_all_dq__00010e83,puVar7); } else { if (param_3 == 0) { puVar7 = &DAT_00010df0; } else { puVar7 = &DAT_00010ded; } FUN_0001053c(s__s_dq_d__00010e8f,puVar7,param_2); } FUN_0001053c(s_max_eye_vref__d__d____d___00010e99,(int)local_14 / 10,(int)local_14 % 10,iVar9); if (_DAT_000152f0 == 0) { _DAT_000152f0 = uVar13 - 0x14; if ((int)(uVar13 - 0x14) < (int)_DAT_000152c8) { _DAT_000152f0 = _DAT_000152c8; } _DAT_000152f4 = _DAT_000153f0; if ((int)(uVar12 + 0x13) < (int)_DAT_000153f0) { _DAT_000152f4 = uVar12 + 0x14; } _DAT_000152f8 = (int)(((uVar12 + 0x14) - _DAT_000152f0) + 0x3f) / 0x40; } local_18 = _DAT_000152f0; if ((int)uVar13 <= (int)_DAT_000152f0) { local_18 = uVar13 - 1; } uVar10 = 0; uVar13 = _DAT_000152f4; if ((int)_DAT_000152f4 < (int)uVar12) { uVar13 = uVar12 + 1; } iVar9 = 0; do { uVar12 = *param_7; if (uVar12 == 0) break; if ((int)param_7[1] <= (int)param_7[2]) { if (iVar9 == 0) { *(short *)((ulong)param_2 * 2 + 0x152d0) = (short)uVar12; } if (uVar12 == local_14) { FUN_0001053c(&DAT_00010e81); lVar6 = (ulong)param_2 * 0xc; *(uint *)(lVar6 + 0x15208) = *param_7; *(uint *)(&DAT_0001520c + lVar6) = param_7[1]; *(uint *)(&DAT_00015210 + lVar6) = param_7[2]; } else { FUN_0001053c(&DAT_00010ffe); } if (((iVar9 == 0x13) || (*param_7 < *param_5)) || (*param_5 <= param_7[3])) { FUN_0001053c(&DAT_00010ffe); } else { FUN_0001053c(&DAT_00010e7f); lVar6 = (ulong)param_2 * 0xc; *(uint *)(lVar6 + 0x15148) = *param_7; *(uint *)(lVar6 + 0x1514c) = param_7[1]; *(uint *)(lVar6 + 0x15150) = param_7[2]; } if (local_4 == 0) { LAB_0000faa8: bVar4 = local_4 == 0; } else { if ((*param_7 < *param_5 - local_4) || (local_4 + *param_5 < *param_7)) goto LAB_0000faa8; uVar12 = param_7[1]; if (uVar12 == uVar8 || (int)(uVar12 + iVar2) < 0 != SBORROW4(uVar12,uVar8)) { if ((int)param_7[2] < iVar11) { uVar10 = 0xffffffff; } } else { uVar10 = 0xffffffff; } bVar4 = true; } FUN_0001053c(s_vref_00010eb4); uVar12 = *param_7; if (uVar12 / 10 < 10) { FUN_0001053c(&DAT_00010eba); } FUN_0001053c(&DAT_00010ebc,uVar12 / 10); FUN_0001053c(s___d____00010ebf,*param_7 % 10); local_20 = &DAT_00010e79; local_8 = 0; uVar12 = uVar13; do { uVar1 = param_7[1]; if (((iVar11 == 0 || uVar8 == 0) || (!bVar4)) || ((((int)uVar12 < iVar11 || (iVar11 <= (int)(uVar12 - _DAT_000152f8))) && (((int)uVar12 < (int)uVar8 || ((int)uVar8 <= (int)(uVar12 - _DAT_000152f8))))))) { if (((int)uVar12 < (int)uVar1) || ((int)param_7[2] < (int)uVar12)) { puVar7 = local_20; if (local_8 == 0) { puVar7 = &DAT_00010e7d; } } else if ((((int)uVar12 < 0) || (_DAT_000152f8 <= uVar12)) || ((local_8 == 0 && iVar11 != 0 && (uVar8 != 0)))) { puVar7 = &DAT_00010e81; } else { puVar7 = &DAT_00010e7f; } FUN_0001053c(&DAT_00010ec6,puVar7); } else { puVar7 = local_20; if ((((int)uVar1 <= (int)uVar12) && ((int)uVar12 <= (int)param_7[2])) && (((int)uVar12 <= (int)uVar8 || ((int)uVar1 < (int)uVar12)))) { puVar7 = &DAT_00010e7b; } FUN_0001053c(&DAT_00010ec6,puVar7); local_8 = ~local_8; } uVar12 = uVar12 - _DAT_000152f8; } while ((int)local_18 <= (int)uVar12); uVar12 = param_7[1]; uVar1 = param_7[2]; FUN_0001053c(s___d____d____d__d___00010ec9,uVar1,(int)(uVar1 + uVar12) / 2,uVar12, uVar1 - uVar12); } iVar9 = iVar9 + 1; param_7 = param_7 + 3; } while (iVar9 != 0x14); FUN_0001053c(s_min_dq___d__min__d__d__max__d__d_00011038 + 0x2d); if (((param_2 != 0xffffffff) && (*(uint *)(param_6 + 0x6c) != 0)) && ((uint)*(ushort *)((ulong)param_2 * 2 + 0x152d0) < *(uint *)(param_6 + 0x6c))) { uVar10 = 0xffffffff; } return uVar10; } // FUN_0000fcc4 @ 0000fcc4 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ int FUN_0000fcc4(long param_1) { int iVar1; uint uVar2; int iVar3; int iVar4; long lVar5; uint *puVar6; char *pcVar7; undefined *extraout_x1; undefined *puVar8; uint *puVar9; uint uVar10; ulong uVar11; uint uVar12; ulong uVar13; uint uVar14; long lVar15; int *piVar16; ulong uVar17; uint uVar18; uint uVar19; uint uVar20; undefined *local_90; uint local_64; int local_60; uint local_5c; ulong local_58; undefined1 auStack_48 [8]; undefined1 auStack_40 [8]; int local_38 [4]; long local_28; undefined4 local_20; uint local_1c; local_1c = *(uint *)(param_1 + 0x24); local_20 = *(undefined4 *)(param_1 + 0x20); _DAT_000152f0 = 0; if (local_1c == 0) { uVar2 = 8; } else { uVar2 = 0x10; if (local_1c != 1) { uVar2 = 0x20; } } local_60 = 0; local_58 = 0; do { lVar5 = *(long *)(param_1 + local_58 * 8); if ((local_58 == 0) || (lVar5 != 0)) { local_28 = lVar5; iVar3 = FUN_000002f4(lVar5,*(undefined4 *)(param_1 + 0x20),1,*(undefined4 *)(param_1 + 0x24),0 ,0xffffffff); if (iVar3 == 0) { FUN_0001053c(s_cs_d_result__00010dc1,local_58 & 0xffffffff); iVar3 = 0; local_90 = &DAT_00010dbb; do { uVar17 = 0; _DAT_000152f0 = 0; FUN_00000aac(&DAT_000153f8,0,0xf0); local_5c = 0; puVar8 = local_90; if (iVar3 == 0) { puVar8 = &DAT_00010dbe; } for (; (uint)uVar17 != uVar2; uVar17 = (ulong)((uint)uVar17 + 1)) { iVar4 = FUN_0000f524(&local_28,auStack_48,local_58 & 0xffffffff,uVar17,iVar3, *(undefined4 *)(param_1 + 0x28),1); if (iVar4 == 0) { iVar4 = FUN_0000f770(local_58 & 0xffffffff,uVar17,iVar3, *(undefined4 *)(param_1 + 0x28),auStack_40,param_1,&DAT_00015300) ; puVar6 = (uint *)&DAT_000153f8; if (_DAT_000153f8 == 0) { FUN_00000ac8(&DAT_000153f8,&DAT_00015300,0xf0); } else { uVar13 = 0; do { uVar19 = *puVar6; if (uVar19 != 0) { puVar9 = (uint *)(&DAT_00015300 + uVar13 * 0xc); uVar11 = uVar13; while (uVar10 = (uint)uVar11, uVar10 < 0x14) { uVar18 = *puVar9; if (uVar19 == uVar18) { uVar18 = puVar9[2]; uVar19 = puVar6[1]; if ((int)puVar6[1] < (int)puVar9[1]) { uVar19 = puVar9[1]; } puVar6[1] = uVar19; if ((int)puVar6[2] < (int)uVar18) { uVar18 = puVar6[2]; } uVar13 = (ulong)(uVar10 + 1); puVar6[2] = uVar18; break; } puVar9 = puVar9 + 3; if (uVar18 < uVar19) { puVar6[1] = 0x400; puVar6[2] = 0xfffffc00; break; } uVar11 = (ulong)(uVar10 + 1); } } puVar6 = puVar6 + 3; } while (puVar6 != (uint *)&DAT_000154e8); } if (iVar4 != 0) { local_5c = local_5c | (uint)(1L << (uVar17 & 0x3f)); } } else { FUN_0001053c(s_cs_d___s_dq__d_scan_fail___00010fc9,local_58 & 0xffffffff,puVar8,uVar17 ); } } FUN_0000f770(local_58 & 0xffffffff,0xffffffff,iVar3,*(undefined4 *)(param_1 + 0x28), auStack_40,param_1,&DAT_000153f8); if (iVar3 == 0) { puVar8 = &DAT_00010fa5; } else { puVar8 = &DAT_00010fa2; } FUN_0001053c(s_cs_d__s__00010fe5,local_58 & 0xffffffff,puVar8); iVar4 = 0; local_64 = 0; uVar19 = local_1c & 0x1f; puVar8 = &DAT_00010fa8; do { FUN_0001053c(s__s_eye__00010fef,puVar8); if (iVar4 == 0) { lVar5 = 0x15208; } else { lVar5 = 0x15148; } lVar15 = 0; uVar18 = 0; uVar10 = 0xffffffff; do { FUN_0001053c(&DAT_00010f4e,(&DAT_00012a00)[lVar15]); piVar16 = (int *)(lVar5 + 4); for (uVar14 = 0; 8 << (ulong)uVar19 != uVar14; uVar14 = uVar14 + 1) { local_38[0] = *piVar16; local_38[2] = piVar16[1]; local_38[3] = local_38[2] - local_38[0]; local_38[1] = (local_38[0] + local_38[2]) / 2; iVar1 = local_38[lVar15]; if (0 < iVar1) { FUN_0001053c(&DAT_00010ffe); } if (iVar1 + 9U < 0x13) { FUN_0001053c(&DAT_00010ffe); } if (iVar1 - 1U < 99) { FUN_0001053c(&DAT_00010ffe); } if (iVar1 + 99U < 99) { FUN_0001053c(&DAT_00010ffe); } FUN_0001053c(&DAT_00010f71,iVar1); uVar20 = piVar16[1] - *piVar16; if (uVar20 < uVar10) { local_64 = uVar14; uVar10 = uVar20; } uVar20 = uVar18 + uVar20; if (lVar15 != 3) { uVar20 = uVar18; } if ((uVar14 & 0xffffffef) == 7) { FUN_0001053c(&DAT_000113d1); } if (uVar14 == 0xf) { FUN_0001053c(&DAT_00010ff8); } piVar16 = piVar16 + 3; uVar18 = uVar20; } FUN_0001053c(s_min_dq___d__min__d__d__max__d__d_00011038 + 0x2d); lVar15 = lVar15 + 1; } while (lVar15 != 4); uVar20 = 0; if (uVar14 != 0) { uVar20 = uVar18 / uVar14; } iVar4 = iVar4 + 1; uVar12 = 0; if (uVar14 != 0) { uVar12 = (uVar18 * 10) / uVar14; } FUN_0001053c(s_min_dq___d__val__d_avg__d__d_00011000,local_64,uVar10,uVar20,uVar12 % 10) ; puVar8 = &DAT_0001101f; } while (iVar4 != 2); puVar8 = &DAT_0001107a; iVar4 = 0; do { uVar10 = 0; uVar19 = 0; uVar18 = 0xffffffff; FUN_0001053c(s_max__svref__00011023,puVar8); for (lVar5 = 0; uVar20 = (uint)lVar5, uVar20 < uVar14; lVar5 = lVar5 + 1) { if (iVar4 == 0) { uVar12 = (uint)*(ushort *)(lVar5 * 2 + 0x152d0); } else { uVar12 = *(uint *)(lVar5 * 0xc + 0x15208); } uVar19 = uVar19 + uVar12; FUN_0001053c(s__d__d_00011030,uVar12 / 10,uVar12 % 10); if (uVar12 < uVar18) { uVar18 = uVar12; local_64 = uVar20; } if (uVar10 < uVar12) { uVar10 = uVar12; } if (uVar20 == 7) { pcVar7 = &DAT_000113d1; LAB_000102f4: FUN_0001053c(pcVar7); } else if (uVar20 == 0xf) { pcVar7 = s_min_dq___d__min__d__d__max__d__d_00011038 + 0x2d; goto LAB_000102f4; } } uVar20 = 0; if (uVar14 != 0) { uVar20 = uVar19 / uVar14; } iVar4 = iVar4 + 1; FUN_0001053c(s_min_dq___d__min__d__d__max__d__d_00011038,local_64,uVar18 / 10, uVar18 % 10,uVar10 / 10,uVar10 % 10,uVar20 / 10,uVar20 % 10); puVar8 = &DAT_00011067; } while (iVar4 != 2); if (local_5c == 0) { FUN_0001053c(s_pass_0001107b,&DAT_00011067); } else { uVar17 = 0; do { if ((local_5c >> (uVar17 & 0x3f) & 1) != 0) { FUN_0001053c(s_dq_d__0001106c,uVar17); puVar8 = extraout_x1; } uVar19 = (int)uVar17 + 1; uVar17 = (ulong)uVar19; } while (uVar19 < uVar2); FUN_0001053c(&DAT_00011072,puVar8); local_60 = 1; } iVar3 = iVar3 + 1; } while (iVar3 != 2); FUN_0001053c(s_min_dq___d__min__d__d__max__d__d_00011038 + 0x2d); } else { FUN_0001053c(s_cs_d_def_setup_memtest_fail_00010fac,local_58 & 0xffffffff); local_60 = 1; } } local_58 = local_58 + 1; if (local_58 == 4) { if (local_60 == 0) { puVar8 = &DAT_00011096; } else { puVar8 = &DAT_0001109b; } FUN_0001053c(s_all_result___s_00011082,puVar8); return local_60; } } while( true ); } // FUN_0001033c @ 0001033c /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_0001033c(byte param_1) { if (_DAT_000154f0 != (uint *)0x0) { do { } while ((_DAT_000154f0[0x1f] >> 1 & 1) == 0); *_DAT_000154f0 = (uint)param_1; } *(byte *)(ulong)(_DAT_000154e8 - 0xf00000) = param_1; if (_DAT_000154e8 + 1 < 0x2000) { _DAT_000154e8 = _DAT_000154e8 + 1; return; } _DAT_000154e8 = 0; _DAT_000154ec = 0x2000; return; } // FUN_00010394 @ 00010394 void FUN_00010394(uint param_1,char *param_2,uint param_3) { uint uVar1; int iVar2; uint uVar3; uint uVar4; char *pcVar5; char cVar6; char *pcVar7; char local_10 [16]; uVar1 = (uint)(param_3 == 10) & param_1 >> 0x1f; pcVar5 = local_10 + 1; uVar4 = -param_1; if (uVar1 == 0) { uVar4 = param_1; } for (; (pcVar7 = pcVar5 + -1, uVar4 != 0 || (pcVar7 == local_10)); pcVar5 = pcVar5 + 1) { uVar3 = 0; if (param_3 != 0) { uVar3 = uVar4 / param_3; } iVar2 = uVar4 - uVar3 * param_3; cVar6 = (char)iVar2; if (iVar2 < 10) { cVar6 = cVar6 + '0'; } else { cVar6 = cVar6 + 'W'; } pcVar5[-1] = cVar6; uVar4 = uVar3; } pcVar5 = param_2; if (uVar1 != 0) { pcVar5 = param_2 + 1; *param_2 = '-'; } while (local_10 < pcVar7) { pcVar7 = pcVar7 + -1; *pcVar5 = *pcVar7; pcVar5 = pcVar5 + 1; } *pcVar5 = '\0'; return; } // FUN_00010420 @ 00010420 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00010420(void) { if (_DAT_000154f0 != 0) { do { } while ((*(uint *)(_DAT_000154f0 + 0x14) >> 6 & 1) == 0); } return; } // FUN_00010438 @ 00010438 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00010438(void) { undefined4 *puVar1; undefined4 uVar2; undefined1 auVar3 [12]; auVar3 = FUN_000004f8(); puVar1 = auVar3._0_8_; _DAT_000154e8 = 0; _DAT_000154ec = 0; _DAT_000154f0 = puVar1; if (puVar1 != (undefined4 *)0x0) { puVar1[3] = 0x83; if (auVar3._8_4_ == 0x1c200) { uVar2 = 0xd; } else if (auVar3._8_4_ == 750000) { uVar2 = 2; } else { uVar2 = 1; } *puVar1 = uVar2; puVar1[3] = 3; puVar1[0x26] = 1; } return; } // FUN_000104b8 @ 000104b8 void FUN_000104b8(char *param_1) { for (; *param_1 != '\0'; param_1 = param_1 + 1) { if (*param_1 == '\n') { FUN_0001033c(0xd); } FUN_0001033c(*param_1); } return; } // FUN_000104f8 @ 000104f8 void FUN_000104f8(uint param_1) { uint uVar1; if (9 < param_1) { uVar1 = param_1 / 10; param_1 = param_1 % 10; FUN_000104f8(uVar1); } FUN_0001033c(param_1 + 0x30); return; } // FUN_0001053c @ 0001053c void FUN_0001053c(char *param_1) { char cVar1; byte bVar2; bool bVar3; char *pcVar4; long *plVar5; char *pcVar6; int iVar7; int iVar8; undefined8 uVar9; long lVar10; long lVar11; long *plVar12; iVar7 = -0x38; pcVar6 = DAT_00012b60; plVar12 = (long *)register0x00000008; do { cVar1 = *param_1; if (cVar1 == '\0') { DAT_00012b60[(uint)((int)pcVar6 - (int)DAT_00012b60)] = '\0'; FUN_000104b8(); return; } if (cVar1 != '%') { *pcVar6 = cVar1; pcVar4 = pcVar6 + 1; goto LAB_00010604; } bVar2 = param_1[1]; param_1 = param_1 + 1; plVar5 = plVar12; iVar8 = iVar7; if (bVar2 == 0x69) goto LAB_00010650; pcVar4 = pcVar6; if (bVar2 < 0x6a) { if (bVar2 == 0x58) { LAB_00010690: if (iVar7 < 0) { iVar8 = iVar7 + 8; if (iVar8 < 1) { plVar5 = (long *)(&stack0x00000000 + iVar7); } else { plVar12 = plVar12 + 1; } } else { plVar12 = plVar12 + 1; } uVar9 = 0x10; LAB_000106a8: pcVar4 = (char *)FUN_00010394((int)*plVar5,pcVar6,uVar9); iVar7 = iVar8; } else if (bVar2 < 0x59) { if (bVar2 == 0x25) { *pcVar6 = '%'; pcVar4 = pcVar6 + 1; } } else { if (bVar2 != 99) { bVar3 = bVar2 == 100; goto LAB_0001064c; } if ((iVar7 < 0) && (iVar8 = iVar7 + 8, iVar8 < 1)) { plVar5 = (long *)(&stack0x00000000 + iVar7); } else { plVar12 = plVar12 + 1; } *pcVar6 = (char)(int)*plVar5; pcVar4 = pcVar6 + 1; iVar7 = iVar8; } } else if (bVar2 == 0x73) { if (iVar7 < 0) { iVar8 = iVar7 + 8; if (iVar8 < 1) { plVar5 = (long *)(&stack0x00000000 + iVar7); } else { plVar12 = plVar12 + 1; } } else { plVar12 = plVar12 + 1; } lVar11 = *plVar5; lVar10 = 0; while( true ) { pcVar4 = pcVar6 + lVar10; iVar7 = iVar8; if (*(char *)(lVar11 + lVar10) == '\0') break; pcVar6[lVar10] = *(char *)(lVar11 + lVar10); lVar10 = lVar10 + 1; } } else if (bVar2 < 0x74) { bVar3 = bVar2 == 0x6f; LAB_0001064c: if (bVar3) { LAB_00010650: if (iVar7 < 0) { iVar8 = iVar7 + 8; if (iVar8 < 1) { plVar5 = (long *)(&stack0x00000000 + iVar7); } else { plVar12 = plVar12 + 1; } } else { plVar12 = plVar12 + 1; } uVar9 = 10; goto LAB_000106a8; } } else { if (bVar2 == 0x75) goto LAB_00010650; if (bVar2 == 0x78) goto LAB_00010690; } LAB_00010604: param_1 = param_1 + 1; pcVar6 = pcVar4; } while( true ); } // FUN_000107ac @ 000107ac /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_000107ac(uint param_1) { int *piVar1; uint uVar2; uint uVar3; uint uVar4; int iVar5; int *piVar6; int iVar7; int *piVar8; undefined8 *puVar9; uVar2 = param_1 & 0xf000; if ((param_1 & 0xf000) == 0) { uVar2 = 0x10000; } if (((param_1 & 0xffff0000) != 0) && ((param_1 & 1) != 0)) { piVar6 = (int *)(ulong)(param_1 & 0xffff0000); uVar2 = uVar2 - 0xc; if (*piVar6 != 0x43474244) { *piVar6 = 0x43474244; piVar6[1] = 0; piVar6[2] = 0; } if (uVar2 < (uint)piVar6[2]) { piVar6[2] = uVar2; } if (uVar2 <= (uint)piVar6[1]) { piVar6[1] = 0; } piVar1 = piVar6 + 3; puVar9 = (undefined8 *)&DAT_ff100000; uVar4 = _DAT_000154e8; if (_DAT_000154e8 < _DAT_000154ec) { uVar4 = _DAT_000154ec; } uVar3 = uVar4 & 7; if (uVar3 != 0) { uVar3 = 8; } iVar7 = uVar3 + (uVar4 & 0xfffffff8); piVar8 = (int *)((long)piVar1 + (ulong)(uint)piVar6[1]); while (iVar7 != 0) { while (((ulong)piVar8 & 7) != 0) { *(undefined1 *)piVar8 = 0x20; if ((uint)piVar6[2] < uVar2) { piVar6[2] = piVar6[2] + 1; } iVar5 = piVar6[1]; piVar6[1] = iVar5 + 1U; piVar8 = (int *)((long)piVar8 + 1); if (uVar2 <= iVar5 + 1U) { piVar6[1] = 0; piVar8 = piVar1; } } while (iVar5 = piVar6[1], 7 < uVar2 - iVar5) { *(undefined8 *)piVar8 = *puVar9; iVar7 = iVar7 + -8; piVar6[1] = iVar5 + 8; piVar6[2] = piVar6[2] + 8; piVar8 = piVar8 + 2; puVar9 = puVar9 + 1; if (iVar7 == 0) goto LAB_000108c8; } piVar6[1] = 0; piVar8 = piVar1; } LAB_000108c8: if (uVar2 < (uint)piVar6[2]) { piVar6[2] = uVar2; } } return; } // FUN_000108dc @ 000108dc void FUN_000108dc(uint param_1) { uint uVar1; uint uVar2; uint *puVar3; undefined4 local_88; uint local_84 [33]; FUN_00000aac(&local_88,0,0x88); uVar1 = param_1 & 0xf000; puVar3 = local_84; if (uVar1 == 0) { uVar1 = 0x10000; } uVar2 = 0; local_88 = 1; do { if ((1 << (ulong)(uVar2 & 0x1f) & param_1 & 0xfff) == 0) { *puVar3 = 0; puVar3[1] = 0; } else { *puVar3 = param_1 & 0xffff0000; puVar3[1] = uVar1; } uVar2 = uVar2 + 1; puVar3 = puVar3 + 2; } while (uVar2 != 0xc); FUN_00000c2c(0x54410059,&local_88); return; } // FUN_00010968 @ 00010968 undefined8 FUN_00010968(void) { return 0; } // FUN_00010970 @ 00010970 undefined8 FUN_00010970(void) { return 0; } // FUN_00010978 @ 00010978 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined8 FUN_00010978(undefined8 param_1) { int iVar1; undefined8 uVar2; iVar1 = FUN_00010968(); if (iVar1 == 0) { if (((_DAT_fd588080 == -0x10f75ac4) && (_DAT_ff000010 < 0x81 && _DAT_ff000010 != 10)) || (iVar1 = FUN_00009a68(param_1), iVar1 != 0)) { uVar2 = 0xffffffff; LAB_000109c8: IC_IALLUIS(); InstructionSynchronizationBarrier(); return uVar2; } iVar1 = FUN_000009a0(); if (iVar1 == 0) { iVar1 = FUN_00010970(); if (iVar1 == 0) { FUN_00010a70(); } FUN_00010438(); FUN_000104b8(s_DDR_ff1a08bde6_typ_25_03_13_15_3_00010d6c); iVar1 = FUN_000009fc(); if ((iVar1 == 0) && (uVar2 = FUN_000009e8(), (int)uVar2 == 0)) goto LAB_000109c8; } } FUN_000104b8(&DAT_00010d9f); IC_IALLUIS(); InstructionSynchronizationBarrier(); return 0xffffffff; } // FUN_00010a38 @ 00010a38 void FUN_00010a38(long param_1) { ulong uVar1; long lVar2; ulong uVar3; lVar2 = cntpct_el0; uVar1 = cntfrq_el0; do { uVar3 = cntpct_el0; } while (uVar3 <= lVar2 + (uVar1 / 1000000) * param_1); return; } // FUN_00010a60 @ 00010a60 undefined8 FUN_00010a60(void) { return 24000000; } // thunk_FUN_00010a38 @ 00010a6c void thunk_FUN_00010a38(long param_1) { ulong uVar1; long lVar2; ulong uVar3; lVar2 = cntpct_el0; uVar1 = cntfrq_el0; do { uVar3 = cntpct_el0; } while (uVar3 <= lVar2 + (uVar1 / 1000000) * param_1); return; } // FUN_00010a70 @ 00010a70 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00010a70(void) { ulong uVar1; uVar1 = FUN_00010a60(); cntfrq_el0 = uVar1 & 0xffffffff; UnkSytemRegWrite(0,3,3,0xf,4,0); _DAT_fd8c8014 = 0xffffffff; _DAT_fd8c8018 = 0xffffffff; _DAT_fd8c8008 = 0; UnkSytemRegWrite(0,3,3,0xf,4,0); _DAT_fd8c8004 = 1; return; }