Files
rk3588-ddr-analysis/ddr_decompiled.c
T
test0r 816848a474 RK3588 DDR init blob reverse engineering
- Ghidra decompilation of v1.02-v1.19 blobs (118 functions)
- 53 functions renamed, 79 MMIO registers mapped to TRM
- 45 timeout-less poll loops identified and patched
- Production patcher (patch_prod.py) and QEMU emulator
- Comprehensive analysis, frequency tables, community research

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:06:47 +02:00

11924 lines
329 KiB
C

// 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;
}