Skip to content

Instantly share code, notes, and snippets.

@mouseos
Last active August 3, 2023 11:37
Show Gist options
  • Save mouseos/0817265ec81bce70761dc620ff1f13e5 to your computer and use it in GitHub Desktop.
Save mouseos/0817265ec81bce70761dc620ff1f13e5 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
#include "20.aboot.h"
void thunk_FUN_8f600020(void)
{
int iVar1;
undefined *puVar2;
undefined *puVar3;
uint uVar4;
code *pcVar5;
undefined4 *puVar6;
undefined4 *puVar7;
undefined4 *puVar8;
puVar3 = PTR_DAT_8f600124;
puVar2 = PTR_DAT_8f60006c;
uVar4 = coproc_movefrom_Control();
coproc_moveto_Control(uVar4 & 0xffff4ff8 | 0x20);
pcVar5 = thunk_FUN_8f600020;
puVar7 = (undefined4 *)PTR_thunk_FUN_8f600020_8f600068;
if ((code *)PTR_thunk_FUN_8f600020_8f600068 != thunk_FUN_8f600020) {
do {
puVar6 = puVar7 + 1;
*puVar7 = *(undefined4 *)pcVar5;
pcVar5 = (code *)((int)pcVar5 + 4);
puVar7 = puVar6;
} while (puVar6 != (undefined4 *)puVar2);
// WARNING: Could not recover jumptable at 0x8f600064. Too many branches
// WARNING: Treating indirect jump as call
(*DAT_8f600070)();
return;
}
puVar7 = (undefined4 *)PTR_DAT_8f600128;
puVar6 = (undefined4 *)PTR_DAT_8f60011c;
puVar8 = (undefined4 *)PTR_DAT_8f600120;
iVar1 = DAT_8f60012c;
if (PTR_DAT_8f60011c != PTR_DAT_8f600120) {
for (; puVar7 = (undefined4 *)PTR_DAT_8f600128, iVar1 = DAT_8f60012c, (int)puVar8 < (int)puVar3;
puVar8 = puVar8 + 1) {
*puVar8 = *puVar6;
puVar6 = puVar6 + 1;
}
}
for (; (int)puVar7 < iVar1; puVar7 = puVar7 + 1) {
*puVar7 = 0;
}
DataSynchronizationBarrier(0xf);
InstructionSynchronizationBarrier(0xf);
FUN_8f627200(puVar7,iVar1,(char *)0x0);
do {
// WARNING: Do nothing block with infinite loop
} while( true );
}
void FUN_8f600020(void)
{
int iVar1;
undefined *puVar2;
undefined *puVar3;
uint uVar4;
code *pcVar5;
undefined4 *puVar6;
undefined4 *puVar7;
undefined4 *puVar8;
puVar3 = PTR_DAT_8f600124;
puVar2 = PTR_DAT_8f60006c;
uVar4 = coproc_movefrom_Control();
coproc_moveto_Control(uVar4 & 0xffff4ff8 | 0x20);
pcVar5 = thunk_FUN_8f600020;
puVar7 = (undefined4 *)PTR_thunk_FUN_8f600020_8f600068;
if ((code *)PTR_thunk_FUN_8f600020_8f600068 != thunk_FUN_8f600020) {
do {
puVar6 = puVar7 + 1;
*puVar7 = *(undefined4 *)pcVar5;
pcVar5 = (code *)((int)pcVar5 + 4);
puVar7 = puVar6;
} while (puVar6 != (undefined4 *)puVar2);
// WARNING: Could not recover jumptable at 0x8f600064. Too many branches
// WARNING: Treating indirect jump as call
(*DAT_8f600070)();
return;
}
puVar7 = (undefined4 *)PTR_DAT_8f600128;
puVar6 = (undefined4 *)PTR_DAT_8f60011c;
puVar8 = (undefined4 *)PTR_DAT_8f600120;
iVar1 = DAT_8f60012c;
if (PTR_DAT_8f60011c != PTR_DAT_8f600120) {
for (; puVar7 = (undefined4 *)PTR_DAT_8f600128, iVar1 = DAT_8f60012c, (int)puVar8 < (int)puVar3;
puVar8 = puVar8 + 1) {
*puVar8 = *puVar6;
puVar6 = puVar6 + 1;
}
}
for (; (int)puVar7 < iVar1; puVar7 = puVar7 + 1) {
*puVar7 = 0;
}
DataSynchronizationBarrier(0xf);
InstructionSynchronizationBarrier(0xf);
FUN_8f627200(puVar7,iVar1,(char *)0x0);
do {
// WARNING: Do nothing block with infinite loop
} while( true );
}
void FUN_8f600140(undefined4 param_1,int *param_2)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f61a968(param_1,param_2);
if (piVar1 == DAT_8f69d118) {
FUN_8f61ad58();
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f6115d0)
// WARNING: Removing unreachable block (ram,0x8f6115d4)
// WARNING: Removing unreachable block (ram,0x8f6001c0)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f60017c(undefined4 param_1,undefined4 param_2)
{
int iVar1;
int iVar2;
uint uVar3;
int *in_lr;
bool bVar4;
iVar1 = DAT_8f69d118;
FUN_8f60374c((int *)0x1);
DataSynchronizationBarrier(0xf);
FUN_8f6044a4();
DataSynchronizationBarrier(0xf);
DataSynchronizationBarrier(0xf);
_DAT_078af0a0 = 0xcc;
DataSynchronizationBarrier(0xf);
_DAT_078af000 = 0;
_DAT_078af004 = 0x34;
_DAT_078af0b0 = 0x99;
_DAT_078af01c = 0;
_DAT_078af020 = 0;
_DAT_078af018 = 0xf;
_DAT_078af0b8 = 0;
_DAT_078af024 = 0;
_DAT_078af03c = 0;
_DAT_078af034 = 0x220;
_DAT_078af0a8 = 0x500;
FUN_8f611378((int)&DAT_078af000,(byte *)s_Android_Bootloader___UART_DM_Ini_8f65ec8c,0x2c);
uVar3 = (uint)DAT_8f688270;
if (3 < uVar3) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_uart_dm_c_8f65ecbc,0x1a0);
uVar3 = (uint)DAT_8f688270;
}
iVar2 = DAT_8f69d118;
bVar4 = iVar1 == DAT_8f69d118;
(&DAT_8f688274)[uVar3] = &DAT_078af000;
DAT_8f688270 = (byte)(uVar3 + 1);
DAT_8f68826c = 1;
if (bVar4) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,uVar3 + 1,(int *)0x1);
}
void FUN_8f6001c4(void)
{
int iVar1;
undefined4 extraout_r1;
int iVar2;
undefined4 uVar3;
int *in_lr;
undefined8 uVar4;
byte local_94;
undefined4 local_90;
undefined4 local_8c;
undefined4 local_88;
undefined2 local_84;
undefined4 local_80;
undefined local_7b;
undefined4 local_78;
undefined4 uStack_74;
undefined4 uStack_70;
undefined4 local_6c;
undefined4 uStack_68;
undefined4 uStack_64;
undefined4 uStack_60;
undefined4 local_5c;
undefined4 uStack_58;
undefined4 uStack_54;
undefined4 uStack_50;
undefined4 local_4c;
undefined4 local_48;
undefined4 uStack_44;
undefined4 uStack_40;
undefined4 uStack_3c;
undefined4 local_38;
undefined4 uStack_34;
undefined4 uStack_30;
undefined4 uStack_2c;
undefined4 local_28;
int *local_24;
local_6c = DAT_8f659778;
uStack_68 = DAT_8f65977c;
uStack_64 = DAT_8f659780;
uStack_60 = DAT_8f659784;
local_24 = DAT_8f69d118;
local_5c = DAT_8f659788;
uStack_58 = DAT_8f65978c;
uStack_54 = DAT_8f659790;
uStack_50 = DAT_8f659794;
local_4c = DAT_8f659798;
local_48 = DAT_8f65979c;
uStack_44 = DAT_8f6597a0;
uStack_40 = DAT_8f6597a4;
uStack_3c = DAT_8f6597a8;
local_38 = DAT_8f6597ac;
uStack_34 = DAT_8f6597b0;
uStack_30 = DAT_8f6597b4;
uStack_2c = DAT_8f6597b8;
local_78 = DAT_8f6597c0;
uStack_74 = DAT_8f6597c4;
uStack_70 = DAT_8f6597c8;
local_28 = DAT_8f6597bc;
FUN_8f6197cc((int)&local_6c,3);
FUN_8f61986c((int)&local_48,3);
FUN_8f61986c((int)&local_78,1);
local_80 = 192000000;
local_8c = 0x7824900;
local_88 = 0x7824000;
local_94 = 1;
local_7b = 1;
local_84 = 2;
local_90 = 0xaa;
uVar4 = FUN_8f60bd48((undefined4 *)&local_94,extraout_r1,2);
DAT_8f69d110 = (int)uVar4;
iVar2 = DAT_8f69d110;
if (DAT_8f69d110 == 0) {
iVar2 = local_94 - 1;
local_8c = (&DAT_8f659804)[iVar2];
local_88 = (&DAT_8f6597f4)[iVar2];
uVar3 = (&DAT_8f6597fc)[iVar2];
local_7b = 0;
local_80 = 200000000;
local_90 = uVar3;
uVar4 = FUN_8f60bd48((undefined4 *)&local_94,iVar2,uVar3);
iVar2 = (int)uVar4;
if (iVar2 == 0) {
iVar1 = DAT_8f69d110;
DAT_8f69d110 = iVar2;
dprintf((byte *)s_mmc_init_failed__8f65980c,(int *)((ulonglong)uVar4 >> 0x20),uVar3,iVar1);
uVar4 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_target_msm8953_init_c_8f659840,0xaf);
iVar2 = DAT_8f69d110;
}
}
DAT_8f69d110 = iVar2;
if (local_24 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),local_24);
}
// WARNING: Removing unreachable block (ram,0x8f6003a0)
void FUN_8f600364(void)
{
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void keys_get_state(uint param_1)
{
uint uVar1;
undefined *puVar2;
undefined4 extraout_r1;
int iVar3;
ulonglong uVar4;
uint local_44 [8];
int *local_24;
local_44[0] = *(uint *)PTR_DAT_8f6004a4;
local_44[1] = *(undefined4 *)(PTR_DAT_8f6004a4 + 4);
local_44[2] = *(undefined4 *)(PTR_DAT_8f6004a4 + 8);
local_44[3] = *(undefined4 *)(PTR_DAT_8f6004a4 + 0xc);
local_24 = DAT_8f69d118;
local_44[4] = *(undefined4 *)(PTR_DAT_8f6004a4 + 0x10);
local_44[5] = *(undefined4 *)(PTR_DAT_8f6004a4 + 0x14);
local_44[6] = *(undefined4 *)(PTR_DAT_8f6004a4 + 0x18);
local_44[7] = *(undefined4 *)(PTR_DAT_8f6004a4 + 0x1c);
if ((DAT_8f684404 == '\0') && (DAT_8f684405 == '\0')) {
_DAT_8f684404 = FUN_8f602b84();
}
iVar3 = 0;
do {
puVar2 = (undefined *)(iVar3 * 8);
if (param_1 == local_44[iVar3 * 2]) {
puVar2 = &stack0xffffffe0 + (int)puVar2;
uVar1 = local_44[iVar3 * 2 + 1];
if (uVar1 != 0) {
FUN_8f6043cc(uVar1,0,0,3,0,0);
FUN_8f6104fc(10000);
uVar4 = FUN_8f604460(uVar1,extraout_r1);
puVar2 = (undefined *)(uVar4 >> 0x20);
uVar1 = (uint)((uVar4 & 0xff) == 0);
}
goto LAB_8f600420;
}
iVar3 = iVar3 + 1;
} while (iVar3 != 4);
uVar1 = 0;
LAB_8f600420:
if (local_24 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar1,puVar2,local_24);
}
return;
}
void FUN_8f6004a8(void)
{
int *piVar1;
undefined4 extraout_r1;
ulonglong uVar2;
piVar1 = DAT_8f69d118;
FUN_8f6043cc(0x55,0,0,3,0,0);
FUN_8f627cfc(10);
uVar2 = FUN_8f604460(0x55,extraout_r1);
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((uint)((uVar2 & 0xff) == 0),(int)(uVar2 >> 0x20),piVar1);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f60054c)
void FUN_8f600518(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f632efc(0x810);
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((uint)uVar2 & 2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
return;
}
void FUN_8f600550(byte *param_1,undefined4 param_2)
{
int *piVar1;
int *piVar2;
int *piVar3;
int *piVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
uVar5 = FUN_8f626460(param_1,param_2);
piVar3 = (int *)((ulonglong)uVar5 >> 0x20);
piVar2 = (int *)uVar5;
if (piVar2 == (int *)0x0) {
piVar4 = piVar1;
if (piVar1 == DAT_8f69d118) {
return;
}
}
else {
piVar2 = (int *)FUN_8f60d524(piVar2,piVar3);
piVar3 = piVar1;
piVar4 = DAT_8f69d118;
if (piVar1 == DAT_8f69d118) {
FUN_8f636618(param_1,0xd,&DAT_8f659858,piVar2);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f635428(piVar2,piVar3,piVar4);
}
// WARNING: Removing unreachable block (ram,0x8f6005fc)
void FUN_8f6005c8(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f600630)
void FUN_8f600600(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f611834)
// WARNING: Removing unreachable block (ram,0x8f600720)
void FUN_8f6006ec(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f600724(int param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
undefined4 uVar2;
undefined4 extraout_r1;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f6160c4(param_1,param_2,param_3);
FUN_8f633554();
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,extraout_r1,piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f60079c)
void FUN_8f600768(undefined4 param_1,undefined4 param_2)
{
undefined uVar1;
uint uVar2;
undefined4 *puVar3;
int iVar4;
undefined4 uVar5;
uint *puVar6;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 extraout_r1_03;
char *pcVar7;
undefined4 *puVar8;
undefined4 uVar9;
uint *puVar10;
int *piVar11;
uint uVar12;
int *in_lr;
undefined8 uVar13;
longlong lVar14;
uint local_30;
int *local_2c;
pcVar7 = (char *)0x0;
local_30 = 0;
local_2c = DAT_8f69d118;
piVar11 = DAT_8f69d118;
uVar2 = FUN_8f60d5cc(param_1,param_2);
uVar13 = FUN_8f6366a8((int *)0x40,uVar2);
puVar3 = (undefined4 *)uVar13;
if (puVar3 == (undefined4 *)0x0) {
piVar11 = (int *)0x183;
pcVar7 = s_app_aboot_recovery_c_8f664178;
uVar13 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_recovery_c_8f664178,0x183);
}
uVar2 = FUN_8f60d5cc((int)uVar13,(int)((ulonglong)uVar13 >> 0x20));
uVar13 = FUN_8f606760(&DAT_8f65b080);
iVar4 = (int)uVar13;
if (iVar4 < 0) {
dprintf((byte *)s__s__Partition_not_found_8f664194,(int *)&DAT_8f65b080,pcVar7,piVar11);
uVar9 = extraout_r1_03;
}
else {
lVar14 = FUN_8f60688c(iVar4,(int)((ulonglong)uVar13 >> 0x20));
uVar1 = FUN_8f606904(iVar4);
FUN_8f60db18(uVar1);
if (lVar14 == 0) {
dprintf((byte *)s_partition__s_doesn_t_exist_8f6641b0,(int *)&DAT_8f65b080,pcVar7,0);
uVar9 = extraout_r1_00;
}
else {
puVar8 = puVar3;
uVar12 = uVar2;
iVar4 = FUN_8f60d85c((uint)lVar14,(uint)((ulonglong)lVar14 >> 0x20),(uint)puVar3,uVar2);
if (iVar4 == 0) {
*(undefined *)((int)puVar3 + 0x1f) = 0;
iVar4 = FUN_8f636bdc((int)puVar3,(byte *)s_boot_recovery_8f6640f4);
if (iVar4 == 0) {
puVar8 = (undefined4 *)0x1;
boot_into_recovery = 1;
}
iVar4 = FUN_8f636bdc((int)s_update_radio_8f66411c,(byte *)puVar3);
if (iVar4 == 0) {
iVar4 = FUN_8f62e6c0(2,&local_30);
if ((iVar4 == 0) && ((local_30 & 1) != 0)) {
FUN_8f636d18((int)(puVar3 + 8),&DAT_8f664014,0x20);
}
else {
FUN_8f636d18((int)(puVar3 + 8),(byte *)s_failed_update_8f66410c,0x20);
}
puVar8 = (undefined4 *)0x1;
boot_into_recovery = 1;
}
uVar13 = FUN_8f636bdc((int)s_reset_device_info_8f6641e4,(byte *)puVar3);
if ((int)uVar13 == 0) {
FUN_8f62a5e8(0,(int *)((ulonglong)uVar13 >> 0x20),puVar8);
}
uVar13 = FUN_8f636bdc((int)s_root_detect_8f6641f8,(byte *)puVar3);
if ((int)uVar13 == 0) {
FUN_8f62a63c(0,(int *)((ulonglong)uVar13 >> 0x20),puVar8);
uVar9 = 0x20;
uVar13 = FUN_8f636d18((int)puVar3,(byte *)(s__device_command_failed__8f66183c + 0x1c),0x20
);
uVar13 = FUN_8f60d5cc((int)uVar13,(int)((ulonglong)uVar13 >> 0x20));
uVar2 = (int)uVar13 + 0x43f;
uVar12 = -(int)uVar13 & uVar2;
if (uVar12 < 0x440) {
uVar12 = 0xffffffff;
}
uVar13 = FUN_8f63666c(uVar12,(int)((ulonglong)uVar13 >> 0x20));
puVar6 = (uint *)uVar13;
if (puVar6 == (uint *)0x0) {
dprintf((byte *)s_memory_allocation_error_8f664204,(int *)((ulonglong)uVar13 >> 0x20),
uVar9,uVar2);
}
else {
uVar13 = FUN_8f606760(&DAT_8f65b080);
lVar14 = FUN_8f60688c((int)uVar13,(int)((ulonglong)uVar13 >> 0x20));
uVar1 = FUN_8f606904((int)uVar13);
FUN_8f60db18(uVar1);
if (lVar14 == 0) {
dprintf((byte *)s_partition__s_doesn_t_exist_8f6641b0,(int *)&DAT_8f65b080,uVar9,0);
}
else {
FUN_8f636968(puVar6,0,uVar12);
FUN_8f63685c(puVar6,puVar3,0x440);
puVar10 = puVar6;
iVar4 = FUN_8f60d620((uint)lVar14,(uint)((ulonglong)lVar14 >> 0x20),uVar12,
(uint)puVar6);
if (iVar4 != 0) {
dprintf((byte *)s_mmc_write_failure__s__d_8f664220,(int *)&DAT_8f65b080,0x440,
puVar10);
}
}
FUN_8f636758((int)puVar6);
}
}
FUN_8f636758((int)puVar3);
uVar5 = 0;
uVar9 = extraout_r1;
goto LAB_8f62eb14;
}
dprintf((byte *)s_mmc_read_failure__s__d_8f6641cc,(int *)&DAT_8f65b080,uVar2,uVar12);
uVar9 = extraout_r1_02;
}
}
if (puVar3 == (undefined4 *)0x0) {
uVar5 = 0xffffffff;
}
else {
FUN_8f636758((int)puVar3);
uVar5 = 0xffffffff;
uVar9 = extraout_r1_01;
}
LAB_8f62eb14:
if (local_2c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar5,uVar9,local_2c);
}
void FUN_8f6007a0(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
uint uVar2;
int iVar3;
undefined4 uVar4;
undefined8 uVar5;
undefined8 uVar6;
piVar1 = DAT_8f69d118;
uVar5 = FUN_8f6268ac(param_1,param_2);
uVar2 = FUN_8f633314((int)uVar5,(int)((ulonglong)uVar5 >> 0x20));
iVar3 = FUN_8f6334fc();
uVar6 = FUN_8f632efc(0x21310);
if (((iVar3 == 0) || ((uVar2 & 1) != 0)) || ((((uint)uVar6 & 1 ^ 1) & ~uVar2 >> 7) == 0)) {
if ((int)uVar5 < 3600000) {
uVar4 = 1;
}
else {
uVar4 = 0;
}
}
else {
uVar4 = 1;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar4,(int)((ulonglong)uVar6 >> 0x20),piVar1);
}
return;
}
void FUN_8f600838(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
int iVar2;
piVar1 = DAT_8f69d118;
iVar2 = FUN_8f6268ac(param_1,param_2);
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((uint)(iVar2 < 3600000),piVar1,DAT_8f69d118);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f608820)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f600884(undefined4 param_1,undefined4 param_2,char *param_3)
{
int *piVar1;
int iVar2;
undefined4 uVar3;
int *piVar4;
int *in_lr;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
piVar4 = DAT_8f69d118;
FUN_8f60d15c(DAT_8f69d110);
FUN_8f60aff0((int)DAT_8f69d110);
uVar5 = FUN_8f619ed0();
uVar3 = (undefined4)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 == 0) {
iVar2 = FUN_8f6264d0(0,uVar3);
}
else {
uVar5 = FUN_8f61af54((int)uVar5,uVar3);
iVar2 = FUN_8f6264d0((int)uVar5,(int)((ulonglong)uVar5 >> 0x20));
}
if (iVar2 == 0) {
uVar5 = FUN_8f608638();
}
else {
FUN_8f603da8((int *)0x1);
uVar5 = FUN_8f608638();
}
if (((int)uVar5 != 0) && (uVar5 = FUN_8f608548(), (int)uVar5 < 0)) {
dprintf((byte *)s_Failed_to_unload_App_for_rpmb_8f659880,(int *)((ulonglong)uVar5 >> 0x20),
param_3,piVar4);
param_3 = s_target_msm8953_init_c_8f659840;
piVar4 = (int *)0x23e;
uVar5 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_target_msm8953_init_c_8f659840,0x23e);
}
uVar5 = FUN_8f6251fc((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),param_3);
if ((int)uVar5 < 0) {
dprintf((byte *)s_RPMB_uninit_failed_8f6598a0,(int *)((ulonglong)uVar5 >> 0x20),param_3,piVar4);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_target_msm8953_init_c_8f659840,0x245);
}
uVar5 = FUN_8f603da8((int *)0x1);
piVar4 = DAT_8f69d118;
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),piVar1);
}
FUN_8f626f38((undefined4 *)&DAT_8f6880a4,0,1);
uVar5 = FUN_8f608ffc((uint *)&DAT_8f69d124,4,1);
uVar3 = (undefined4)((ulonglong)uVar5 >> 0x20);
_DAT_0b111008 = 1;
if (piVar4 == DAT_8f69d118) {
FUN_8f627034((int)&DAT_8f6880a4,uVar3);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,uVar3,piVar4);
}
void FUN_8f6009b0(void)
{
int iVar1;
int iVar2;
undefined4 *puVar3;
int *in_lr;
iVar1 = DAT_8f69d118;
puVar3 = (undefined4 *)FUN_8f6366fc(1,0x14);
if (puVar3 == (undefined4 *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_target_msm8953_init_c_8f659840,0x274);
}
iVar2 = DAT_8f69d118;
puVar3[2] = FUN_8f61a9a0;
puVar3[1] = FUN_8f600140;
puVar3[3] = FUN_8f603210;
*puVar3 = 0;
*(undefined *)(puVar3 + 4) = 1;
if (iVar1 == iVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(puVar3,iVar2,(int *)0x0);
}
// WARNING: Removing unreachable block (ram,0x8f600a98)
void FUN_8f600a60(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f600a9c(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
uint uVar2;
uint uVar3;
uint uVar4;
char *pcVar5;
int *piVar6;
uint uVar7;
uint uVar8;
longlong lVar9;
undefined8 uVar10;
piVar1 = DAT_8f69d118;
lVar9 = FUN_8f6264d0(param_1,param_2);
if ((int)lVar9 == 0) {
if (piVar1 == DAT_8f69d118) {
return;
}
}
else {
uVar10 = FUN_8f606760(&DAT_8f6598c4);
lVar9 = FUN_8f60688c((int)uVar10,(int)((ulonglong)uVar10 >> 0x20));
piVar6 = (int *)((ulonglong)lVar9 >> 0x20);
uVar2 = (uint)lVar9;
if (lVar9 == 0) {
if (piVar1 == DAT_8f69d118) {
pcVar5 = s_Error__ssd_partition_not_found_8f6598c8;
LAB_8f600b9c:
dprintf((byte *)pcVar5,piVar6,piVar1,DAT_8f69d118);
return;
}
}
else {
lVar9 = FUN_8f606814((int)uVar10,piVar6);
uVar3 = (uint)lVar9;
if (lVar9 == 0) {
if (piVar1 == DAT_8f69d118) {
pcVar5 = s_Error__invalid_ssd_partition_siz_8f6598e8;
piVar6 = (int *)((ulonglong)lVar9 >> 0x20);
goto LAB_8f600b9c;
}
}
else {
lVar9 = FUN_8f6366a8((int *)0x40,uVar3 + 0x3f & 0xffffffc0);
uVar4 = (uint)lVar9;
if (uVar4 == 0) {
if (piVar1 == DAT_8f69d118) {
pcVar5 = s_Error__allocating_memory_for_ssd_8f65990c;
piVar6 = (int *)((ulonglong)lVar9 >> 0x20);
goto LAB_8f600b9c;
}
}
else {
uVar7 = uVar4;
uVar8 = uVar3;
uVar10 = FUN_8f60d85c(uVar2,(uint)piVar6,uVar4,uVar3);
if ((int)uVar10 == 0) {
FUN_8f603bb4((int *)0x1);
FUN_8f615538(uVar4,uVar3);
lVar9 = FUN_8f603da8((int *)0x1);
}
else {
lVar9 = dprintf((byte *)s_Error__cannot_read_data_8f659938,
(int *)((ulonglong)uVar10 >> 0x20),uVar7,uVar8);
}
if (piVar1 == DAT_8f69d118) {
FUN_8f636758(uVar4);
return;
}
}
}
}
}
// WARNING: Subroutine does not return
FUN_8f635428((int)lVar9,(int)((ulonglong)lVar9 >> 0x20),piVar1);
}
void FUN_8f600c00(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f6264d0(param_1,param_2);
if ((int)uVar2 == 0) {
if (piVar1 == DAT_8f69d118) {
return;
}
}
else {
uVar2 = FUN_8f603bb4((int *)0x1);
if (piVar1 == DAT_8f69d118) {
FUN_8f600a9c((int)uVar2,(int)((ulonglong)uVar2 >> 0x20));
return;
}
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f600c98)
void FUN_8f600c64(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f600c9c(void)
{
undefined8 uVar1;
undefined4 local_30;
undefined4 local_2c;
undefined4 local_28;
undefined4 local_24;
undefined4 local_20;
undefined4 local_1c;
undefined4 local_18;
undefined local_14;
undefined local_13;
undefined local_12;
undefined local_11;
undefined local_10;
int *local_c;
local_30 = 0x73a000;
local_c = DAT_8f69d118;
local_28 = 0x704000;
local_2c = 1;
local_24 = 1;
local_11 = 0;
local_10 = 0;
local_14 = 0;
local_1c = 0x40;
local_18 = 0x40;
local_13 = 3;
local_12 = 2;
local_20 = 0x14;
uVar1 = FUN_8f61af10(&local_30,0x14);
if (local_c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar1,(int)((ulonglong)uVar1 >> 0x20),local_c);
}
// WARNING: Removing unreachable block (ram,0x8f6087e0)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f600d30(void)
{
ushort uVar1;
short sVar2;
int iVar3;
int *piVar4;
undefined4 uVar5;
int *extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
char *pcVar6;
undefined4 uVar7;
int **ppiVar8;
int *piVar9;
ushort *puVar10;
uint uVar11;
uint uVar12;
int *piVar13;
int *in_lr;
bool bVar14;
undefined8 uVar15;
ushort uStack_26;
undefined4 local_24;
undefined4 uStack_20;
int *local_1c;
local_1c = DAT_8f69d118;
uVar15 = FUN_8f612210(0,0);
iVar3 = FUN_8f626618((int)uVar15,(int)((ulonglong)uVar15 >> 0x20));
if ((((iVar3 != 0) && (iVar3 = FUN_8f60300c(), iVar3 != 0)) &&
(sVar2 = FUN_8f6119f8(1), sVar2 == 0x11)) && (uVar11 = FUN_8f6332c8(), uVar11 != 0)) {
FUN_8f611938(1,uVar11);
}
puVar10 = &uStack_26;
local_24 = *(undefined4 *)PTR_DAT_8f600f84;
uStack_20 = *(undefined4 *)(PTR_DAT_8f600f84 + 4);
ppiVar8 = &local_1c;
pcVar6 = PTR_DAT_8f600f84;
FUN_8f632dcc(local_24,uStack_20);
do {
puVar10 = puVar10 + 1;
uVar1 = *puVar10;
iVar3 = keys_get_state((uint)uVar1);
if (iVar3 != 0) {
FUN_8f632e14((uint)uVar1,1);
}
} while (puVar10 != (ushort *)((int)&uStack_20 + 2));
uVar15 = FUN_8f6001c4();
uVar15 = FUN_8f605ea8((int)uVar15,(int)((ulonglong)uVar15 >> 0x20),pcVar6);
if ((int)uVar15 != 0) {
dprintf((byte *)s_Error_reading_the_partition_tabl_8f659954,(int *)((ulonglong)uVar15 >> 0x20),
pcVar6,ppiVar8);
pcVar6 = s_target_msm8953_init_c_8f659840;
ppiVar8 = (int **)0x17f;
uVar15 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_target_msm8953_init_c_8f659840,0x17f);
}
iVar3 = FUN_8f626498((int)uVar15,(int)((ulonglong)uVar15 >> 0x20));
if (iVar3 != 0) {
FUN_8f600c9c();
}
FUN_8f603bb4((int *)0x1);
piVar4 = (int *)FUN_8f6177f8();
if ((int)piVar4 < 0) {
dprintf((byte *)s_Failed_to_initialize_qseecom__er_8f65997c,piVar4,pcVar6,ppiVar8);
ppiVar8 = (int **)0x198;
pcVar6 = s_target_msm8953_init_c_8f659840;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_target_msm8953_init_c_8f659840,0x198);
piVar4 = (int *)FUN_8f61769c();
}
else {
piVar4 = (int *)FUN_8f61769c();
}
uVar15 = CONCAT44(piVar4,piVar4);
if ((int)piVar4 < 0) {
dprintf((byte *)s_Failed_to_start_qseecom__error____8f6599a8,piVar4,pcVar6,ppiVar8);
pcVar6 = s_target_msm8953_init_c_8f659840;
ppiVar8 = (int **)0x1a1;
uVar15 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_target_msm8953_init_c_8f659840,0x1a1);
}
uVar15 = FUN_8f624e9c((int)uVar15,(int)((ulonglong)uVar15 >> 0x20),pcVar6);
if ((int)uVar15 < 0) {
dprintf((byte *)s_RPMB_init_failed_8f6599cc,(int *)((ulonglong)uVar15 >> 0x20),pcVar6,ppiVar8);
pcVar6 = s_target_msm8953_init_c_8f659840;
ppiVar8 = (int **)0x1a7;
uVar15 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_target_msm8953_init_c_8f659840,0x1a7);
}
uVar15 = FUN_8f6083f8((int)uVar15,(int)((ulonglong)uVar15 >> 0x20),(int **)pcVar6);
if ((int)uVar15 < 0) {
dprintf((byte *)s_Failed_to_load_App_for_verified_8f6599e0,(int *)((ulonglong)uVar15 >> 0x20),
pcVar6,ppiVar8);
uVar15 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_target_msm8953_init_c_8f659840,0x1b0);
}
piVar4 = DAT_8f69d118;
if (local_1c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar15,(int)((ulonglong)uVar15 >> 0x20),local_1c);
}
piVar9 = DAT_8f69d118;
DAT_8f69d190 = FUN_8f6366a8((int *)0x40,0x800);
if (DAT_8f69d190 == 0) {
piVar9 = (int *)0x7e;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_smd_c_8f65be98,0x7e);
}
uVar12 = 0;
uVar11 = 1000000;
do {
uVar7 = 0x800;
uVar15 = FUN_8f6045dc(0xd,DAT_8f69d190,0x800);
if ((int)uVar15 != 0) {
dprintf((byte *)s_ERROR_reading_smem_channel_alloc_8f65bf34,(int *)((ulonglong)uVar15 >> 0x20)
,uVar7,piVar9);
uVar5 = 0xffffffff;
uVar7 = extraout_r1_00;
goto LAB_8f609230;
}
bVar14 = uVar11 == 0;
uVar11 = uVar11 - 1;
uVar12 = uVar12 - bVar14;
iVar3 = FUN_8f608af4((undefined4 *)&DAT_8f69d124,0xf);
FUN_8f6104fc(10);
piVar9 = (int *)(uint)((uVar11 | uVar12) != 0);
piVar13 = piVar9;
if (iVar3 == 0) {
piVar13 = (int *)0x0;
}
} while (piVar13 != (int *)0x0);
if ((uVar11 | uVar12) == 0) {
dprintf((byte *)s_Apps_timed_out_waiting_for_RPM___8f65bf5c,extraout_r1,uVar7,0);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_smd_c_8f65be98,0x95);
}
FUN_8f61097c(200,FUN_8f609378,(int *)&DAT_8f69d124);
FUN_8f608ffc((uint *)&DAT_8f69d124,1,1);
_DAT_0b111008 = 1;
FUN_8f610944(200,extraout_r1_01);
uVar5 = 0;
uVar7 = extraout_r1_02;
LAB_8f609230:
if (piVar4 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar5,uVar7,piVar4);
}
// WARNING: Removing unreachable block (ram,0x8f600fbc)
void FUN_8f600f88(undefined param_1)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
FUN_8f63303c(0,0x85b,0);
FUN_8f63303c(2,0x85b,0);
FUN_8f6104fc(300);
FUN_8f63303c(0,0x85a,param_1);
FUN_8f63303c(2,0x85a,param_1);
uVar2 = FUN_8f63303c(0,0x85b,0x80);
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
FUN_8f63303c(2,0x85b,0x80);
return;
}
// WARNING: Removing unreachable block (ram,0x8f600ff4)
void FUN_8f600fc0(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f601030)
void FUN_8f600ff8(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f601068)
void FUN_8f601034(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f60106c(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
uint uVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
if (DAT_8f684400 == '\0') {
uVar3 = FUN_8f611838();
param_2 = (undefined4)((ulonglong)uVar3 >> 0x20);
uVar2 = (int)uVar3 - 1;
if (uVar2 < 0x15) {
uVar2 = 1 << (uVar2 & 0xff) & 0x100481;
if (uVar2 != 0) {
uVar2 = 1;
}
goto LAB_8f60109c;
}
}
uVar2 = 0;
LAB_8f60109c:
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,param_2,piVar1);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f601124)
void FUN_8f6010e8(undefined4 param_1)
{
DAT_8f684400 = (undefined)param_1;
return;
}
void FUN_8f601128(uint *param_1,uint param_2)
{
int iVar1;
int iVar2;
int *extraout_r1;
int *extraout_r1_00;
int *piVar3;
int *piVar4;
uint uVar5;
int *in_lr;
undefined8 uVar6;
undefined8 uVar7;
undefined4 auStack_6c [4];
int *local_5c;
uint local_58;
int *local_54;
uint local_50;
int local_48;
int local_40;
int *local_24;
local_24 = DAT_8f69d118;
iVar1 = FUN_8f604aa4();
if (iVar1 == 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_target_msm8953_meminfo_c_8f659a04,0x2e);
}
uVar6 = FUN_8f604c04();
piVar3 = (int *)((ulonglong)uVar6 >> 0x20);
if ((int)uVar6 != 0) {
iVar1 = 0;
do {
FUN_8f604bb4(auStack_6c,iVar1);
piVar3 = extraout_r1;
if ((local_48 == 0xe) && (local_40 == 1)) {
piVar4 = local_5c;
uVar5 = local_58;
uVar7 = FUN_8f6190c8(param_1,param_2,local_5c,local_58,local_54,local_50);
piVar3 = (int *)((ulonglong)uVar7 >> 0x20);
iVar2 = (int)uVar7;
if (iVar2 != 0) {
dprintf((byte *)s_Failed_to_add_secondary_banks_me_8f659a3c,piVar3,piVar4,uVar5);
piVar3 = extraout_r1_00;
goto LAB_8f6011e0;
}
}
iVar1 = iVar1 + 1;
} while (iVar1 != (int)uVar6);
}
iVar2 = 0;
LAB_8f6011e0:
if (local_24 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,piVar3,local_24);
}
// WARNING: Removing unreachable block (ram,0x8f601260)
void FUN_8f601228(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f601298)
void FUN_8f601264(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f60129c(short *param_1,int *param_2)
{
undefined2 uVar1;
undefined4 extraout_r1;
char *extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 uVar2;
undefined4 extraout_r1_02;
undefined4 extraout_r1_03;
undefined8 uVar3;
char local_28;
char cStack_27;
int local_24;
undefined local_20;
char local_1f;
int *local_1c;
local_1c = DAT_8f69d118;
uVar1 = FUN_8f602b84();
uVar2 = extraout_r1;
if (*param_1 != 2) {
local_28 = (char)uVar1;
if ((local_28 == '\0') && (cStack_27 = (char)((ushort)uVar1 >> 8), cStack_27 == '\x01')) {
FUN_8f632ebc(0);
local_24 = 0xa300;
local_20 = 3;
if (param_2 == (int *)0x0) {
FUN_8f633c9c(0,extraout_r1_02);
FUN_8f6333c8(&local_24,0);
}
else {
FUN_8f633c9c(0,extraout_r1_02);
uVar3 = FUN_8f633a24((int *)0x36,(int *)0x3c);
if ((int)uVar3 < 0) {
local_1f = cStack_27;
}
else {
local_1f = '\n';
FUN_8f633c9c(1,(int)((ulonglong)uVar3 >> 0x20));
}
FUN_8f633458(&local_24);
FUN_8f6333c8(&local_24,1);
FUN_8f6330ac(0x1bcd0,0xa5);
FUN_8f6330ac(0x1bce3,2);
}
FUN_8f6104a8(0x14);
uVar2 = extraout_r1_03;
}
else {
FUN_8f6339e4(3);
FUN_8f6345e4(param_2,extraout_r1_00);
FUN_8f6344bc((uint)param_2);
uVar2 = extraout_r1_01;
}
}
if (local_1c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(0,uVar2,local_1c);
}
return;
}
void FUN_8f60159c(int param_1,int param_2,int param_3)
{
int *piVar1;
uint uVar2;
undefined4 extraout_r1;
undefined4 uVar3;
undefined4 extraout_r1_00;
int iVar4;
int iVar5;
undefined8 uVar6;
piVar1 = DAT_8f69d118;
uVar6 = FUN_8f611838();
if (param_1 == 0) {
uVar6 = FUN_8f60106c((int)uVar6,(int)((ulonglong)uVar6 >> 0x20));
uVar3 = (undefined4)((ulonglong)uVar6 >> 0x20);
if ((int)uVar6 == 0) {
FUN_8f604420(0x3d,0);
FUN_8f604420(0x3e,0);
uVar3 = extraout_r1_00;
}
}
else {
if (*(int *)(param_3 + 0x294) != 0) {
FUN_8f6043cc(0x3e,0,1,0,3,1);
FUN_8f604420(0x3e,2);
}
if ((int)uVar6 != 0xb) {
FUN_8f6043cc(0x18,0,1,0,3,1);
FUN_8f604420(0x18,2);
}
FUN_8f6043cc(0x3d,0,1,0,3,1);
iVar4 = 0;
FUN_8f604420(0x3d,2);
iVar5 = param_2;
do {
uVar2 = (uint)*(byte *)(param_2 + iVar4);
iVar4 = iVar4 + 1;
if (uVar2 != 0) {
uVar2 = 2;
}
FUN_8f604420(0x3d,uVar2);
FUN_8f6104a8(*(uint *)(iVar5 + 8));
uVar3 = extraout_r1;
iVar5 = iVar5 + 4;
} while (iVar4 != 3);
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,uVar3,piVar1);
}
void FUN_8f6016e8(undefined4 *param_1)
{
int *piVar1;
undefined4 extraout_r1;
piVar1 = DAT_8f69d118;
FUN_8f63685c(param_1 + 0x33,(undefined4 *)&DAT_8f659b60,0x28);
FUN_8f63685c(param_1,(undefined4 *)&DAT_8f659b88,0x14);
FUN_8f63685c((undefined4 *)((int)param_1 + 0xfa),(undefined4 *)&DAT_8f659a80,0x14);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,extraout_r1,piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f601794)
void FUN_8f601760(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Could not reconcile some variable overlaps
void FUN_8f601798(int param_1,int param_2)
{
uint uVar1;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 uVar2;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 extraout_r1_03;
byte *pbVar3;
undefined8 uVar4;
byte *local_44;
undefined4 local_40;
undefined4 local_3c;
undefined4 local_38;
undefined4 local_34;
undefined4 local_30;
undefined4 local_2c;
undefined4 local_28;
int local_24;
undefined4 local_20;
int *local_1c;
local_1c = DAT_8f69d118;
uVar4 = FUN_8f611838();
if (param_1 == 0) {
if ((int)uVar4 != 0xb) {
FUN_8f60271c(0x10000,(int)((ulonglong)uVar4 >> 0x20));
FUN_8f60271c(0x200,extraout_r1);
}
FUN_8f632ebc(2);
local_44 = (byte *)0xa100;
local_40 = CONCAT22(local_40._2_2_,0x100);
FUN_8f6333c8((int *)&local_44,0);
FUN_8f6104a8(0x14);
uVar2 = extraout_r1_00;
goto LAB_8f601814;
}
FUN_8f632ebc(2);
local_40 = CONCAT22(local_40._2_2_,0x100);
local_44 = (byte *)0xa100;
FUN_8f633458((int *)&local_44);
FUN_8f6333c8((int *)&local_44,1);
FUN_8f6104a8(0x14);
if ((int)uVar4 == 0xb) {
uVar1 = 0xa4;
}
else {
uVar1 = 0x102a4;
}
FUN_8f602638(uVar1,extraout_r1_01);
FUN_8f6104a8(10);
pbVar3 = *(byte **)(param_2 + 0x4f0);
local_40 = 0;
local_3c = 0;
local_38 = 0;
local_34 = 0;
local_30 = 0;
local_24 = 0;
local_20 = 0;
local_44 = pbVar3;
if (pbVar3 == (byte *)0x0) {
LAB_8f6019b0:
local_40 = 0x10303;
local_3c = 5500000;
local_38 = 5500000;
local_34 = 5500000;
local_30 = 5500000;
}
else {
local_44 = (byte *)(uint)*pbVar3;
if (local_44 == (byte *)0x0) {
LAB_8f601938:
if (pbVar3[1] == 0) {
local_40 = 0x10303;
if (local_44 == (byte *)0x0) goto LAB_8f6019b0;
local_3c = 4600000;
local_38 = 4600000;
local_34 = 4000000;
local_30 = 4000000;
}
else {
local_3c = *(undefined4 *)(pbVar3 + 0xc);
local_38 = *(undefined4 *)(pbVar3 + 0x10);
local_34 = *(undefined4 *)(pbVar3 + 4);
local_30 = *(undefined4 *)(pbVar3 + 8);
local_40 = (uint)*(uint3 *)(pbVar3 + 0x14);
}
}
else {
local_24 = *(int *)(pbVar3 + 0x18);
local_20 = 1;
if (local_24 == 0) goto LAB_8f601938;
}
}
local_28 = 4600000;
local_2c = 1400000;
FUN_8f6339e4(3);
FUN_8f634744((uint *)&local_44,extraout_r1_02);
FUN_8f6344bc(1);
FUN_8f6104a8(0x32);
uVar2 = extraout_r1_03;
LAB_8f601814:
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,uVar2,local_1c);
}
// WARNING: Removing unreachable block (ram,0x8f601a40)
void FUN_8f601a0c(int param_1,uint param_2)
{
int iVar1;
byte **ppbVar2;
int iVar3;
int iVar4;
uint uVar5;
int *piVar6;
undefined4 extraout_r1;
char *pcVar7;
undefined4 extraout_r1_00;
undefined4 uVar8;
int *extraout_r1_01;
undefined4 extraout_r1_02;
int *extraout_r1_03;
int *extraout_r1_04;
undefined4 extraout_r1_05;
undefined4 extraout_r1_06;
undefined4 extraout_r1_07;
char *pcVar9;
int *piVar10;
undefined4 *puVar11;
char *pcVar12;
char *pcVar13;
byte *pbVar14;
byte **ppbVar15;
uint uVar16;
int iVar17;
ulonglong uVar18;
undefined8 uVar19;
ulonglong uVar20;
uint local_e0;
uint local_d4;
byte **local_bc;
byte **local_b8 [28];
int **local_48;
ushort local_44;
undefined2 local_42;
undefined2 local_40;
undefined2 local_3e;
undefined2 local_3c;
ushort local_38;
undefined2 local_36;
undefined2 local_34;
undefined2 local_32;
undefined2 local_30;
int *local_2c;
local_2c = DAT_8f69d118;
local_bc = (byte **)0x0;
pcVar7 = (char *)DAT_8f69d118;
iVar1 = FUN_8f636de0((byte *)s__mdss_mdp_panel__8f6648a4);
local_42 = 0;
piVar10 = (int *)(uint)DAT_8f66479c;
local_40 = 0;
local_3e = 0;
local_44 = DAT_8f66479c;
local_38 = DAT_8f66479c;
local_3c = 0;
local_36 = 0;
local_34 = 0;
local_32 = 0;
local_30 = 0;
FUN_8f630600(local_b8);
uVar18 = FUN_8f636bdc((int)&DAT_8f68006c,(byte *)s_sim_video_panel_8f659b10);
if ((byte **)uVar18 == (byte **)0x0) {
pcVar13 = s_qcom_mdss_dsi_sim_video_8f66488c;
ppbVar15 = (byte **)uVar18;
LAB_8f631194:
pcVar12 = s_dsi_0__8f65a114;
LAB_8f63119c:
piVar6 = (int *)(uVar18 >> 0x20);
ppbVar2 = (byte **)uVar18;
if ((undefined4 *)pcVar13 == (undefined4 *)0x0) {
LAB_8f631170:
dprintf((byte *)s_panel_node_or_dsi_ctrl_not_prese_8f6648e4,piVar6,pcVar7,piVar10);
ppbVar2 = (byte **)0x0;
uVar8 = extraout_r1;
goto LAB_8f63153c;
}
if ((((uint)ppbVar15 & 0x18) != 0) && (ppbVar2 == (byte **)0x0)) {
dprintf((byte *)s_slave_node_not_present_in_split__8f664930,piVar6,pcVar7,piVar10);
uVar8 = extraout_r1_06;
goto LAB_8f63153c;
}
uVar19 = FUN_8f636bdc((int)PTR_DAT_8f631920,(byte *)(s__device_command_failed__8f66183c + 0x1c))
;
piVar6 = (int *)((ulonglong)uVar19 >> 0x20);
if ((int)uVar19 != 0) {
LAB_8f631638:
if (((uint)ppbVar15 & 0x19) == 0) {
pcVar7 = s_adv7533_1080p_video_8f680148;
puVar11 = &DAT_8f681f30;
do {
iVar3 = 0x40;
uVar19 = FUN_8f636e98(PTR_DAT_8f631920,(byte *)pcVar7,(int *)0x40);
piVar10 = (int *)((ulonglong)uVar19 >> 0x20);
if ((int)uVar19 == 0) {
iVar3 = *(int *)((int)pcVar7 + 0x80);
ppbVar2 = (byte **)((int)pcVar7 + 0x40);
if (iVar3 < 0) goto LAB_8f6316d4;
if (iVar3 != 1) goto LAB_8f6311cc;
dprintf((byte *)s_Invalid_config__Secondary_panel_c_8f6649dc,piVar10,1,puVar11);
goto LAB_8f6317cc;
}
pcVar7 = (char *)((int)pcVar7 + 0x84);
} while ((undefined4 *)pcVar7 != &DAT_8f681f30);
dprintf((byte *)s_Panel_name__s_not_found_in_looku_8f6648b8,(int *)PTR_DAT_8f631920,iVar3,
puVar11);
piVar10 = extraout_r1_03;
LAB_8f6316d4:
dprintf((byte *)s_Sec__panel_not_found__Continue_w_8f6649a8,piVar10,iVar3,puVar11);
}
else {
dprintf((byte *)s_Invalid_config__Primary_panel_is_8f66495c,piVar6,pcVar7,piVar10);
}
}
LAB_8f6311cc:
if (ppbVar2 == (byte **)0x0) {
LAB_8f6317cc:
FUN_8f636d18((int)PTR_s_single_dsi_8f631924,(byte *)s_single_dsi_8f664a44,0xf);
iVar3 = FUN_8f636de0(PTR_s_single_dsi_8f631924);
iVar3 = iVar3 + 5;
local_d4 = FUN_8f636de0((byte *)pcVar12);
local_d4 = local_d4 & 0xffff;
local_e0 = FUN_8f636de0((byte *)pcVar13);
local_e0 = local_e0 & 0xffff;
LAB_8f63123c:
ppbVar15 = (byte **)&DAT_8f659b08;
}
else {
if (((uint)ppbVar15 & 0x19) == 0) {
pcVar7 = s_dual_dsi_8f664a38;
}
else {
pcVar7 = s_split_dsi_8f664a2c;
}
FUN_8f636d18((int)PTR_s_single_dsi_8f631924,(byte *)pcVar7,0xf);
iVar3 = FUN_8f636de0(PTR_s_single_dsi_8f631924);
iVar3 = iVar3 + 5;
local_d4 = FUN_8f636de0((byte *)pcVar12);
local_d4 = local_d4 & 0xffff;
local_e0 = FUN_8f636de0((byte *)pcVar13);
local_e0 = local_e0 & 0xffff;
iVar4 = FUN_8f636bdc((int)ppbVar2,(byte *)(s__device_command_failed__8f66183c + 0x1c));
ppbVar15 = ppbVar2;
if (iVar4 == 0) goto LAB_8f63123c;
}
uVar5 = FUN_8f636de0((byte *)ppbVar15);
if (local_b8[0] == (byte **)0x0) {
pbVar14 = &DAT_8f664834;
}
else {
iVar4 = FUN_8f636bdc((int)local_b8[0][4],(byte *)s_DISPLAY_2_8f664668);
pbVar14 = &DAT_8f664834;
if (iVar4 == 0) {
pbVar14 = &DAT_8f664830;
}
}
iVar4 = FUN_8f636de0(pbVar14);
uVar16 = iVar3 + 3 + (uVar5 & 0xffff) + local_d4 + iVar1 + local_e0 + iVar4;
if (DAT_8f6800f0 == (int *)0x0) {
LAB_8f631554:
pcVar9 = (char *)DAT_8f68010c;
if (DAT_8f68010c == (byte *)0x0) goto LAB_8f6312f8;
pcVar9 = s__pll1_8f664808;
if (DAT_8f68010c == (byte *)0x1) {
pcVar9 = s__pll0_8f664800;
}
iVar3 = FUN_8f636de0((byte *)pcVar9);
uVar16 = uVar16 + iVar3;
if (DAT_8f6800f8 == (int *)0x0) goto LAB_8f631304;
LAB_8f631594:
pcVar7 = (char *)DAT_8f6800f8;
FUN_8f630b84((int *)&DAT_8f680118,(int *)0x3,(int)DAT_8f6800f8,(int **)&local_bc);
ppbVar2 = local_bc;
if (local_bc == (byte **)0x0) {
dprintf((byte *)s_SIM_string_NULL_but_mode_is_not_N_8f664a7c,extraout_r1_01,pcVar7,0);
uVar8 = extraout_r1_07;
goto LAB_8f63153c;
}
iVar3 = FUN_8f636de0((byte *)local_bc);
uVar16 = uVar16 + 10 + iVar3;
if ((int *)0x63 < DAT_8f680110) goto LAB_8f631310;
LAB_8f6315d0:
pcVar7 = s__config_d_8f664aa4;
piVar10 = DAT_8f680110;
FUN_8f636618((byte *)&local_44,10,(byte *)s__config_d_8f664aa4,DAT_8f680110);
iVar3 = FUN_8f636de0((byte *)&local_44);
uVar16 = uVar16 + iVar3;
}
else {
uVar19 = FUN_8f636bdc((int)s_single_dsi_8f6800fc,(byte *)s_dual_dsi_8f664a38);
if ((byte *)uVar19 != (byte *)0x0) goto LAB_8f631554;
if (DAT_8f68010c != (byte *)0x0) {
dprintf((byte *)s_Dual_DSI_config_detected__Use_de_8f664a50,
(int *)((ulonglong)uVar19 >> 0x20),DAT_8f68010c,0);
DAT_8f68010c = (byte *)uVar19;
}
pcVar9 = (char *)(byte *)0x0;
LAB_8f6312f8:
if (DAT_8f6800f8 != (int *)0x0) goto LAB_8f631594;
LAB_8f631304:
pcVar7 = (char *)DAT_8f6800f8;
if (DAT_8f680110 < (int *)0x64) goto LAB_8f6315d0;
LAB_8f631310:
piVar10 = DAT_8f680110;
if (local_48 != (int **)0x0) {
piVar10 = *local_48;
pcVar7 = &DAT_8f664ab0;
FUN_8f636618((byte *)&local_44,10,&DAT_8f664ab0,piVar10);
iVar3 = FUN_8f636de0((byte *)&local_44);
uVar16 = uVar16 + iVar3;
}
}
iVar3 = FUN_8f636bdc((int)PTR_s_single_dsi_8f631924,(byte *)s_split_dsi_8f664a2c);
if (iVar3 == 0) {
pcVar7 = s__bluetooth_MAC___s_8f662428 + 0x10;
piVar10 = (int *)&local_44;
FUN_8f636618((byte *)&local_38,10,(byte *)(s__bluetooth_MAC___s_8f662428 + 0x10),piVar10);
}
uVar19 = FUN_8f636bdc((int)s_single_dsi_8f6800fc,(byte *)s_dual_dsi_8f664a38);
piVar6 = (int *)((ulonglong)uVar19 >> 0x20);
if (((int)uVar19 == 0) && (piVar10 = DAT_8f680114, DAT_8f680114 < (int *)0x64)) {
pcVar7 = s__config_d_8f664aa4;
FUN_8f636618((byte *)&local_38,10,(byte *)s__config_d_8f664aa4,DAT_8f680114);
uVar19 = FUN_8f636de0((byte *)&local_38);
piVar6 = (int *)((ulonglong)uVar19 >> 0x20);
uVar16 = uVar16 + (int)uVar19;
}
if (uVar16 <= param_2) {
FUN_8f636d18(param_1,(byte *)s__mdss_mdp_panel__8f6648a4,param_2);
uVar16 = param_2 - iVar1 & 0xffff;
iVar17 = param_1 + iVar1 + 2;
iVar3 = iVar17 + local_d4;
FUN_8f636d18(param_1 + iVar1,&DAT_8f664664,uVar16);
iVar4 = iVar3 + local_e0;
uVar16 = uVar16 - 2 & 0xffff;
FUN_8f636d18(iVar17,(byte *)pcVar12,uVar16);
uVar16 = uVar16 - local_d4 & 0xffff;
FUN_8f636d18(iVar3,(byte *)pcVar13,uVar16);
iVar1 = FUN_8f636de0((byte *)&local_44);
uVar16 = uVar16 - local_e0 & 0xffff;
if (iVar1 != 0) {
FUN_8f636d18(iVar4,(byte *)&local_44,uVar16);
iVar1 = FUN_8f636de0((byte *)&local_44);
iVar4 = iVar4 + iVar1;
uVar16 = uVar16 - iVar1 & 0xffff;
}
FUN_8f636d18(iVar4,pbVar14,uVar16);
iVar1 = FUN_8f636de0(pbVar14);
iVar3 = iVar4 + iVar1 + (uVar5 & 0xffff);
uVar16 = uVar16 - iVar1 & 0xffff;
FUN_8f636d18(iVar4 + iVar1,(byte *)ppbVar15,uVar16);
iVar1 = FUN_8f636de0((byte *)&local_38);
uVar5 = uVar16 - uVar5 & 0xffff;
if (iVar1 != 0) {
FUN_8f636d18(iVar3,(byte *)&local_38,uVar5);
iVar1 = FUN_8f636de0((byte *)&local_38);
iVar3 = iVar3 + iVar1;
uVar5 = uVar5 - iVar1 & 0xffff;
}
uVar16 = uVar5 - 5 & 0xffff;
FUN_8f636d18(iVar3,(byte *)s__cfg__8f664ab4,uVar5);
FUN_8f636d18(iVar3 + 5,PTR_s_single_dsi_8f631924,uVar16);
uVar19 = FUN_8f636de0(PTR_s_single_dsi_8f631924);
uVar8 = (undefined4)((ulonglong)uVar19 >> 0x20);
iVar1 = iVar3 + 5 + (int)uVar19;
uVar5 = uVar16 - (int)uVar19 & 0xffff;
if ((byte *)pcVar9 != (byte *)0x0) {
FUN_8f636d18(iVar1,(byte *)pcVar9,uVar5);
uVar19 = FUN_8f636de0((byte *)pcVar9);
uVar8 = (undefined4)((ulonglong)uVar19 >> 0x20);
iVar1 = iVar1 + (int)uVar19;
uVar5 = uVar5 - (int)uVar19 & 0xffff;
}
if (local_bc == (byte **)0x0) {
ppbVar2 = (byte **)0x1;
}
else {
FUN_8f636d18(iVar1,(byte *)s__override__8f664abc,uVar5);
FUN_8f636d18(iVar1 + 10,(byte *)local_bc,uVar5 - 10 & 0xffff);
ppbVar2 = (byte **)0x1;
uVar8 = extraout_r1_00;
}
goto LAB_8f63153c;
}
}
else {
uVar18 = FUN_8f636bdc((int)&DAT_8f68006c,(byte *)s_sim_dualdsi_video_panel_8f659b20);
if ((int)uVar18 == 0) {
pcVar13 = s_qcom_mdss_dsi_dual_sim_video_8f66486c;
ppbVar15 = (byte **)0x1;
uVar18 = uVar18 & 0xffffffff00000000 | ZEXT48(s_qcom_mdss_dsi_dual_sim_video_8f66486c);
goto LAB_8f631194;
}
uVar18 = FUN_8f636bdc((int)&DAT_8f68006c,(byte *)s_sim_cmd_panel_8f659b38);
if ((byte **)uVar18 == (byte **)0x0) {
pcVar13 = s_qcom_mdss_dsi_sim_cmd_8f664854;
ppbVar15 = (byte **)uVar18;
goto LAB_8f631194;
}
uVar18 = FUN_8f636bdc((int)&DAT_8f68006c,(byte *)s_sim_dualdsi_cmd_panel_8f659b48);
piVar6 = (int *)(uVar18 >> 0x20);
if ((int)uVar18 == 0) {
pcVar13 = s_qcom_mdss_dsi_dual_sim_cmd_8f664838;
ppbVar15 = (byte **)0x1;
uVar18 = uVar18 & 0xffffffff00000000 | ZEXT48(s_qcom_mdss_dsi_dual_sim_cmd_8f664838);
goto LAB_8f631194;
}
piVar10 = DAT_8f6800f0;
if (DAT_8f6800f0 != (int *)0x0) {
pcVar13 = s_adv7533_1080p_video_8f680148;
do {
pcVar7 = (char *)0x40;
uVar20 = FUN_8f636e98(&DAT_8f68006c,(byte *)pcVar13,(int *)0x40);
piVar6 = (int *)(uVar20 >> 0x20);
if ((byte **)uVar20 == (byte **)0x0) {
ppbVar15 = *(byte ***)((int)pcVar13 + 0x80);
pcVar13 = (char *)((int)pcVar13 + 0x40);
uVar18 = uVar20 & 0xffffffff00000000 | ZEXT48(pcVar13);
if ((int)ppbVar15 < 0) goto LAB_8f631150;
if (ppbVar15 != (byte **)0x1) {
ppbVar15 = (byte **)uVar20;
uVar18 = uVar20;
}
goto LAB_8f631194;
}
pcVar13 = (char *)((int)pcVar13 + 0x84);
} while ((undefined4 *)pcVar13 != &DAT_8f681f30);
dprintf((byte *)s_Panel_name__s_not_found_in_looku_8f6648b8,(int *)&DAT_8f68006c,pcVar7,
piVar10);
piVar6 = extraout_r1_04;
}
LAB_8f631150:
if (local_b8[0] != (byte **)0x0) {
pcVar12 = (char *)local_b8[0][1];
pcVar13 = (char *)*local_b8[0];
uVar18 = CONCAT44(piVar6,local_b8[0][0xf]);
if ((byte *)pcVar12 != (byte *)0x0) {
ppbVar15 = (byte **)((uint)local_b8[0][0xc] & 0x1a);
goto LAB_8f63119c;
}
goto LAB_8f631170;
}
uVar19 = FUN_8f636bdc((int)PTR_DAT_8f631920,(byte *)(s__device_command_failed__8f66183c + 0x1c))
;
piVar6 = (int *)((ulonglong)uVar19 >> 0x20);
if ((int)uVar19 != 0) {
pcVar13 = &DAT_8f659b08;
pcVar12 = s_dsi_0__8f65a114;
ppbVar2 = local_b8[0];
ppbVar15 = local_b8[0];
goto LAB_8f631638;
}
uVar19 = FUN_8f636de0((byte *)(s_event_status____0_8f6616e8 + 0x10));
piVar6 = (int *)((ulonglong)uVar19 >> 0x20);
if ((uint)((int)uVar19 + iVar1) <= param_2) {
FUN_8f636d18(param_1,(byte *)s__mdss_mdp_panel__8f6648a4,param_2);
FUN_8f636d18(param_1 + iVar1,(byte *)(s_event_status____0_8f6616e8 + 0x10),
param_2 - iVar1 & 0xffff);
ppbVar2 = (byte **)0x1;
uVar8 = extraout_r1_05;
goto LAB_8f63153c;
}
}
dprintf((byte *)s_display_command_line_buffer_is_s_8f664908,piVar6,pcVar7,piVar10);
ppbVar2 = (byte **)0x0;
uVar8 = extraout_r1_02;
LAB_8f63153c:
if (local_2c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(ppbVar2,uVar8,local_2c);
}
return;
}
void FUN_8f601a44(byte *param_1,undefined4 param_2,int *param_3)
{
int iVar1;
uint uVar2;
undefined8 uVar3;
undefined4 auStack_170 [44];
undefined4 auStack_c0 [32];
int local_40;
int local_3c;
int *local_14;
local_14 = DAT_8f69d118;
FUN_8f630cb0(param_1,param_2,param_3);
FUN_8f630c30(auStack_170);
FUN_8f63685c(auStack_c0,auStack_170,0xac);
iVar1 = FUN_8f636bdc((int)auStack_c0,&DAT_8f659b08);
if ((((iVar1 == 0) ||
(iVar1 = FUN_8f636bdc((int)auStack_c0,(byte *)s_sim_video_panel_8f659b10), iVar1 == 0)) ||
(iVar1 = FUN_8f636bdc((int)auStack_c0,(byte *)s_sim_dualdsi_video_panel_8f659b20), iVar1 == 0)
) || (((iVar1 = FUN_8f636bdc((int)auStack_c0,(byte *)s_sim_cmd_panel_8f659b38), iVar1 == 0 ||
(iVar1 = FUN_8f636bdc((int)auStack_c0,(byte *)s_sim_dualdsi_cmd_panel_8f659b48),
iVar1 == 0)) || (local_3c != 0)))) {
local_40 = 0;
}
uVar2 = 0;
do {
FUN_8f6010e8(0);
uVar3 = FUN_8f630644((byte *)auStack_c0,0xd,-0x70000000);
if ((int)uVar3 == -0x18 || (int)uVar3 == 0) break;
uVar2 = uVar2 + 1;
uVar3 = FUN_8f6010e8(1);
uVar3 = FUN_8f61db00((int)uVar3,(int)((ulonglong)uVar3 >> 0x20));
uVar3 = FUN_8f601c9c((int)uVar3,(int)((ulonglong)uVar3 >> 0x20));
} while (uVar2 <= (uint)uVar3);
if (local_40 == 0) {
uVar3 = FUN_8f6010e8(1);
}
if (local_14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),local_14);
}
// WARNING: Removing unreachable block (ram,0x8f630b08)
// WARNING: Removing unreachable block (ram,0x8f601bb4)
void FUN_8f601b80(undefined4 param_1,undefined4 param_2)
{
if (DAT_8f69cfa4 == 0) {
return;
}
FUN_8f61db00(param_1,(uint)DAT_8f69cfa4);
return;
}
void FUN_8f601c9c(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
undefined4 uVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
uVar3 = FUN_8f626570(param_1,param_2);
if ((int)uVar3 == 0) {
uVar2 = 0;
}
else {
uVar2 = 2;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,(int)((ulonglong)uVar3 >> 0x20),piVar1);
}
return;
}
void FUN_8f601ce0(byte *param_1,undefined4 *param_2,byte *param_3,int param_4)
{
int *piVar1;
int *piVar2;
int iVar3;
undefined4 uVar4;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 extraout_r1_03;
undefined4 extraout_r1_04;
undefined4 extraout_r1_05;
undefined4 extraout_r1_06;
undefined4 extraout_r1_07;
undefined4 extraout_r1_08;
byte *pbVar5;
undefined4 uVar6;
piVar1 = DAT_8f69d118;
pbVar5 = param_3;
piVar2 = (int *)FUN_8f611838();
uVar6 = 2;
*(undefined4 *)(param_4 + 0x128) = 2;
if (param_1 == (byte *)0x0) {
LAB_8f601da8:
switch((int)piVar2 + -1) {
case 0:
case 7:
case 0x14:
DAT_8f684428 = 8;
*(undefined4 *)(param_3 + 0x24) = 1;
switchD_8f601d60_caseD_8:
*param_2 = &PTR_s_qcom_mdss_dsi_nt51018c_wsvga_vid_8f67a164;
param_2[1] = &DAT_8f67a648;
param_2[2] = &DAT_8f679ee4;
param_2[3] = &DAT_8f679b8c;
param_2[4] = &DAT_8f6844ac;
param_2[5] = &DAT_8f67b164;
param_2[6] = &DAT_8f679ed8;
param_2[7] = &DAT_8f6759d8;
param_2[8] = &DAT_8f6798e0;
param_2[9] = &DAT_8f677e04;
*(undefined **)(param_3 + 0x264) = &DAT_8f67ac54;
*(undefined **)(param_3 + 0x26c) = &DAT_8f679e6c;
*(undefined4 *)(param_3 + 0x268) = 1;
*(undefined4 *)(param_3 + 0x270) = 2;
FUN_8f63685c((undefined4 *)(param_4 + 0x1c),(undefined4 *)&DAT_8f659e1c,0xa0);
uVar6 = extraout_r1_00;
break;
default:
dprintf((byte *)s_Display_not_enabled_for__d_HW_ty_8f65a0c0,piVar2,pbVar5,(int)piVar2 + -1);
uVar4 = 0;
uVar6 = extraout_r1_01;
goto LAB_8f601fc4;
case 10:
DAT_8f684428 = 3;
*(undefined4 *)(param_3 + 0x24) = 1;
switchD_8f601d60_caseD_3:
*param_2 = &PTR_s_qcom_mdss_dsi_r69006_1080p_cmd_8f675d4c;
param_2[1] = &DAT_8f67a564;
param_2[2] = &DAT_8f67a450;
param_2[3] = &DAT_8f675c60;
param_2[4] = &DAT_8f6756ec;
param_2[5] = &DAT_8f6759a8;
param_2[6] = &DAT_8f675ef4;
param_2[7] = &DAT_8f67b108;
param_2[8] = &DAT_8f677954;
param_2[9] = &DAT_8f677a38;
*(undefined **)(param_3 + 0x4f0) = &DAT_8f677a14;
*(undefined **)(param_3 + 0x264) = &DAT_8f679900;
*(undefined4 *)(param_3 + 0x268) = 0x20;
*(undefined **)(param_3 + 0x26c) = &DAT_8f675e5c;
*(undefined4 *)(param_3 + 0x270) = 2;
FUN_8f63685c((undefined4 *)(param_4 + 0x1c),(undefined4 *)&DAT_8f659b9c,0xa0);
param_3[0x252] = 1;
*(undefined4 *)(param_3 + 0x290) = 0xffff;
param_3[0x251] = 1;
uVar6 = extraout_r1;
}
}
else {
pbVar5 = param_1;
iVar3 = FUN_8f6325d0((byte *)s_truly_1080p_video_8f677a60,(int *)0x9,param_1);
if (iVar3 < 0) {
iVar3 = FUN_8f637074(param_1,&DAT_8f661410);
dprintf((byte *)s_Not_able_to_search_the_panel__s_8f65a09c,(int *)(param_1 + iVar3),pbVar5,
uVar6);
goto LAB_8f601da8;
}
if (8 < iVar3) goto LAB_8f601da8;
DAT_8f684428 = iVar3;
*(undefined4 *)(param_3 + 0x24) = 1;
switch(iVar3) {
case 1:
*param_2 = &PTR_s_qcom_mdss_dsi_truly_1080p_cmd_8f67acc8;
DAT_8f67acfc = 0;
param_2[1] = &DAT_8f679a80;
param_2[2] = &DAT_8f675a68;
param_2[3] = &DAT_8f675c48;
param_2[4] = &DAT_8f67a0c8;
param_2[5] = &DAT_8f67a094;
param_2[6] = &DAT_8f675d30;
param_2[7] = &DAT_8f67549c;
param_2[8] = &DAT_8f67a0a4;
param_2[9] = &DAT_8f67cc58;
*(undefined **)(param_3 + 0x264) = &DAT_8f67575c;
*(undefined **)(param_3 + 0x26c) = &DAT_8f675e80;
*(undefined4 *)(param_3 + 0x268) = 0x16;
*(undefined4 *)(param_3 + 0x270) = 2;
FUN_8f63685c((undefined4 *)(param_4 + 0x1c),(undefined4 *)&DAT_8f659d7c,0xa0);
*(undefined4 *)(param_3 + 0x290) = 0xffff;
uVar6 = extraout_r1_08;
break;
case 2:
*param_2 = &PTR_s_qcom_mdss_dsi_r69006_1080p_video_8f677d00;
param_2[1] = &DAT_8f67a400;
param_2[2] = &DAT_8f67acbc;
param_2[3] = &DAT_8f677e68;
param_2[4] = &DAT_8f68442c;
param_2[5] = &DAT_8f67a66c;
param_2[6] = &DAT_8f679b4c;
param_2[7] = &DAT_8f67ad74;
param_2[8] = &DAT_8f67a4cc;
param_2[9] = &DAT_8f67a594;
*(undefined **)(param_3 + 0x4f0) = &DAT_8f675dd4;
*(undefined **)(param_3 + 0x264) = &DAT_8f67aa74;
*(undefined4 *)(param_3 + 0x268) = 0x17;
*(undefined **)(param_3 + 0x26c) = &DAT_8f67b110;
*(undefined4 *)(param_3 + 0x270) = 2;
FUN_8f63685c((undefined4 *)(param_4 + 0x1c),(undefined4 *)&DAT_8f659ebc,0xa0);
*(undefined4 *)(param_3 + 0x290) = 0xffff;
uVar6 = extraout_r1_02;
break;
case 3:
goto switchD_8f601d60_caseD_3;
case 4:
*param_2 = &PTR_s_qcom_mdss_dsi_truly_wuxga_video_8f6755f0;
DAT_8f675624 = 1;
param_2[1] = &DAT_8f67a780;
param_2[2] = &DAT_8f67cbe0;
param_2[3] = &DAT_8f6756c4;
param_2[4] = &DAT_8f6844cc;
param_2[5] = &DAT_8f679b10;
param_2[6] = &DAT_8f675b64;
param_2[7] = &DAT_8f6798dc;
param_2[8] = &DAT_8f67a878;
param_2[9] = &DAT_8f67a7a8;
*(undefined4 *)(param_3 + 0x268) = 1;
*(undefined **)(param_3 + 0x264) = &DAT_8f6755dc;
*(undefined4 *)(param_3 + 0x270) = 1;
*(undefined **)(param_3 + 0x26c) = &DAT_8f675ac8;
FUN_8f63685c((undefined4 *)(param_4 + 0x1c),(undefined4 *)&DAT_8f659f5c,0xa0);
FUN_8f636968((uint *)(param_3 + 0x300),0,0x58);
*(undefined4 *)(param_3 + 0x304) = 0xd;
*(undefined4 *)(param_3 + 0x308) = 0x30;
*(undefined4 *)(param_3 + 0x30c) = 0x31;
*(undefined4 *)(param_3 + 0x310) = 0x32;
*(undefined4 *)(param_3 + 0x314) = 0x33;
*(undefined4 *)(param_3 + 0x318) = 0x34;
*(undefined4 *)(param_3 + 0x31c) = 0x35;
*(undefined4 *)(param_3 + 800) = 0x36;
*(undefined4 *)(param_3 + 0x324) = 0x37;
*(undefined4 *)(param_3 + 0x328) = 0x38;
*(undefined4 *)(param_3 + 0x32c) = 0x39;
*(undefined4 *)(param_3 + 0x330) = 0x3a;
*(undefined4 *)(param_3 + 0x334) = 0x3b;
*(undefined4 *)(param_3 + 0x300) = 1;
*(undefined4 *)(param_3 + 0x338) = 0x3c;
*(undefined4 *)(param_3 + 0x290) = 0xffff;
uVar6 = extraout_r1_06;
break;
case 5:
*param_2 = &PTR_s_qcom_mdss_dsi_nt35532h_1080p_vid_8f67ae28;
param_2[1] = &DAT_8f67af14;
param_2[2] = &DAT_8f675a18;
param_2[3] = &DAT_8f675d8c;
param_2[4] = &DAT_8f68446c;
param_2[5] = &DAT_8f67a06c;
param_2[6] = &DAT_8f67794c;
param_2[7] = &DAT_8f67a020;
param_2[8] = &DAT_8f67589c;
param_2[9] = &DAT_8f675a00;
*(undefined **)(param_3 + 0x264) = &DAT_8f67b264;
*(undefined **)(param_3 + 0x26c) = &DAT_8f675f80;
*(undefined4 *)(param_3 + 0x268) = 0x21a;
*(undefined4 *)(param_3 + 0x270) = 2;
FUN_8f63685c((undefined4 *)(param_4 + 0x1c),(undefined4 *)&DAT_8f659ffc,0xa0);
uVar6 = extraout_r1_05;
break;
case 6:
*param_2 = &PTR_s_qcom_mdss_dsi_ili7807d_1080p_vid_8f67a1b4;
param_2[1] = &DAT_8f67b178;
param_2[2] = &DAT_8f675df8;
param_2[3] = &DAT_8f675478;
param_2[4] = &DAT_8f68444c;
param_2[5] = &DAT_8f67a44c;
param_2[6] = &DAT_8f67558c;
param_2[7] = &DAT_8f67a748;
param_2[8] = &DAT_8f677988;
param_2[9] = &DAT_8f67a6f8;
*(undefined **)(param_3 + 0x264) = &DAT_8f676014;
*(undefined **)(param_3 + 0x26c) = &DAT_8f677e50;
*(undefined4 *)(param_3 + 0x268) = 0x21a;
*(undefined4 *)(param_3 + 0x270) = 2;
FUN_8f63685c((undefined4 *)(param_4 + 0x1c),(undefined4 *)&DAT_8f659cdc,0xa0);
uVar6 = extraout_r1_04;
break;
case 7:
*param_2 = &PTR_s_qcom_mdss_dsi_ili7807d_1080p_vid_8f67a2c0;
param_2[1] = &DAT_8f677e18;
param_2[2] = &DAT_8f67cbe8;
param_2[3] = &DAT_8f675e50;
param_2[4] = &DAT_8f68448c;
param_2[5] = &DAT_8f679b14;
param_2[6] = &DAT_8f67a308;
param_2[7] = &DAT_8f67a294;
param_2[8] = &DAT_8f67a044;
param_2[9] = &DAT_8f675a70;
*(undefined **)(param_3 + 0x264) = &DAT_8f677f80;
*(undefined **)(param_3 + 0x26c) = &DAT_8f67a27c;
*(undefined4 *)(param_3 + 0x268) = 0x215;
*(undefined4 *)(param_3 + 0x270) = 2;
FUN_8f63685c((undefined4 *)(param_4 + 0x1c),(undefined4 *)&DAT_8f65a254,0xa0);
uVar6 = extraout_r1_03;
break;
case 8:
goto switchD_8f601d60_caseD_8;
default:
*param_2 = &PTR_s_qcom_mdss_dsi_truly_1080p_video_8f675fd4;
DAT_8f676008 = 0;
param_2[1] = &DAT_8f67af8c;
param_2[2] = &DAT_8f6758bc;
param_2[3] = &DAT_8f67a118;
param_2[4] = &DAT_8f684408;
param_2[5] = &DAT_8f67a01c;
param_2[6] = &DAT_8f67a708;
param_2[7] = &DAT_8f67af74;
param_2[8] = &DAT_8f675684;
param_2[9] = &DAT_8f67a530;
*(undefined **)(param_3 + 0x264) = &DAT_8f679ef0;
*(undefined **)(param_3 + 0x26c) = &DAT_8f675d08;
*(undefined4 *)(param_3 + 0x268) = 0x15;
*(undefined4 *)(param_3 + 0x270) = 2;
FUN_8f63685c((undefined4 *)(param_4 + 0x1c),(undefined4 *)&DAT_8f659c3c,0xa0);
FUN_8f636968((uint *)(param_3 + 0x300),0,0x58);
*(undefined4 *)(param_3 + 0x300) = 1;
*(undefined4 *)(param_3 + 0x304) = 0xd;
*(undefined4 *)(param_3 + 0x308) = 0x30;
*(undefined4 *)(param_3 + 0x30c) = 0x31;
*(undefined4 *)(param_3 + 0x310) = 0x32;
*(undefined4 *)(param_3 + 0x314) = 0x33;
*(undefined4 *)(param_3 + 0x318) = 0x34;
*(undefined4 *)(param_3 + 0x31c) = 0x35;
*(undefined4 *)(param_3 + 800) = 0x36;
*(undefined4 *)(param_3 + 0x324) = 0x37;
*(undefined4 *)(param_3 + 0x328) = 0x38;
*(undefined4 *)(param_3 + 0x32c) = 0x39;
*(undefined4 *)(param_3 + 0x330) = 0x3a;
*(undefined4 *)(param_3 + 0x334) = 0x3b;
*(undefined4 *)(param_3 + 0x338) = 0x3c;
*(undefined4 *)(param_3 + 0x290) = 0xffff;
uVar6 = extraout_r1_07;
}
}
uVar4 = 1;
LAB_8f601fc4:
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar4,uVar6,piVar1);
}
return;
}
void FUN_8f602638(uint param_1,undefined4 param_2)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = CONCAT44(param_2,param_1);
if ((param_1 & 4) != 0) {
uVar2 = FUN_8f608768((undefined4 *)PTR_DAT_8f602718,0x24,(int *)0x0);
}
if ((param_1 & 0x10000) != 0) {
uVar2 = FUN_8f608768((undefined4 *)PTR_DAT_8f602714,0x24,(int *)0x0);
}
if ((param_1 & 0x20) != 0) {
uVar2 = FUN_8f608768((undefined4 *)PTR_DAT_8f602710,0x24,(int *)0x0);
}
if ((param_1 & 0x80) != 0) {
uVar2 = FUN_8f608768((undefined4 *)PTR_DAT_8f60270c,0x24,(int *)0x0);
}
if ((param_1 & 0x200) == 0) {
if (piVar1 == DAT_8f69d118) {
return;
}
}
else if (piVar1 == DAT_8f69d118) {
FUN_8f608768((undefined4 *)PTR_s_ldoa_8f602708,0x24,(int *)0x0);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
void FUN_8f60271c(uint param_1,undefined4 param_2)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = CONCAT44(param_2,param_1);
if ((param_1 & 4) != 0) {
uVar2 = FUN_8f608768((undefined4 *)&DAT_8f67cda8,0x24,(int *)0x0);
}
if ((param_1 & 0x10000) != 0) {
uVar2 = FUN_8f608768((undefined4 *)&DAT_8f67cd50,0x24,(int *)0x0);
}
if ((param_1 & 0x20) != 0) {
uVar2 = FUN_8f608768((undefined4 *)&DAT_8f67ce00,0x24,(int *)0x0);
}
if ((param_1 & 0x80) != 0) {
uVar2 = FUN_8f608768((undefined4 *)&DAT_8f67cca0,0x24,(int *)0x0);
}
if ((param_1 & 0x200) == 0) {
if (piVar1 == DAT_8f69d118) {
return;
}
}
else if (piVar1 == DAT_8f69d118) {
FUN_8f608768((undefined4 *)s_ldoa_8f67ccf8,0x24,(int *)0x0);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
void FUN_8f602800(undefined4 *param_1,int param_2,int param_3)
{
int *piVar1;
undefined uVar2;
int iVar3;
int *piVar4;
uint *puVar5;
undefined4 uVar6;
undefined4 extraout_r1;
undefined4 uVar7;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 extraout_r1_03;
undefined4 extraout_r1_04;
undefined4 extraout_r1_05;
uint uVar8;
uint *puVar9;
int *piVar10;
char *pcVar11;
uint uVar12;
char *pcVar13;
undefined8 uVar14;
longlong lVar15;
piVar1 = DAT_8f69d118;
pcVar13 = s_backup1_8f65a2f4;
pcVar11 = s_devinfo_8f65a2fc;
if (param_3 == 0) {
pcVar13 = pcVar11;
}
uVar14 = FUN_8f606760((byte *)pcVar13);
piVar10 = (int *)((ulonglong)uVar14 >> 0x20);
iVar3 = (int)uVar14;
if (iVar3 < 0) {
dprintf((byte *)s__factory__ERROR__Cannot_find_dev_8f65a304,piVar10,param_3,pcVar11);
uVar6 = 0xffffffff;
uVar7 = extraout_r1_03;
goto LAB_8f602900;
}
lVar15 = FUN_8f60688c(iVar3,piVar10);
piVar10 = (int *)((ulonglong)lVar15 >> 0x20);
uVar12 = (uint)lVar15 | (uint)piVar10;
if (lVar15 == 0) {
dprintf((byte *)s__factory__ERROR__devinfo_partiti_8f65a334,piVar10,param_3,0);
uVar6 = 0xffffffff;
uVar7 = extraout_r1_02;
goto LAB_8f602900;
}
uVar2 = FUN_8f606904(iVar3);
uVar14 = FUN_8f60db18(uVar2);
piVar4 = (int *)FUN_8f60d5cc((int)uVar14,(int)((ulonglong)uVar14 >> 0x20));
uVar8 = (int)piVar4 + 0xff;
piVar10 = (int *)(-(int)piVar4 & uVar8);
if ((int *)(-(int)piVar4 & uVar8) < piVar4) {
piVar10 = piVar4;
}
uVar14 = FUN_8f6366a8(piVar4,(uint)piVar10);
puVar5 = (uint *)uVar14;
if (puVar5 == (uint *)0x0) {
dprintf((byte *)s__factory__Failed_to_allocate_mem_8f65a36c,(int *)((ulonglong)uVar14 >> 0x20),
uVar8,uVar12);
uVar6 = 0xffffffff;
uVar7 = extraout_r1_05;
goto LAB_8f602900;
}
uVar12 = (uint)(lVar15 + 0x4000);
uVar8 = (uint)((ulonglong)(lVar15 + 0x4000) >> 0x20);
FUN_8f636968(puVar5,0,(int)piVar10);
if (param_2 == 0) {
puVar9 = puVar5;
uVar14 = FUN_8f60d85c(uVar12,uVar8,(uint)puVar5,(uint)piVar10);
if ((int)uVar14 != 0) {
dprintf((byte *)s__factory__ERROR__Cannot_read_fac_8f65a400,(int *)((ulonglong)uVar14 >> 0x20)
,puVar9,piVar10);
FUN_8f636758((int)puVar5);
uVar6 = 0xffffffff;
uVar7 = extraout_r1_04;
goto LAB_8f602900;
}
piVar4 = (int *)(uint)*(ushort *)puVar5;
if (piVar4 != (int *)0x705) goto LAB_8f602970;
FUN_8f63685c(param_1,puVar5,0x100);
if (*(short *)((int)param_1 + 2) == 1) {
*(undefined2 *)(param_1 + 0x30) = 0;
}
}
else {
puVar9 = (uint *)0x100;
FUN_8f63685c(puVar5,param_1,0x100);
piVar4 = (int *)(uint)*(ushort *)puVar5;
if (piVar4 != (int *)0x705) {
LAB_8f602970:
dprintf((byte *)s__factory__ERROR__Invalid_MAGIC___8f65a3ac,piVar4,puVar9,0x705);
FUN_8f636758((int)puVar5);
uVar6 = 0xffffffff;
uVar7 = extraout_r1_01;
goto LAB_8f602900;
}
puVar9 = puVar5;
uVar14 = FUN_8f60d620(uVar12,uVar8,(uint)piVar10,(uint)puVar5);
if ((int)uVar14 != 0) {
dprintf((byte *)s__factory__ERROR__Cannot_write_fa_8f65a3d4,(int *)((ulonglong)uVar14 >> 0x20)
,piVar10,puVar9);
FUN_8f636758((int)puVar5);
uVar6 = 0xffffffff;
uVar7 = extraout_r1_00;
goto LAB_8f602900;
}
}
FUN_8f636758((int)puVar5);
uVar6 = 0;
uVar7 = extraout_r1;
LAB_8f602900:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar6,uVar7,piVar1);
}
void FUN_8f6029e8(undefined4 *param_1)
{
uint uVar1;
uint uVar2;
int iVar3;
int *piVar4;
int *extraout_r1;
int *extraout_r1_00;
int *extraout_r1_01;
undefined4 uVar5;
uint uVar6;
undefined8 uVar7;
uint uStack_21c;
uint local_218;
undefined4 uStack_11c;
uint local_118;
int *local_1c;
local_1c = DAT_8f69d118;
FUN_8f636968(&uStack_21c,0,0x200);
uVar1 = FUN_8f602800(&uStack_21c,0,0);
uVar2 = FUN_8f602800(&uStack_11c,0,1);
uVar6 = uVar2 | uVar1;
if (uVar6 == 0) {
uVar6 = local_118;
if (local_218 == 1) {
if (local_118 == 1) {
iVar3 = FUN_8f636a7c((char *)&uStack_21c,(char *)&uStack_11c,0x100);
uVar6 = local_118;
if (iVar3 == 0) goto LAB_8f602b10;
goto LAB_8f602ac8;
}
local_218 = local_118;
if (local_118 == 0) goto LAB_8f602a7c;
}
else if ((local_218 == 0) && (local_218 = local_118, local_118 == 1)) {
LAB_8f602ac8:
FUN_8f63685c(param_1,&uStack_21c,0x100);
uVar5 = 1;
uVar7 = FUN_8f602800(&uStack_21c,1,1);
piVar4 = (int *)((ulonglong)uVar7 >> 0x20);
uVar2 = uVar1;
if ((int)uVar7 != 0) {
dprintf((byte *)s__factory__ERROR__backup_failed_8f65a42c,piVar4,uVar5,uVar6);
piVar4 = extraout_r1;
}
goto LAB_8f602aa8;
}
iVar3 = FUN_8f636a7c((char *)&uStack_21c,(char *)&uStack_11c,0x100);
uVar6 = local_218;
if (iVar3 == 0) {
LAB_8f602b10:
FUN_8f60dbb0((byte *)s_backup1_8f65a2f4,'\x01');
FUN_8f63685c(param_1,&uStack_21c,0x100);
uVar2 = uVar1;
piVar4 = extraout_r1_00;
goto LAB_8f602aa8;
}
}
else {
if (uVar1 == 0) goto LAB_8f602ac8;
if (uVar2 != 0) goto LAB_8f602b10;
}
LAB_8f602a7c:
FUN_8f63685c(param_1,&uStack_11c,0x100);
uVar5 = 0;
uVar7 = FUN_8f602800(&uStack_11c,1,0);
piVar4 = (int *)((ulonglong)uVar7 >> 0x20);
if ((int)uVar7 != 0) {
dprintf((byte *)s__factory__ERROR__restore_failed_8f65a44c,piVar4,uVar5,uVar6);
piVar4 = extraout_r1_01;
}
LAB_8f602aa8:
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,piVar4,local_1c);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f602b84(void)
{
uint uVar1;
uint uVar2;
uint uVar3;
uint *puVar4;
uint *puVar5;
uint uVar6;
uint uVar7;
int iVar8;
uint uVar9;
int iVar10;
uint local_dc;
undefined4 auStack_d0 [2];
uint local_c8 [41];
local_c8[39] = DAT_8f69d118;
if (DAT_8f6844ec == '\0') {
local_dc = (uint)DAT_8f6844ed;
if (local_dc == 0) {
FUN_8f63685c(auStack_d0,(undefined4 *)&DAT_8f65a470,0xa0);
FUN_8f63388c(1,(int *)0x1);
uVar3 = FUN_8f6336bc(0x11);
iVar10 = 0;
puVar4 = local_c8;
uVar9 = uVar3;
do {
puVar5 = puVar4 + 4;
uVar2 = -(puVar4[1] + (uint)(uVar3 < *puVar4));
uVar1 = (int)uVar2 >> 0x1f;
uVar6 = uVar3 - *puVar4 ^ uVar1;
uVar7 = uVar6 - uVar1;
iVar8 = (uVar2 ^ uVar1) - (uVar1 + (uVar6 < uVar1));
if ((int)(iVar8 - (iVar10 + (uint)(uVar7 < uVar9))) < 0 !=
(SBORROW4(iVar8,iVar10) != SBORROW4(iVar8 - iVar10,(uint)(uVar7 < uVar9)))) {
local_dc = (uint)*(byte *)(puVar4 + -2);
uVar9 = uVar7;
iVar10 = iVar8;
}
puVar4 = puVar5;
} while (puVar5 != local_c8 + 0x28);
_DAT_8f6844ec = CONCAT11((char)local_dc,(char)(local_dc >> 4)) & 0xfff;
}
}
if (local_c8[39] != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(_DAT_8f6844ec & 0xff | (int)(int *)(uint)(_DAT_8f6844ec >> 8) << 8,DAT_8f69d118,
(int *)(uint)(_DAT_8f6844ec >> 8));
}
return;
}
void FUN_8f602c98(void)
{
int *piVar1;
undefined4 uVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
uVar3 = FUN_8f61203c();
FUN_8f604388((int)uVar3,(int)((ulonglong)uVar3 >> 0x20));
uVar3 = FUN_8f608118();
uVar3 = FUN_8f610554((int)uVar3,(int)((ulonglong)uVar3 >> 0x20));
uVar2 = (undefined4)((ulonglong)uVar3 >> 0x20);
if (piVar1 == DAT_8f69d118) {
FUN_8f615328((int)uVar3,uVar2,piVar1);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,uVar2,piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f602d10)
void FUN_8f602ce0(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6104a4)
// WARNING: Removing unreachable block (ram,0x8f6107fc)
// WARNING: Removing unreachable block (ram,0x8f602d48)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f602d14(undefined4 param_1,undefined4 param_2)
{
_DAT_0b02102c = _DAT_0b02102c & 0xfffffffe | 2;
DataSynchronizationBarrier(0xf);
return;
}
// WARNING: Removing unreachable block (ram,0x8f602d88)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f602d4c(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f602dc4)
void FUN_8f602d8c(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f602dfc)
void FUN_8f602dc8(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f602e00(undefined4 param_1,undefined4 param_2,char *param_3)
{
int *piVar1;
int iVar2;
uint uVar3;
int iVar4;
uint uVar5;
int iVar6;
undefined *puVar7;
undefined *puVar8;
undefined *puVar9;
undefined8 uVar10;
piVar1 = DAT_8f69d118;
iVar2 = FUN_8f604c84(param_1,param_2,param_3);
if ((_DAT_0193d000 == (int *)0x0) || (*_DAT_0193d000 != 0x49494953)) {
uVar5 = 0x86300000;
}
else {
uVar5 = _DAT_0193d000[2];
}
iVar4 = 0;
do {
uVar3 = iVar2 + 0x5900000 + iVar4;
iVar4 = iVar4 + -0x100000;
FUN_8f626208(uVar3,uVar3,0xc18);
puVar7 = PTR_DAT_8f602f00;
} while (iVar4 != -0x5a00000);
uVar10 = FUN_8f626208(uVar5,uVar5,0xc18);
puVar8 = puVar7 + -8;
puVar9 = puVar7 + 0x70;
do {
iVar2 = *(int *)(puVar8 + 8);
if (iVar2 != 0) {
iVar4 = *(int *)(puVar7 + -8);
iVar6 = *(int *)(puVar7 + -4);
uVar3 = *(uint *)(puVar8 + 0xc);
uVar5 = iVar4 + (iVar2 + 0xfff) * 0x100000;
do {
uVar10 = FUN_8f626208(uVar5,(iVar6 - iVar4) + uVar5,uVar3);
iVar2 = iVar2 + -1;
uVar5 = uVar5 - 0x100000;
} while (iVar2 != 0);
}
puVar7 = puVar7 + 0x10;
puVar8 = puVar8 + 0x10;
} while (puVar7 != puVar9);
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar10,(int)((ulonglong)uVar10 >> 0x20),piVar1);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f602f34)
void FUN_8f602f04(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f602f68)
void FUN_8f602f38(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f602fa0)
void FUN_8f602f6c(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f603008)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f602fa4(void)
{
return;
}
void FUN_8f60300c(void)
{
int *piVar1;
uint uVar2;
undefined4 uVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
uVar4 = FUN_8f611778();
uVar2 = (uint)uVar4;
if (uVar2 == 0x130) {
LAB_8f603074:
uVar3 = 1;
}
else {
if (uVar2 < 0x131) {
if (uVar2 == 0x125) goto LAB_8f603074;
}
else if ((uVar2 == 0x152) || (uVar2 == 0x15f)) goto LAB_8f603074;
uVar3 = 0;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f6030d4)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f603080(void)
{
return;
}
void FUN_8f6030d8(uint *param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
uint uVar2;
int iVar3;
int *in_lr;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
uVar4 = CONCAT44(param_2,param_1);
iVar3 = 500;
do {
uVar2 = *param_1;
if ((uVar2 & 1) == 0) goto LAB_8f60311c;
uVar4 = FUN_8f6104fc(1);
iVar3 = iVar3 + -1;
} while (iVar3 != 0);
dprintf((byte *)s_failed_to_update_rcg_config_for_r_8f65a580,(int *)param_1,param_3,uVar2);
uVar4 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x1e2);
LAB_8f60311c:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
void FUN_8f603174(int *param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
int iVar2;
int iVar3;
int *in_lr;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
uVar4 = CONCAT44(param_2,param_1);
iVar3 = 500;
do {
iVar2 = *param_1;
if (-1 < iVar2) goto LAB_8f6031b8;
uVar4 = FUN_8f6104fc(1);
iVar3 = iVar3 + -1;
} while (iVar3 != 0);
dprintf((byte *)s_failed_to_enable_branch_for_reg___8f65a5cc,param_1,param_3,iVar2);
uVar4 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x1f0);
LAB_8f6031b8:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f603210(void)
{
int *piVar1;
int *piVar2;
int *piVar3;
undefined4 uVar4;
undefined4 uVar5;
int *in_lr;
undefined8 uVar6;
piVar1 = DAT_8f69d118;
uVar4 = 1;
piVar3 = DAT_8f69d118;
piVar2 = (int *)FUN_8f610ca8((int *)s_usb30_iface_clk_8f65a5f4,(int *)0x0,1);
if (piVar2 != (int *)0x0) {
dprintf((byte *)s_failed_to_set_usb30_iface_clk__r_8f65a604,piVar2,uVar4,piVar3);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x3f);
}
uVar5 = 0x183f000;
uVar4 = 1;
_DAT_0183f078 = _DAT_0183f078 & 0xfffffffe;
piVar3 = (int *)FUN_8f610ca8((int *)(s_gcc_usb30_master_clk_8f65acd8 + 4),(int *)0x7f27450,1);
if (piVar3 != (int *)0x0) {
dprintf((byte *)s_failed_to_set_usb30_master_clk__r_8f65a630,piVar3,uVar4,uVar5);
uVar5 = 0x48;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x48);
}
uVar4 = 1;
piVar3 = (int *)FUN_8f610ca8((int *)s_usb30_pipe_clk_8f65a65c,(int *)0x0,1);
if (piVar3 != (int *)0x0) {
dprintf((byte *)s_failed_to_set_usb30_pipe_clk__re_8f65a66c,piVar3,uVar4,uVar5);
uVar5 = 0x4e;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x4e);
}
uVar4 = 1;
piVar3 = (int *)FUN_8f610ca8((int *)(s_gcc_usb30_aux_clk_8f65acb0 + 4),(int *)0x124f800,1);
if (piVar3 != (int *)0x0) {
dprintf((byte *)s_failed_to_set_usb30_aux_clk__ret_8f65a694,piVar3,uVar4,uVar5);
uVar5 = 0x55;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x55);
}
uVar4 = 1;
piVar3 = (int *)FUN_8f610ca8((int *)s_usb30_mock_utmi_clk_8f65a6bc,(int *)0x3938700,1);
if (piVar3 != (int *)0x0) {
dprintf((byte *)s_failed_to_set_usb30_mock_utmi_cl_8f65a6d0,piVar3,uVar4,uVar5);
uVar5 = 0x5c;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x5c);
}
uVar4 = 1;
piVar3 = (int *)FUN_8f610ca8((int *)s_usb30_sleep_clk_8f65a6fc,(int *)0x0,1);
if (piVar3 != (int *)0x0) {
dprintf((byte *)s_failed_to_set_usb30_sleep_clk_re_8f65a70c,piVar3,uVar4,uVar5);
uVar5 = 99;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,99);
}
uVar4 = 1;
piVar3 = (int *)FUN_8f610ca8((int *)(s_gcc_usb_phy_cfg_ahb_clk_8f65ad08 + 4),(int *)0x0,1);
uVar6 = CONCAT44(piVar3,piVar3);
if (piVar3 != (int *)0x0) {
dprintf((byte *)s_failed_to_set_usb_phy_cfg_ahb_cl_8f65a734,piVar3,uVar4,uVar5);
uVar6 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x6a);
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar6,(int)((ulonglong)uVar6 >> 0x20),piVar1);
}
void FUN_8f6034b0(int *param_1)
{
int *piVar1;
undefined4 uVar2;
int *in_lr;
undefined8 uVar3;
int aiStack_54 [16];
int *local_14;
local_14 = DAT_8f69d118;
FUN_8f636618((byte *)aiStack_54,0x40,(byte *)s_sdc_u_iface_clk_8f65a760,param_1);
uVar2 = 1;
piVar1 = (int *)FUN_8f610ca8(aiStack_54,(int *)0x0,1);
uVar3 = CONCAT44(piVar1,piVar1);
if (piVar1 != (int *)0x0) {
dprintf((byte *)s_failed_to_set_sdc1_iface_clk_ret_8f65a770,piVar1,uVar2,param_1);
uVar3 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x7a);
}
if (local_14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),local_14);
}
void FUN_8f60354c(int *param_1,int *param_2)
{
int iVar1;
char *pcVar2;
undefined4 uVar3;
int *in_lr;
undefined8 uVar4;
int aiStack_54 [16];
int *local_14;
pcVar2 = s_sdc_u_core_clk_8f65a798;
local_14 = DAT_8f69d118;
FUN_8f636618((byte *)aiStack_54,0x40,(byte *)s_sdc_u_core_clk_8f65a798,param_1);
uVar3 = 400000;
if (param_2 == (int *)0x61a80) {
LAB_8f60366c:
uVar4 = FUN_8f610ca8(aiStack_54,param_2,1);
LAB_8f60367c:
iVar1 = (int)uVar4;
if (iVar1 == 0) goto LAB_8f603654;
}
else {
uVar3 = 0x2ee0000;
if (param_2 == (int *)0x2ee0000) {
uVar4 = FUN_8f610ca8(aiStack_54,(int *)0x2faf080,1);
goto LAB_8f60367c;
}
uVar3 = 0xa988e10;
if (((param_2 == (int *)0xa988e10) || (uVar3 = 192000000, param_2 == (int *)0xb71b000)) ||
(uVar3 = 200000000, param_2 == (int *)0xbebc200)) goto LAB_8f60366c;
uVar3 = 400000000;
if (param_2 == (int *)0x17d78400) {
uVar4 = FUN_8f610ca8(aiStack_54,(int *)0x16e36000,1);
goto LAB_8f60367c;
}
dprintf((byte *)s_sdc_frequency___u__is_not_suppor_8f65a7a8,param_2,pcVar2,400000000);
uVar3 = 0xa1;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0xa1);
iVar1 = 1;
}
dprintf((byte *)s_failed_to_set__s_ret____d_8f65a7d0,aiStack_54,iVar1,uVar3);
uVar4 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0xa7);
LAB_8f603654:
if (local_14 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),local_14);
}
return;
}
void FUN_8f6036c4(void)
{
int *piVar1;
int *piVar2;
undefined4 uVar3;
int *piVar4;
int *in_lr;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
uVar3 = 1;
piVar4 = DAT_8f69d118;
piVar2 = (int *)FUN_8f610ca8((int *)s_usb30_pipe_clk_8f65a65c,(int *)0x0,1);
uVar5 = CONCAT44(piVar2,piVar2);
if (piVar2 != (int *)0x0) {
dprintf((byte *)s_failed_to_set_usb30_pipe_clk__re_8f65a66c,piVar2,uVar3,piVar4);
uVar5 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0xb3);
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),piVar1);
}
void FUN_8f60374c(int *param_1)
{
int iVar1;
int *in_lr;
undefined8 uVar2;
int aiStack_94 [16];
int aiStack_54 [16];
int *local_14;
local_14 = DAT_8f69d118;
FUN_8f636618((byte *)aiStack_94,0x40,(byte *)s_uart_u_iface_clk_8f65a7ec,param_1);
FUN_8f636618((byte *)aiStack_54,0x40,(byte *)s_uart_u_core_clk_8f65a800,param_1);
iVar1 = FUN_8f610ca8(aiStack_94,(int *)0x0,1);
if (iVar1 != 0) {
dprintf((byte *)s_failed_to_set__s_ret____d_8f65a7d0,aiStack_94,iVar1,param_1);
param_1 = (int *)0xc5;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0xc5);
}
uVar2 = FUN_8f610ca8(aiStack_54,(int *)0x708000,1);
if ((int)uVar2 != 0) {
dprintf((byte *)s_failed_to_set__s_ret____d_8f65a7d0,aiStack_54,(int)uVar2,param_1);
uVar2 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0xcc);
}
if (local_14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),local_14);
}
// WARNING: Removing unreachable block (ram,0x8f6038e8)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f603860(int param_1)
{
if (param_1 == 0) {
_DAT_0184d078 = _DAT_0184d078 | 1;
do {
} while ((int)_DAT_0184d078 < 0);
}
else if (-1 < (int)_DAT_0184d078) {
_DAT_0184d078 = _DAT_0184d078 & 0xfff0fffe | 0x80000;
do {
} while (-1 < (int)_DAT_0184d078);
}
return;
}
void FUN_8f6038ec(void)
{
int *piVar1;
int *piVar2;
undefined4 uVar3;
int *piVar4;
int *in_lr;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
uVar3 = 1;
piVar4 = DAT_8f69d118;
piVar2 = (int *)FUN_8f610ca8((int *)s_mdp_ahb_clk_8f65a810,(int *)0x0,1);
if (piVar2 != (int *)0x0) {
dprintf((byte *)s_failed_to_set_mdp_ahb_clk_ret_____8f65a81c,piVar2,uVar3,piVar4);
piVar4 = (int *)0xee;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0xee);
}
uVar3 = 1;
piVar2 = (int *)FUN_8f610ca8((int *)s_mdss_mdp_clk_src_8f65a840,(int *)0x1312d000,1);
if (piVar2 != (int *)0x0) {
dprintf((byte *)s_failed_to_set_mdp_clk_src_ret_____8f65a854,piVar2,uVar3,piVar4);
piVar4 = (int *)0xf7;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0xf7);
}
uVar3 = 1;
piVar2 = (int *)FUN_8f610ca8((int *)s_mdss_vsync_clk_8f65a878,(int *)0x0,1);
if (piVar2 != (int *)0x0) {
dprintf((byte *)s_failed_to_set_mdss_vsync_clk_ret_8f65a888,piVar2,uVar3,piVar4);
piVar4 = (int *)0xfe;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0xfe);
}
uVar3 = 1;
piVar2 = (int *)FUN_8f610ca8((int *)s_mdss_mdp_clk_8f65a8b0,(int *)0x0,1);
uVar5 = CONCAT44(piVar2,piVar2);
if (piVar2 != (int *)0x0) {
dprintf((byte *)s_failed_to_set_mdp_clk_ret____d_8f65a8c0,piVar2,uVar3,piVar4);
uVar5 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x105);
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),piVar1);
}
void FUN_8f603a74(undefined4 param_1,int *param_2,undefined4 param_3)
{
int *piVar1;
int *extraout_r1;
int *extraout_r1_00;
int *extraout_r1_01;
undefined4 uVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
uVar3 = FUN_8f610bf4((int *)s_mdss_vsync_clk_8f65a878,param_2,param_3);
FUN_8f610a0c((int)uVar3,(int)((ulonglong)uVar3 >> 0x20));
uVar3 = FUN_8f610bf4((int *)s_mdss_mdp_clk_8f65a8b0,extraout_r1,param_3);
FUN_8f610a0c((int)uVar3,(int)((ulonglong)uVar3 >> 0x20));
uVar3 = FUN_8f610bf4((int *)s_mdss_mdp_clk_src_8f65a840,extraout_r1_00,param_3);
FUN_8f610a0c((int)uVar3,(int)((ulonglong)uVar3 >> 0x20));
uVar3 = FUN_8f610bf4((int *)s_mdp_ahb_clk_8f65a810,extraout_r1_01,param_3);
uVar2 = (undefined4)((ulonglong)uVar3 >> 0x20);
if (piVar1 == DAT_8f69d118) {
FUN_8f610a0c((int)uVar3,uVar2);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,uVar2,piVar1);
}
void FUN_8f603ae8(undefined4 param_1,int *param_2,undefined4 param_3)
{
int *piVar1;
undefined4 uVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
uVar3 = FUN_8f610bf4((int *)s_mdss_axi_clk_8f65a8e0,param_2,param_3);
uVar2 = (undefined4)((ulonglong)uVar3 >> 0x20);
if (piVar1 == DAT_8f69d118) {
FUN_8f610a0c((int)uVar3,uVar2);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,uVar2,piVar1);
}
void FUN_8f603b2c(void)
{
int *piVar1;
int *piVar2;
undefined4 uVar3;
int *piVar4;
int *in_lr;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
uVar3 = 1;
piVar4 = DAT_8f69d118;
piVar2 = (int *)FUN_8f610ca8((int *)s_mdss_axi_clk_8f65a8e0,(int *)0x0,1);
uVar5 = CONCAT44(piVar2,piVar2);
if (piVar2 != (int *)0x0) {
dprintf((byte *)s_failed_to_set_mdss_axi_clk_ret___8f65a8f0,piVar2,uVar3,piVar4);
uVar5 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x123);
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),piVar1);
}
void FUN_8f603bb4(int *param_1)
{
int iVar1;
int *piVar2;
int *in_lr;
undefined8 uVar3;
int aiStack_54 [16];
int *local_14;
local_14 = DAT_8f69d118;
piVar2 = param_1;
FUN_8f636618((byte *)aiStack_54,0x40,(byte *)s_ce_u_src_clk_8f65a918,param_1);
iVar1 = FUN_8f610ca8(aiStack_54,(int *)0x9896800,1);
if (iVar1 != 0) {
dprintf((byte *)s_failed_to_set_ce_u_src_clk_ret___8f65a928,param_1,iVar1,piVar2);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x141);
}
piVar2 = param_1;
FUN_8f636618((byte *)aiStack_54,0x40,(byte *)s_ce_u_core_clk_8f65a950,param_1);
iVar1 = FUN_8f610ca8(aiStack_54,(int *)0x0,1);
if (iVar1 != 0) {
dprintf((byte *)s_failed_to_set_ce_u_core_clk_ret___8f65a960,param_1,iVar1,piVar2);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x149);
}
piVar2 = param_1;
FUN_8f636618((byte *)aiStack_54,0x40,(byte *)s_ce_u_ahb_clk_8f65a988,param_1);
iVar1 = FUN_8f610ca8(aiStack_54,(int *)0x0,1);
if (iVar1 != 0) {
dprintf((byte *)s_failed_to_set_ce_u_ahb_clk_ret___8f65a998,param_1,iVar1,piVar2);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x151);
}
piVar2 = param_1;
FUN_8f636618((byte *)aiStack_54,0x40,(byte *)s_ce_u_axi_clk_8f65a9c0,param_1);
iVar1 = FUN_8f610ca8(aiStack_54,(int *)0x0,1);
if (iVar1 != 0) {
dprintf((byte *)s_failed_to_set_ce_u_axi_clk_ret___8f65a9d0,param_1,iVar1,piVar2);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x159);
}
uVar3 = FUN_8f6104fc(1);
if (local_14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),local_14);
}
void FUN_8f603da8(int *param_1)
{
int iVar1;
int iVar2;
int iVar3;
int *extraout_r1;
int *extraout_r1_00;
int *extraout_r1_01;
int *extraout_r1_02;
undefined4 extraout_r1_03;
undefined4 extraout_r1_04;
undefined4 extraout_r1_05;
char *pcVar4;
undefined8 uVar5;
int aiStack_5c [16];
int *local_1c;
pcVar4 = s_ce_u_src_clk_8f65a918;
local_1c = DAT_8f69d118;
FUN_8f636618((byte *)aiStack_5c,0x40,(byte *)s_ce_u_src_clk_8f65a918,param_1);
iVar1 = FUN_8f610bf4(aiStack_5c,extraout_r1,pcVar4);
pcVar4 = s_ce_u_ahb_clk_8f65a988;
FUN_8f636618((byte *)aiStack_5c,0x40,(byte *)s_ce_u_ahb_clk_8f65a988,param_1);
iVar2 = FUN_8f610bf4(aiStack_5c,extraout_r1_00,pcVar4);
pcVar4 = s_ce_u_axi_clk_8f65a9c0;
FUN_8f636618((byte *)aiStack_5c,0x40,(byte *)s_ce_u_axi_clk_8f65a9c0,param_1);
iVar3 = FUN_8f610bf4(aiStack_5c,extraout_r1_01,pcVar4);
pcVar4 = s_ce_u_core_clk_8f65a950;
FUN_8f636618((byte *)aiStack_5c,0x40,(byte *)s_ce_u_core_clk_8f65a950,param_1);
uVar5 = FUN_8f610bf4(aiStack_5c,extraout_r1_02,pcVar4);
FUN_8f610a0c(iVar2,(int)((ulonglong)uVar5 >> 0x20));
FUN_8f610a0c(iVar3,extraout_r1_03);
FUN_8f610a0c((int)uVar5,extraout_r1_04);
FUN_8f610a0c(iVar1,extraout_r1_05);
uVar5 = FUN_8f6104fc(1);
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),local_1c);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f603e98(int *param_1)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
FUN_8f603bb4(param_1);
FUN_8f603da8(param_1);
_DAT_01816000 = 1;
FUN_8f6104fc(2);
_DAT_01816000 = 0;
uVar2 = FUN_8f6104fc(2);
if (piVar1 == DAT_8f69d118) {
FUN_8f603bb4(param_1);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f604114(undefined4 param_1,uint param_2,char *param_3,undefined4 param_4,uint param_5)
{
int *piVar1;
int *piVar2;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 extraout_r1_03;
undefined4 extraout_r1_04;
undefined4 uVar3;
char *pcVar4;
undefined4 uVar5;
int *in_lr;
undefined8 uVar6;
piVar1 = DAT_8f69d118;
uVar6 = CONCAT44(DAT_8f69d118,param_1);
pcVar4 = param_3;
uVar5 = param_4;
if ((param_2 & 1) != 0) {
_DAT_0184d044 = 1;
_DAT_0184d048 = param_1;
FUN_8f6030d8((uint *)&DAT_0184d044,DAT_8f69d118,param_3);
_DAT_0184d094 = 1;
FUN_8f603174((int *)&DAT_0184d094,extraout_r1_02,pcVar4);
_DAT_0184d000 = 1;
_DAT_0184d004 = param_1;
_DAT_0184d008 = param_3;
_DAT_0184d00c = param_4;
_DAT_0184d010 = param_5 & 0xff;
FUN_8f6030d8((uint *)&DAT_0184d000,extraout_r1_03,pcVar4);
_DAT_0184d084 = 1;
FUN_8f603174((int *)&DAT_0184d084,extraout_r1_04,pcVar4);
pcVar4 = (char *)0x1;
piVar2 = (int *)FUN_8f610ca8((int *)s_mdss_esc0_clk_8f65ab24,(int *)0x0,1);
uVar6 = CONCAT44(piVar2,piVar2);
if (piVar2 != (int *)0x0) {
dprintf((byte *)s_failed_to_set_esc0_clk_ret____d_8f65ab34,piVar2,pcVar4,uVar5);
pcVar4 = s_platform_msm8953_acpuclock_c_8f65a5ac;
uVar5 = 0x20e;
uVar6 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x20e);
}
}
if ((param_2 & 2) != 0) {
_DAT_0184d0b0 = 1;
_DAT_0184d0b4 = param_1;
FUN_8f6030d8((uint *)&DAT_0184d0b0,(int)((ulonglong)uVar6 >> 0x20),pcVar4);
_DAT_0184d0a0 = 1;
FUN_8f603174((int *)&DAT_0184d0a0,extraout_r1,pcVar4);
_DAT_0184d0b8 = 1;
_DAT_0184d0bc = param_1;
_DAT_0184d0c0 = param_3;
_DAT_0184d0c4 = param_4;
_DAT_0184d0c8 = param_5 & 0xff;
FUN_8f6030d8((uint *)&DAT_0184d0b8,extraout_r1_00,pcVar4);
_DAT_0184d0a4 = 1;
FUN_8f603174((int *)&DAT_0184d0a4,extraout_r1_01,pcVar4);
uVar3 = 1;
piVar2 = (int *)FUN_8f610ca8((int *)s_mdss_esc1_clk_8f65ab58,(int *)0x0,1);
uVar6 = CONCAT44(piVar2,piVar2);
if (piVar2 != (int *)0x0) {
uVar6 = dprintf((byte *)s_failed_to_set_esc1_clk_ret____d_8f65ab68,piVar2,uVar3,uVar5);
if (piVar1 == DAT_8f69d118) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x227);
return;
}
goto LAB_8f6042f0;
}
}
if (piVar1 == DAT_8f69d118) {
return;
}
LAB_8f6042f0:
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar6,(int)((ulonglong)uVar6 >> 0x20),piVar1);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f6042f4(uint param_1,int *param_2,undefined4 param_3)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = CONCAT44(param_2,param_1);
if ((param_1 & 1) != 0) {
uVar2 = FUN_8f610bf4((int *)s_mdss_esc0_clk_8f65ab24,param_2,param_3);
uVar2 = FUN_8f610a0c((int)uVar2,(int)((ulonglong)uVar2 >> 0x20));
param_3 = 0;
_DAT_0184d094 = 0;
_DAT_0184d084 = 0;
}
if ((param_1 & 2) != 0) {
uVar2 = FUN_8f610bf4((int *)s_mdss_esc1_clk_8f65ab58,(int *)((ulonglong)uVar2 >> 0x20),param_3);
uVar2 = FUN_8f610a0c((int)uVar2,(int)((ulonglong)uVar2 >> 0x20));
_DAT_0184d0a0 = 0;
_DAT_0184d0a4 = 0;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f6043c8)
// WARNING: Removing unreachable block (ram,0x8f610bf0)
void FUN_8f604388(undefined4 param_1,undefined4 param_2)
{
DAT_8f688264 = &PTR_s_sdc1_iface_clk_8f67d7f8;
DAT_8f688268 = 0x1b;
return;
}
void FUN_8f6043cc(int param_1,int param_2,undefined4 param_3,uint param_4,byte param_5,int param_6)
{
uint *puVar1;
int iVar2;
iVar2 = DAT_8f69d118;
puVar1 = (uint *)((param_1 + 0x1000) * 0x1000);
*puVar1 = param_4 | (uint)param_5 << 6 | param_6 << 9 | param_2 << 2;
if (iVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(puVar1,iVar2,&DAT_8f69d118);
}
void FUN_8f604420(int param_1,undefined4 param_2)
{
int *piVar1;
piVar1 = DAT_8f69d118;
*(undefined4 *)(param_1 * 0x1000 + 0x1000004) = param_2;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1 * 0x1000 + 0x1000000,param_2,piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f6044a0)
void FUN_8f604460(int param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6044f0)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f6044a4(void)
{
_DAT_01005000 = 0x2c8;
_DAT_01004000 = 0x2c8;
return;
}
// WARNING: Removing unreachable block (ram,0x8f60459c)
void FUN_8f604528(byte param_1)
{
int iVar1;
uint uVar2;
undefined4 uVar3;
uint extraout_r1;
undefined4 local_14;
int *piVar4;
piVar4 = DAT_8f69d118;
iVar1 = DAT_8f67ddc0;
uVar2 = (uint)param_1;
DAT_8f67ddc0 = DAT_8f67ddc0 + 1;
DAT_8f67ddbc = DAT_8f67ddbc + 1;
if (DAT_8f67ddb8 <= DAT_8f67ddc0) {
DAT_8f67ddc0 = 0;
}
(&DAT_8f67ddc4)[iVar1] = param_1;
local_14 = (uint)piVar4 & 0xffffff | (uint)param_1 << 0x18;
piVar4 = DAT_8f69d118;
if (DAT_8f68826c == 0) {
uVar3 = 0xffffffff;
}
else {
FUN_8f611378(DAT_8f688274,(byte *)((int)&local_14 + 3),1);
uVar3 = 0;
uVar2 = extraout_r1;
}
if (piVar4 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,uVar2,piVar4);
}
void FUN_8f6045dc(int param_1,uint param_2,uint param_3)
{
int *piVar1;
uint uVar2;
int iVar3;
undefined4 *puVar4;
undefined4 *puVar5;
undefined8 uVar6;
piVar1 = DAT_8f69d118;
uVar6 = FUN_8f602fa4();
DAT_8f6844f0 = (int)uVar6;
if (((((param_3 & 3) == 0) && (uVar2 = param_2 & 3, uVar2 == 0)) &&
((param_1 - 7U & 0xffff) < 0x19c)) &&
((iVar3 = DAT_8f6844f0 + (param_1 + 0xd) * 0x10,
*(int *)(DAT_8f6844f0 + (param_1 + 0xd) * 0x10) != 0 &&
((param_3 + 7 & 0xfffffff8) <= *(uint *)(iVar3 + 8))))) {
puVar4 = (undefined4 *)(DAT_8f6844f0 + *(int *)(iVar3 + 4));
if (0 < (int)param_3) {
iVar3 = param_2 - (int)puVar4;
puVar5 = (undefined4 *)((param_3 - 1 & 0xfffffffc) + 4 + (int)puVar4);
do {
*(undefined4 *)(iVar3 + (int)puVar4) = *puVar4;
puVar4 = puVar4 + 1;
} while (puVar4 != puVar5);
}
}
else {
uVar2 = 1;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,(int)((ulonglong)uVar6 >> 0x20),piVar1);
}
return;
}
void FUN_8f6046bc(int param_1,undefined4 *param_2)
{
int *piVar1;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
undefined8 uVar6;
piVar1 = DAT_8f69d118;
uVar6 = FUN_8f602fa4();
iVar2 = (int)uVar6;
if ((param_1 - 7U & 0xffff) < 0x19c) {
iVar3 = *(int *)(iVar2 + (param_1 + 0xd) * 0x10);
iVar5 = iVar2 + (param_1 + 0xd) * 0x10;
if (iVar3 != 0) {
DAT_8f6844f0 = iVar2;
*param_2 = *(undefined4 *)(iVar5 + 8);
iVar4 = *(int *)(iVar5 + 0xc);
uVar6 = CONCAT44(iVar4,DAT_8f6844f0);
if (iVar4 == 0) {
iVar3 = iVar2 + *(int *)(iVar5 + 4);
}
else {
iVar3 = *(int *)(iVar5 + 4) + iVar4;
uVar6 = CONCAT44(iVar4,DAT_8f6844f0);
}
}
}
else {
iVar3 = 0;
}
DAT_8f6844f0 = (int)uVar6;
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar3,(int)((ulonglong)uVar6 >> 0x20),piVar1);
}
return;
}
void FUN_8f604754(int param_1,uint param_2,uint param_3,int param_4)
{
int *piVar1;
uint uVar2;
undefined4 *puVar3;
int iVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
uVar5 = FUN_8f602fa4();
DAT_8f6844f0 = (int)uVar5;
if (((((param_3 & 3) == 0) && (uVar2 = param_2 & 3, uVar2 == 0)) &&
((param_1 - 7U & 0xffff) < 0x19c)) && (*(int *)(DAT_8f6844f0 + (param_1 + 0xd) * 0x10) != 0))
{
puVar3 = (undefined4 *)
(param_4 + *(int *)(DAT_8f6844f0 + (param_1 + 0xd) * 0x10 + 4) + DAT_8f6844f0);
if (param_3 != 0) {
iVar4 = param_2 - (int)puVar3;
do {
param_3 = param_3 - 4;
*(undefined4 *)(iVar4 + (int)puVar3) = *puVar3;
puVar3 = puVar3 + 1;
} while (param_3 != 0);
}
}
else {
uVar2 = 1;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,(int)((ulonglong)uVar5 >> 0x20),piVar1);
}
return;
}
void FUN_8f604814(byte *param_1,int *param_2,undefined4 param_3)
{
int *piVar1;
int iVar2;
int *extraout_r1;
int *piVar3;
int *piVar4;
int *piVar5;
undefined8 uVar6;
piVar1 = DAT_8f69d118;
if (param_1 == (byte *)0x0) {
dprintf((byte *)s_ERROR__buf_is_NULL_8f65ae84,param_2,param_3,DAT_8f69d118);
piVar3 = extraout_r1;
}
else {
iVar2 = FUN_8f611838();
piVar5 = (int *)(&PTR_s_Unknown_8f67edc4)[iVar2];
uVar6 = FUN_8f636de0((byte *)piVar5);
piVar3 = (int *)((ulonglong)uVar6 >> 0x20);
iVar2 = (int)uVar6;
if ((int *)(iVar2 + 1) <= param_2) {
piVar3 = piVar1;
piVar4 = DAT_8f69d118;
if (piVar1 == DAT_8f69d118) {
FUN_8f636618(param_1,(int)(int *)(iVar2 + 1),(byte *)(s_SERIAL_NUMBER____s_8f65e864 + 0x10),
piVar5);
return;
}
goto LAB_8f6048b8;
}
}
iVar2 = 1;
piVar4 = piVar1;
if (piVar1 == DAT_8f69d118) {
return;
}
LAB_8f6048b8:
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,piVar3,piVar4);
}
void FUN_8f6048bc(undefined4 *param_1)
{
int *piVar1;
int *piVar2;
int iVar3;
int iVar4;
int *piVar5;
undefined4 *puVar6;
int iVar7;
int *piVar8;
undefined4 uVar9;
int *in_lr;
undefined8 uVar10;
piVar1 = DAT_8f69d118;
piVar2 = (int *)param_1[2];
DAT_8f6844f4 = *param_1;
puVar6 = &DAT_8f6844f4;
DAT_8f6844f8 = param_1[1];
DAT_8f684500 = param_1[3];
DAT_8f684504 = param_1[4];
uVar10 = CONCAT44(piVar2,DAT_8f684504);
DAT_8f6844fc = piVar2;
if (piVar2 == (int *)0x2) {
FUN_8f63685c(&DAT_8f6844f4,param_1,0x918);
return;
}
if (piVar2 == (int *)0x1) {
iVar7 = param_1[4];
if (iVar7 != 0) {
iVar3 = 0;
do {
iVar4 = iVar3 + 1;
uVar9 = param_1[iVar3 * 0x10 + 0xb];
(&DAT_8f68451c)[iVar3 * 0x12] = param_1[iVar3 * 0x10 + 10];
(&DAT_8f684520)[iVar3 * 0x12] = uVar9;
uVar9 = param_1[iVar3 * 0x10 + 0xd];
(&DAT_8f684524)[iVar3 * 0x12] = param_1[iVar3 * 0x10 + 0xc];
(&DAT_8f684528)[iVar3 * 0x12] = uVar9;
puVar6[0xe] = param_1[iVar3 * 0x10 + 0xe];
puVar6[0xf] = param_1[iVar3 * 0x10 + 0xf];
puVar6[0x10] = param_1[iVar3 * 0x10 + 0x10];
uVar9 = param_1[iVar3 * 0x10 + 0x11];
puVar6[0x11] = uVar9;
puVar6 = puVar6 + 0x12;
uVar10 = CONCAT44(puVar6,uVar9);
*puVar6 = param_1[iVar3 * 0x10 + 0x12];
iVar3 = iVar4;
} while (iVar4 != iVar7);
}
}
else if (piVar2 == (int *)0x0) {
piVar8 = (int *)param_1[4];
uVar10 = CONCAT44(piVar2,DAT_8f684504);
if (piVar8 != (int *)0x0) {
do {
piVar5 = (int *)((int)piVar2 + 1);
uVar9 = param_1[(int)piVar2 * 0xe + 9];
(&DAT_8f684520)[(int)piVar2 * 0x12] = 0;
(&DAT_8f68451c)[(int)piVar2 * 0x12] = uVar9;
uVar9 = param_1[(int)piVar2 * 0xe + 10];
(&DAT_8f684528)[(int)piVar2 * 0x12] = 0;
(&DAT_8f684524)[(int)piVar2 * 0x12] = uVar9;
uVar9 = param_1[(int)piVar2 * 0xe + 0xb];
puVar6[0xe] = uVar9;
puVar6[0xf] = param_1[(int)piVar2 * 0xe + 0xc];
puVar6[0x10] = param_1[(int)piVar2 * 0xe + 0xd];
puVar6[0x11] = param_1[(int)piVar2 * 0xe + 0xe];
uVar10 = CONCAT44(param_1[(int)piVar5 * 0xe + 1],uVar9);
puVar6 = puVar6 + 0x12;
*puVar6 = param_1[(int)piVar5 * 0xe + 1];
piVar2 = piVar5;
} while (piVar5 != piVar8);
}
}
else {
dprintf((byte *)s_ERROR__Unknown_smem_ram_ptable_v_8f65aefc,piVar2,piVar2,DAT_8f684500);
uVar10 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_smem_ptable__8f65af28,0xcf);
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar10,(int)((ulonglong)uVar10 >> 0x20),piVar1);
}
void FUN_8f604aa4(void)
{
uint uVar1;
undefined4 extraout_r1;
undefined4 uVar2;
uint uVar3;
undefined4 uVar4;
int *in_lr;
undefined8 uVar5;
longlong lVar6;
int *local_18;
int *local_14;
uVar2 = 4;
uVar4 = 8;
local_14 = DAT_8f69d118;
uVar5 = FUN_8f604754(0x192,(uint)&local_18,4,8);
uVar1 = (uint)((ulonglong)uVar5 >> 0x20);
uVar3 = (uint)uVar5;
if (uVar3 == 0) {
if (local_18 == (int *)0x2) {
uVar3 = 0x918;
}
else if (local_18 == (int *)0x1) {
uVar3 = 0x818;
}
else if (local_18 == (int *)0x0) {
uVar3 = 0x718;
}
else {
dprintf((byte *)s_ERROR__Wrong_smem_ram_ptable_ver_8f65afd8,local_18,uVar2,uVar4);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_smem_ptable__8f65af28,0x106);
}
lVar6 = FUN_8f6045dc(0x192,(uint)&DAT_8f684e0c,uVar3);
uVar1 = (uint)((ulonglong)lVar6 >> 0x20);
if (((int)lVar6 == 0) && (DAT_8f684e0c == -0x625a1f58)) {
if (DAT_8f684e10 == -0x50613b1e) {
FUN_8f6048bc(&DAT_8f684e0c);
lVar6 = CONCAT44(extraout_r1,1);
}
goto LAB_8f604b38;
}
}
lVar6 = (ulonglong)uVar1 << 0x20;
LAB_8f604b38:
if (local_14 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)lVar6,(int)((ulonglong)lVar6 >> 0x20),local_14);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f604c00)
void FUN_8f604bb4(undefined4 *param_1,int param_2)
{
FUN_8f63685c(param_1,(undefined4 *)(&DAT_8f68450c + param_2 * 0x48),0x48);
return;
}
// WARNING: Removing unreachable block (ram,0x8f604c40)
void FUN_8f604c04(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f604c80)
void FUN_8f604c44(void)
{
return;
}
void FUN_8f604c84(undefined4 param_1,undefined4 param_2,char *param_3)
{
int iVar1;
undefined4 *puVar2;
int iVar3;
int *in_lr;
undefined4 auStack_64 [4];
int *local_54;
int local_40;
int local_38;
int local_1c;
local_1c = DAT_8f69d118;
iVar1 = FUN_8f604aa4();
if (iVar1 == 0) {
param_3 = s_platform_msm_shared_smem_ptable__8f65af28;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_smem_ptable__8f65af28,0x132);
}
iVar1 = DAT_8f684504;
if (DAT_8f684504 != 0) {
puVar2 = (undefined4 *)&DAT_8f68450c;
iVar3 = 0;
do {
param_3 = (char *)0x48;
FUN_8f63685c(auStack_64,puVar2,0x48);
if ((local_38 == 1) && (local_40 == 0xe || local_40 == 5)) {
param_3 = (char *)local_54;
if (((uint)local_54 & 0xfffff) != 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_smem_ptable__8f65af28,0x140);
param_3 = (char *)local_54;
}
goto LAB_8f604d38;
}
iVar3 = iVar3 + 1;
puVar2 = puVar2 + 0x12;
} while (iVar3 != iVar1);
}
local_54 = (int *)0x0;
LAB_8f604d38:
if (local_1c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(local_54,local_1c,(int *)param_3);
}
return;
}
void FUN_8f604db0(void)
{
int iVar1;
uint uVar2;
int iVar3;
int iVar4;
undefined4 *puVar5;
int *in_lr;
bool bVar6;
undefined4 auStack_6c [6];
uint local_54;
int local_50;
int local_48;
int local_40;
int *local_24;
local_24 = DAT_8f69d118;
iVar1 = FUN_8f604aa4();
if (iVar1 == 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_smem_ptable__8f65af28,0x150);
}
iVar1 = DAT_8f684504;
if (DAT_8f684504 == 0) {
uVar2 = 0;
iVar3 = 0;
}
else {
puVar5 = (undefined4 *)&DAT_8f68450c;
uVar2 = 0;
iVar3 = 0;
iVar4 = 0;
do {
while ((FUN_8f63685c(auStack_6c,puVar5,0x48), local_40 == 1 && (local_48 == 0xe))) {
iVar4 = iVar4 + 1;
puVar5 = puVar5 + 0x12;
bVar6 = CARRY4(uVar2,local_54);
uVar2 = uVar2 + local_54;
iVar3 = iVar3 + local_50 + (uint)bVar6;
if (iVar4 == iVar1) goto LAB_8f604e58;
}
iVar4 = iVar4 + 1;
puVar5 = puVar5 + 0x12;
} while (iVar4 != iVar1);
}
LAB_8f604e58:
if (local_24 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,iVar3,local_24);
}
// WARNING: Removing unreachable block (ram,0x8f60520c)
// WARNING: Removing unreachable block (ram,0x8f605254)
// WARNING: Removing unreachable block (ram,0x8f60529c)
// WARNING: Removing unreachable block (ram,0x8f6052e4)
// WARNING: Removing unreachable block (ram,0x8f60532c)
// WARNING: Removing unreachable block (ram,0x8f605308)
// WARNING: Removing unreachable block (ram,0x8f6052c0)
// WARNING: Removing unreachable block (ram,0x8f605278)
// WARNING: Removing unreachable block (ram,0x8f605230)
// WARNING: Removing unreachable block (ram,0x8f6051e8)
// WARNING: Removing unreachable block (ram,0x8f605350)
void FUN_8f604eb4(int param_1,int param_2)
{
int *piVar1;
int iVar2;
char *pcVar3;
int iVar4;
byte *pbVar5;
undefined8 uVar6;
piVar1 = DAT_8f69d118;
iVar2 = param_2 + -6;
iVar4 = param_1;
switch(iVar2) {
case 0:
case 6:
pbVar5 = (&PTR_s_modem_8f67ee28)[DAT_8f687280];
uVar6 = FUN_8f636bdc((int)pbVar5,&DAT_8f65b024);
iVar2 = (int)((ulonglong)uVar6 >> 0x20);
iVar4 = (int)uVar6;
if (iVar4 != 0) {
uVar6 = FUN_8f636d18(param_1 + 0x48,pbVar5,0x48);
iVar2 = (int)((ulonglong)uVar6 >> 0x20);
iVar4 = (int)uVar6;
DAT_8f687280 = DAT_8f687280 + 1;
}
default:
switchD_8f604ed8_caseD_7:
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar4,iVar2,piVar1);
}
return;
case 0x3f:
iVar4 = 4;
pcVar3 = &DAT_8f65b03c;
break;
case 0x40:
iVar4 = 2;
pcVar3 = &DAT_8f65b048;
break;
case 0x41:
iVar4 = 3;
pcVar3 = &DAT_8f65b044;
break;
case 0x42:
iVar4 = 4;
pcVar3 = s_fastboot_8f66403c + 4;
break;
case 0x44:
iVar4 = 9;
pcVar3 = s_modem_st1_8f65b054;
break;
case 0x45:
iVar4 = 9;
pcVar3 = s_modem_st2_8f65b060;
break;
case 0x46:
iVar4 = 5;
pcVar3 = s_aboot_8f65b04c;
break;
case 0x47:
iVar4 = 4;
pcVar3 = &DAT_8f65b02c;
break;
case 0x48:
iVar4 = 4;
pcVar3 = &DAT_8f65b06c;
break;
case 0x4b:
iVar4 = 4;
pcVar3 = &DAT_8f65b034;
break;
case 0x57:
iVar4 = 3;
pcVar3 = &DAT_8f6598c4;
break;
case 0x5a:
iVar4 = 8;
pcVar3 = s_recovery_8f65b074;
break;
case 0x5d:
iVar4 = 4;
pcVar3 = &DAT_8f65b080;
break;
case 0x7d:
if (DAT_8f687274 != 5) {
uVar6 = FUN_8f636d18(param_1 + 0x48,(&PTR_s_system_8f67ee34)[DAT_8f687274],0x48);
iVar2 = (int)((ulonglong)uVar6 >> 0x20);
iVar4 = (int)uVar6;
DAT_8f687274 = DAT_8f687274 + 1;
}
goto switchD_8f604ed8_caseD_7;
}
FUN_8f63685c((undefined4 *)(param_1 + 0x48),(undefined4 *)pcVar3,iVar4);
return;
}
void FUN_8f605354(int *param_1,uint *param_2,uint *param_3,uint *param_4,uint *param_5)
{
byte bVar1;
byte bVar2;
byte bVar3;
undefined uVar4;
undefined uVar5;
undefined uVar6;
byte bVar7;
byte bVar8;
byte bVar9;
byte bVar10;
byte bVar11;
byte bVar12;
int iVar13;
int *piVar14;
int iVar15;
byte *pbVar16;
int *piVar17;
int *piVar18;
uint extraout_r1;
uint extraout_r1_00;
uint extraout_r1_01;
uint extraout_r1_02;
uint extraout_r1_03;
uint extraout_r1_04;
uint extraout_r1_05;
uint extraout_r1_06;
uint extraout_r1_07;
uint extraout_r1_08;
uint uVar19;
uint uVar20;
byte *pbVar21;
uint uVar22;
undefined4 uVar23;
uint uVar24;
uint uVar25;
int *piVar26;
bool bVar27;
undefined8 uVar28;
ulonglong uVar29;
piVar14 = DAT_8f69d118;
uVar28 = FUN_8f60d5cc(param_1,DAT_8f69d118);
uVar24 = (uint)uVar28;
uVar28 = FUN_8f60d578(uVar24,(int)((ulonglong)uVar28 >> 0x20));
uVar25 = (uint)((ulonglong)uVar28 >> 0x20);
if ((*param_1 != 0x20494645) || (param_1[1] != 0x54524150)) {
iVar15 = 1;
goto LAB_8f6053a8;
}
piVar17 = (int *)(uint)*(byte *)(param_1 + 3);
uVar19 = (uint)*(byte *)((int)param_1 + 0xf);
uVar22 = (uint)*(byte *)((int)param_1 + 0xe) << 0x10 | (uint)*(byte *)((int)param_1 + 0xd) << 8 |
(uint)piVar17 | uVar19 << 0x18;
*param_4 = uVar22;
if (uVar22 < 0x5c) {
dprintf((byte *)s_GPT_Header_size_is_too_small_8f65b088,piVar17,uVar19,uVar22);
iVar15 = 1;
uVar25 = extraout_r1_02;
goto LAB_8f6053a8;
}
if (uVar24 < uVar22) {
dprintf((byte *)s_GPT_Header_size_is_too_large_8f65b0a8,piVar17,uVar19,uVar22);
iVar15 = 1;
uVar25 = extraout_r1_01;
goto LAB_8f6053a8;
}
bVar1 = *(byte *)((int)param_1 + 0x12);
bVar2 = *(byte *)((int)param_1 + 0x11);
bVar3 = *(byte *)(param_1 + 4);
*(undefined *)(param_1 + 4) = 0;
uVar22 = (uint)*(byte *)((int)param_1 + 0x13);
*(undefined *)((int)param_1 + 0x11) = 0;
*(undefined *)((int)param_1 + 0x12) = 0;
*(undefined *)((int)param_1 + 0x13) = 0;
piVar26 = (int *)((uint)bVar1 << 0x10 | (uint)bVar2 << 8 | (uint)bVar3 | uVar22 << 0x18);
uVar19 = FUN_8f608394(0xffffffff,(byte *)param_1,*param_4);
piVar17 = (int *)~uVar19;
if (piVar17 != piVar26) {
dprintf((byte *)s_Header_crc_mismatch_crc_val____u_8f65b0c8,piVar17,piVar26,uVar22);
iVar15 = 1;
uVar25 = extraout_r1_00;
goto LAB_8f6053a8;
}
uVar19 = (uint)*(byte *)(param_1 + 10) |
(uint)*(byte *)((int)param_1 + 0x29) << 8 | (uint)*(byte *)((int)param_1 + 0x2a) << 0x10
| (uint)*(byte *)((int)param_1 + 0x2b) << 0x18;
piVar26 = (int *)param_1[0xb];
bVar1 = *(byte *)((int)param_1 + 0x1b);
uVar4 = *(undefined *)(param_1 + 7);
bVar2 = *(byte *)(param_1 + 6);
*(char *)(param_1 + 4) = (char)piVar17;
uVar5 = *(undefined *)((int)param_1 + 0x1e);
*(char *)((int)param_1 + 0x13) = (char)((uint)piVar17 >> 0x18);
bVar3 = *(byte *)((int)param_1 + 0x1f);
uVar6 = *(undefined *)((int)param_1 + 0x1d);
*(char *)((int)param_1 + 0x11) = (char)((uint)piVar17 >> 8);
*(char *)((int)param_1 + 0x12) = (char)((uint)piVar17 >> 0x10);
bVar7 = *(byte *)((int)param_1 + 0x19);
bVar8 = *(byte *)((int)param_1 + 0x1a);
*param_2 = uVar19;
param_2[1] = (uint)piVar26;
iVar15 = DAT_8f68727c;
*param_5 = (uint)*(byte *)((int)param_1 + 0x52) << 0x10 |
(uint)*(byte *)((int)param_1 + 0x51) << 8 | (uint)*(byte *)(param_1 + 0x14) |
(uint)*(byte *)((int)param_1 + 0x53) << 0x18;
uVar22 = (uint)*(byte *)((int)param_1 + 0x56) << 0x10 | (uint)*(byte *)((int)param_1 + 0x55) << 8
| (uint)*(byte *)(param_1 + 0x15) | (uint)*(byte *)((int)param_1 + 0x57) << 0x18;
*param_3 = uVar22;
bVar9 = *(byte *)(param_1 + 0xc);
bVar10 = *(byte *)((int)param_1 + 0x31);
bVar11 = *(byte *)((int)param_1 + 0x32);
bVar12 = *(byte *)((int)param_1 + 0x33);
piVar17 = (int *)param_1[0xd];
if (iVar15 == 0) {
uVar20 = (uint)bVar2 | (uint)bVar8 << 0x10 | (uint)bVar7 << 8 | (uint)bVar1 << 0x18;
iVar15 = CONCAT13(bVar3,CONCAT12(uVar5,CONCAT11(uVar6,uVar4)));
if (iVar15 != 0 || uVar20 != 1) {
dprintf((byte *)s_GPT_first_usable_LBA_mismatch_8f65b100,(int *)((uint)bVar3 << 0x18),uVar20,
iVar15);
iVar15 = 1;
uVar25 = extraout_r1_04;
goto LAB_8f6053a8;
}
}
uVar23 = 0;
uVar20 = uVar24;
uVar28 = FUN_8f658e24((uint)uVar28,uVar25,uVar24,0);
piVar18 = (int *)((ulonglong)uVar28 >> 0x20);
uVar25 = (uint)uVar28;
bVar27 = piVar18 <= piVar26;
if (piVar26 == piVar18) {
bVar27 = uVar25 <= uVar19;
}
if (bVar27 && (piVar26 != piVar18 || uVar19 != uVar25)) {
dprintf((byte *)s_Invalid_first_usable_lba_8f65b120,piVar18,uVar20,uVar23);
iVar15 = 1;
uVar25 = extraout_r1_05;
goto LAB_8f6053a8;
}
uVar19 = (uint)bVar9 | (uint)bVar11 << 0x10 | (uint)bVar10 << 8 | (uint)bVar12 << 0x18;
bVar27 = piVar18 <= piVar17;
if (piVar17 == piVar18) {
bVar27 = uVar25 <= uVar19;
}
if (bVar27 && (piVar17 != piVar18 || uVar19 != uVar25)) {
dprintf((byte *)s_Invalid_last_usable_lba_8f65b13c,piVar18,uVar19,piVar17);
iVar15 = 1;
uVar25 = extraout_r1_06;
goto LAB_8f6053a8;
}
if (uVar22 != 0x80) {
dprintf((byte *)s_Invalid_parition_entry_size_8f65b158,piVar18,uVar19,piVar17);
iVar15 = 1;
uVar25 = extraout_r1_03;
goto LAB_8f6053a8;
}
uVar25 = *param_5;
if (0x80 < uVar25) {
dprintf((byte *)s_Invalid_maximum_partition_count_8f65b178,piVar18,uVar19,piVar17);
iVar15 = 1;
uVar25 = extraout_r1_07;
goto LAB_8f6053a8;
}
uVar22 = FUN_8f6582ac(uVar25,uVar24 >> 7);
uVar29 = FUN_8f658354(uVar25,uVar24 >> 7);
if ((int)(uVar29 >> 0x20) != 0) {
uVar22 = uVar22 + 1;
}
uVar22 = uVar24 * uVar22;
uVar28 = FUN_8f6366a8((int *)0x40,uVar22 + 0x3f & 0xffffffc0);
iVar15 = DAT_8f687278;
pbVar16 = (byte *)uVar28;
if (pbVar16 == (byte *)0x0) {
dprintf((byte *)s_Failed_to_Allocate_memory_to_rea_8f65b19c,(int *)((ulonglong)uVar28 >> 0x20),
uVar19,piVar17);
iVar15 = 1;
uVar25 = extraout_r1_08;
goto LAB_8f6053a8;
}
if (DAT_8f687278 == 0) {
uVar25 = (uint)*(byte *)(param_1 + 0x12) |
(uint)*(byte *)((int)param_1 + 0x4a) << 0x10 |
(uint)*(byte *)((int)param_1 + 0x49) << 8 |
(uint)*(byte *)((int)param_1 + 0x4b) << 0x18;
iVar13 = param_1[0x13];
if (iVar13 == 0 && uVar25 == 2) {
pbVar21 = pbVar16;
uVar28 = FUN_8f60d85c(uVar24 * 2,(uint)CARRY4(uVar24,uVar24),(uint)pbVar16,uVar22);
iVar15 = (int)uVar28;
if (iVar15 == 0) {
uVar24 = (uint)*(byte *)((int)param_1 + 0x5a) << 0x10 |
(uint)*(byte *)((int)param_1 + 0x59) << 8 | (uint)*(byte *)(param_1 + 0x16);
piVar17 = (int *)(uVar24 | (uint)*(byte *)((int)param_1 + 0x5b) << 0x18);
uVar25 = FUN_8f608394(0xffffffff,pbVar16,*param_3 * *param_5);
if ((int *)~uVar25 == piVar17) goto LAB_8f6058e4;
iVar15 = 1;
dprintf((byte *)s_Partition_entires_crc_mismatch_c_8f65b214,(int *)~uVar25,piVar17,uVar24);
}
else {
dprintf((byte *)s_GPT__Could_not_read_primary_gpt_f_8f65b1e8,
(int *)((ulonglong)uVar28 >> 0x20),pbVar21,uVar22);
}
}
else {
dprintf((byte *)s_Starting_LBA_mismatch_8f65b1d0,(int *)(uint)*(uint3 *)(param_1 + 0x13),
uVar25,iVar13);
}
}
else {
LAB_8f6058e4:
iVar15 = 0;
}
FUN_8f636758((int)pbVar16);
uVar25 = extraout_r1;
LAB_8f6053a8:
if (piVar14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar15,uVar25,piVar14);
}
void FUN_8f605b1c(int param_1,int *param_2)
{
int *piVar1;
undefined4 uVar2;
int *extraout_r1;
int *piVar3;
piVar1 = DAT_8f69d118;
piVar3 = DAT_8f69d118;
if ((*(byte *)(param_1 + 0x1fe) == 0x55) &&
(piVar3 = (int *)(uint)*(byte *)(param_1 + 0x1ff), piVar3 == (int *)0xaa)) {
uVar2 = 0;
}
else {
dprintf((byte *)s_MBR_signature_does_not_match__8f65b288,param_2,
(uint)*(byte *)(param_1 + 0x1fe),piVar3);
uVar2 = 1;
param_2 = extraout_r1;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,param_2,piVar1);
}
return;
}
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f605b80(uint param_1,undefined4 param_2,undefined4 param_3)
{
byte bVar1;
byte bVar2;
byte bVar3;
byte bVar4;
byte bVar5;
int *piVar6;
uint uVar7;
int iVar8;
undefined4 extraout_r1;
undefined4 uVar9;
undefined4 extraout_r1_00;
int *piVar10;
uint uVar11;
int iVar12;
uint uVar13;
uint uVar14;
undefined8 uVar15;
piVar6 = DAT_8f69d118;
piVar10 = DAT_8f69d118;
uVar15 = FUN_8f6366a8((int *)0x40,param_1 + 0x3f & 0xffffffc0);
uVar7 = (uint)uVar15;
if (uVar7 == 0) {
dprintf((byte *)s_Error_allocating_memory_while_re_8f65b2a8,(int *)((ulonglong)uVar15 >> 0x20),
param_3,piVar10);
iVar12 = -1;
uVar9 = extraout_r1_00;
}
else {
uVar14 = uVar7;
uVar13 = param_1;
uVar15 = FUN_8f60d85c(0,0,uVar7,param_1);
piVar10 = (int *)((ulonglong)uVar15 >> 0x20);
iVar12 = (int)uVar15;
if (iVar12 == 0) {
if (param_1 < 0x1ff) {
iVar12 = 1;
}
else {
iVar12 = FUN_8f605b1c(uVar7,piVar10);
uVar14 = uVar7;
if (iVar12 == 0) {
do {
uVar13 = (uint)*(byte *)(uVar14 + 0x1c2);
if (uVar13 == 0xee) {
iVar12 = 0;
DAT_8f687270 = 1;
goto LAB_8f605be0;
}
iVar8 = DAT_8f68726c * 0x98 + DAT_8f69d120;
*(uint *)(iVar8 + 0x10) = uVar13;
*(uint *)(iVar8 + 0x40) = (uint)*(byte *)(uVar14 + 0x1be);
*(undefined4 *)(iVar8 + 0x44) = 0;
bVar1 = *(byte *)(uVar14 + 0x1c8);
bVar2 = *(byte *)(uVar14 + 0x1c7);
bVar3 = *(byte *)(uVar14 + 0x1c6);
bVar4 = *(byte *)(uVar14 + 0x1c9);
*(undefined4 *)(iVar8 + 0x2c) = 0;
uVar11 = (uint)bVar1 << 0x10 | (uint)bVar2 << 8 | (uint)bVar3 | (uint)bVar4 << 0x18;
*(uint *)(iVar8 + 0x28) = uVar11;
bVar1 = *(byte *)(uVar14 + 0x1cc);
bVar2 = *(byte *)(uVar14 + 0x1cb);
bVar3 = *(byte *)(uVar14 + 0x1ca);
bVar4 = *(byte *)(uVar14 + 0x1cd);
*(undefined4 *)(iVar8 + 0x3c) = 0;
*(uint *)(iVar8 + 0x38) =
(uint)bVar1 << 0x10 | (uint)bVar2 << 8 | (uint)bVar3 | (uint)bVar4 << 0x18;
FUN_8f604eb4(iVar8,uVar13);
DAT_8f68726c = DAT_8f68726c + 1;
if (DAT_8f68726c == 0x80) goto LAB_8f605d2c;
iVar12 = iVar12 + 1;
uVar14 = uVar14 + 0x10;
} while (iVar12 != 4);
if (uVar13 == 5) {
uVar15 = FUN_8f60d85c(param_1 * uVar11,0,uVar7,param_1);
iVar8 = (int)uVar15;
uVar14 = uVar11;
while( true ) {
iVar12 = (int)uVar15;
if (iVar8 != 0) break;
iVar12 = FUN_8f605b1c(uVar7,(int *)((ulonglong)uVar15 >> 0x20));
if (iVar12 != 0) goto LAB_8f605d2c;
iVar12 = DAT_8f68726c * 0x98 + DAT_8f69d120;
*(uint *)(iVar12 + 0x40) = (uint)*(byte *)(uVar7 + 0x1be);
*(undefined4 *)(iVar12 + 0x44) = 0;
bVar1 = *(byte *)(uVar7 + 0x1c2);
*(uint *)(iVar12 + 0x10) = (uint)bVar1;
bVar2 = *(byte *)(uVar7 + 0x1c8);
bVar3 = *(byte *)(uVar7 + 0x1c7);
bVar4 = *(byte *)(uVar7 + 0x1c6);
bVar5 = *(byte *)(uVar7 + 0x1c9);
*(undefined4 *)(iVar12 + 0x2c) = 0;
*(uint *)(iVar12 + 0x28) =
uVar14 + ((uint)bVar2 << 0x10 | (uint)bVar3 << 8 | (uint)bVar4 |
(uint)bVar5 << 0x18);
bVar2 = *(byte *)(uVar7 + 0x1cc);
bVar3 = *(byte *)(uVar7 + 0x1cb);
bVar4 = *(byte *)(uVar7 + 0x1ca);
bVar5 = *(byte *)(uVar7 + 0x1cd);
*(undefined4 *)(iVar12 + 0x3c) = 0;
*(uint *)(iVar12 + 0x38) =
(uint)bVar2 << 0x10 | (uint)bVar3 << 8 | (uint)bVar4 | (uint)bVar5 << 0x18;
FUN_8f604eb4(iVar12,(uint)bVar1);
DAT_8f68726c = DAT_8f68726c + 1;
if ((DAT_8f68726c == 0x80) ||
(uVar14 = (uint)*(byte *)(uVar7 + 0x1d8) << 0x10 |
(uint)*(byte *)(uVar7 + 0x1d7) << 8 | (uint)*(byte *)(uVar7 + 0x1d6) |
(uint)*(byte *)(uVar7 + 0x1d9) << 0x18, uVar14 == 0)) goto LAB_8f605d2c;
uVar14 = uVar11 + uVar14;
uVar15 = FUN_8f60d85c(param_1 * uVar14,0,uVar7,param_1);
iVar8 = (int)uVar15;
}
}
else {
LAB_8f605d2c:
iVar12 = 0;
}
}
}
}
else {
dprintf((byte *)s_Could_not_read_partition_from_mm_8f65b2e0,piVar10,uVar14,uVar13);
}
LAB_8f605be0:
FUN_8f636758(uVar7);
uVar9 = extraout_r1;
}
if (piVar6 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar12,uVar9,piVar6);
}
return;
}
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f605ea8(undefined4 param_1,undefined4 param_2,char *param_3)
{
undefined *puVar1;
byte bVar2;
byte bVar3;
byte bVar4;
byte bVar5;
longlong lVar6;
uint uVar7;
uint uVar8;
int iVar9;
undefined uVar10;
uint *puVar11;
undefined4 uVar12;
uint *puVar13;
int iVar14;
uint uVar15;
int *piVar16;
int *extraout_r1;
int *extraout_r1_00;
int *extraout_r1_01;
int *extraout_r1_02;
undefined4 extraout_r1_03;
int *extraout_r1_04;
undefined *puVar17;
uint *puVar18;
int iVar19;
uint uVar20;
uint uVar21;
uint uVar22;
uint uVar23;
int *in_lr;
int iVar24;
ulonglong uVar25;
undefined8 uVar26;
undefined8 uVar27;
longlong lVar28;
ulonglong uVar29;
uint local_ac;
uint uStack_8c;
uint local_88;
uint local_84;
uint auStack_80 [3];
uint local_74 [18];
int *local_2c;
local_2c = DAT_8f69d118;
uVar25 = FUN_8f60d5cc(param_1,param_2);
uVar29 = uVar25 & 0xffffffff00000000 | (ulonglong)DAT_8f69d120;
puVar11 = (uint *)uVar25;
uVar20 = DAT_8f69d120;
if (DAT_8f69d120 == 0) {
uVar29 = FUN_8f6366fc(0x80,0x98);
uVar20 = DAT_8f69d120;
if ((uint)uVar29 == 0) {
param_3 = s_platform_msm_shared_partition_pa_8f65b304;
uVar20 = 99;
DAT_8f69d120 = (uint)uVar29;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_partition_pa_8f65b304,99);
uVar29 = CONCAT44(extraout_r1_03,DAT_8f69d120);
}
}
DAT_8f69d120 = (uint)uVar29;
uVar26 = FUN_8f605b80((uint)puVar11,(int)(uVar29 >> 0x20),param_3);
piVar16 = (int *)((ulonglong)uVar26 >> 0x20);
if ((uint)uVar26 != 0) {
dprintf((byte *)s_MMC_Boot__MBR_read_failed__8f65b340,piVar16,param_3,uVar20);
uVar12 = 1;
piVar16 = extraout_r1_01;
goto LAB_8f605f10;
}
if (DAT_8f687270 == (uint *)0x0) {
LAB_8f605f0c:
uVar12 = 0;
}
else {
puVar18 = DAT_8f687270;
local_88 = (uint)uVar26;
uVar26 = FUN_8f60d578(0,piVar16);
uVar27 = FUN_8f6366a8((int *)0x40,(int)puVar11 + 0x3fU & 0xffffffc0);
puVar13 = (uint *)uVar27;
if (puVar13 == (uint *)0x0) {
dprintf((byte *)s_Failed_to_Allocate_memory_to_rea_8f65b19c,(int *)((ulonglong)uVar27 >> 0x20)
,param_3,puVar18);
piVar16 = extraout_r1_04;
}
else {
param_3 = (char *)puVar13;
puVar18 = puVar11;
uVar27 = FUN_8f60d85c((uint)puVar11,0,(uint)puVar13,(uint)puVar11);
if ((int)uVar27 == 0) {
iVar14 = FUN_8f605354((int *)puVar13,auStack_80,&local_84,&uStack_8c,&local_88);
iVar19 = DAT_8f68727c;
if (iVar14 == 0) {
LAB_8f606068:
DAT_8f68727c = iVar19;
bVar2 = *(byte *)((int)puVar13 + 0x49);
bVar3 = *(byte *)((int)puVar13 + 0x4a);
bVar4 = *(byte *)((int)puVar13 + 0x4b);
bVar5 = *(byte *)(puVar13 + 0x12);
uVar8 = puVar13[0x13];
uVar20 = (uint)puVar11 >> 7;
uVar7 = -uVar20;
uVar15 = FUN_8f6582ac(uVar7 & (local_88 - 1) + uVar20,uVar20);
if (uVar15 != 0) {
lVar28 = (uVar25 & 0xffffffff) *
(ulonglong)
((uint)bVar5 | (uint)bVar2 << 8 | (uint)bVar3 << 0x10 | (uint)bVar4 << 0x18);
local_ac = 0;
uVar15 = (uint)lVar28;
do {
if (0x7f < DAT_8f68726c) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_partition_pa_8f65b304,0x142);
}
param_3 = (char *)puVar13;
puVar18 = puVar11;
uVar26 = FUN_8f60d85c(uVar15 + (int)puVar11 * local_ac,
(int)puVar11 * uVar8 + (int)((ulonglong)lVar28 >> 0x20) +
(uint)CARRY4(uVar15,(int)puVar11 * local_ac),(uint)puVar13,
(uint)puVar11);
uVar23 = (uint)uVar26;
if (uVar23 != 0) {
dprintf((byte *)s_GPT__mmc_read_card_failed_readin_8f65b3ec,
(int *)((ulonglong)uVar26 >> 0x20),param_3,puVar18);
goto LAB_8f605ff4;
}
if (uVar20 == 0) {
uVar23 = uVar7 & local_88 - 1;
}
else {
uVar21 = DAT_8f69d120;
do {
FUN_8f63685c((undefined4 *)(DAT_8f68726c * 0x98 + uVar21),
(uint *)(local_84 * uVar23 + (int)puVar13),0x10);
if (*(short *)(DAT_8f69d120 + DAT_8f68726c * 0x98) == 0) {
uVar23 = uVar7 & (local_88 - 1) + uVar20;
local_ac = uVar23;
goto LAB_8f606634;
}
FUN_8f63685c((undefined4 *)(DAT_8f69d120 + DAT_8f68726c * 0x98 + 0x14),
(undefined4 *)((int)puVar13 + local_84 * uVar23 + 0x10),0x10);
iVar19 = local_84 * uVar23;
iVar24 = DAT_8f68726c * 0x98 + DAT_8f69d120;
uVar22 = (uint)*(byte *)((int)puVar13 + iVar19 + 0x21) << 8 |
(uint)*(byte *)((int)puVar13 + iVar19 + 0x22) << 0x10 |
(uint)*(byte *)((int)puVar13 + iVar19 + 0x20) |
(uint)*(byte *)((int)puVar13 + iVar19 + 0x23) << 0x18;
iVar14 = *(int *)((int)puVar13 + iVar19 + 0x24);
*(uint *)(iVar24 + 0x28) = uVar22;
*(int *)(iVar24 + 0x2c) = iVar14;
uVar21 = (uint)*(byte *)((int)puVar13 + iVar19 + 0x29) << 8 |
(uint)*(byte *)((int)puVar13 + iVar19 + 0x2a) << 0x10 |
(uint)*(byte *)((int)puVar13 + iVar19 + 0x28) |
(uint)*(byte *)((int)puVar13 + iVar19 + 0x2b) << 0x18;
iVar9 = *(int *)((int)puVar13 + iVar19 + 0x2c);
*(uint *)(iVar24 + 0x30) = uVar21;
*(int *)(iVar24 + 0x34) = iVar9;
*(uint *)(iVar24 + 0x38) = (uVar21 + 1) - uVar22;
*(uint *)(iVar24 + 0x3c) =
(iVar9 + (uint)(0xfffffffe < uVar21)) -
(iVar14 + (uint)(uVar21 + 1 < uVar22));
uVar12 = *(undefined4 *)((int)puVar13 + iVar19 + 0x34);
*(uint *)(iVar24 + 0x40) =
(uint)*(byte *)((int)puVar13 + iVar19 + 0x33) << 0x18 |
(uint)*(byte *)((int)puVar13 + iVar19 + 0x31) << 8 |
(uint)*(byte *)((int)puVar13 + iVar19 + 0x32) << 0x10 |
(uint)*(byte *)((int)puVar13 + iVar19 + 0x30);
*(undefined4 *)(iVar24 + 0x44) = uVar12;
FUN_8f636968(local_74,0,0x48);
FUN_8f63685c(local_74,(undefined4 *)((int)puVar13 + local_84 * uVar23 + 0x38),0x48
);
iVar14 = DAT_8f68726c * 0x98 + DAT_8f69d120;
uVar10 = FUN_8f60db64();
uVar21 = DAT_8f69d120;
iVar19 = 0;
puVar17 = (undefined *)(DAT_8f68726c * 0x98 + DAT_8f69d120 + 0x47);
*(undefined *)(iVar14 + 0x90) = uVar10;
do {
puVar1 = (undefined *)((int)local_74 + iVar19);
iVar19 = iVar19 + 2;
puVar17 = puVar17 + 1;
*puVar17 = *puVar1;
} while (iVar19 != 0x48);
uVar23 = uVar23 + 1;
DAT_8f68726c = DAT_8f68726c + 1;
} while (uVar23 != uVar20);
uVar23 = (local_88 - 1) + uVar20 & uVar7;
}
LAB_8f606634:
uVar23 = FUN_8f6582ac(uVar23,uVar20);
local_ac = local_ac + 1;
} while (local_ac < uVar23);
}
FUN_8f636758((int)puVar13);
piVar16 = extraout_r1_02;
goto LAB_8f605f0c;
}
lVar28 = FUN_8f658e24((uint)uVar26,(uint)((ulonglong)uVar26 >> 0x20),(uint)puVar11,0);
if (lVar28 == 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_partition_pa_8f65b304,0x128);
}
lVar6 = (uVar25 & 0xffffffff) * (ulonglong)((int)lVar28 - 1);
param_3 = (char *)puVar13;
puVar18 = puVar11;
uVar26 = FUN_8f60d85c((uint)lVar6,
(int)puVar11 *
((int)((ulonglong)lVar28 >> 0x20) - (uint)((int)lVar28 == 0)) +
(int)((ulonglong)lVar6 >> 0x20),(uint)puVar13,(uint)puVar11);
if ((int)uVar26 == 0) {
param_3 = (char *)&local_84;
puVar18 = &uStack_8c;
DAT_8f68727c = 1;
uVar26 = FUN_8f605354((int *)puVar13,auStack_80,(uint *)param_3,puVar18,&local_88);
iVar19 = (int)uVar26;
if ((int)uVar26 == 0) goto LAB_8f606068;
dprintf((byte *)s_GPT__Primary_and_backup_signatur_8f65b39c,
(int *)((ulonglong)uVar26 >> 0x20),param_3,puVar18);
}
else {
dprintf((byte *)s_GPT__Could_not_read_backup_gpt_f_8f65b370,
(int *)((ulonglong)uVar26 >> 0x20),param_3,puVar18);
}
}
else {
dprintf((byte *)s_GPT__Could_not_read_primary_gpt_f_8f65b1e8,
(int *)((ulonglong)uVar27 >> 0x20),param_3,puVar18);
}
LAB_8f605ff4:
FUN_8f636758((int)puVar13);
piVar16 = extraout_r1;
}
dprintf((byte *)s_MMC_Boot__GPT_read_failed__8f65b424,piVar16,param_3,puVar18);
uVar12 = 1;
piVar16 = extraout_r1_00;
}
LAB_8f605f10:
if (local_2c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar12,piVar16,local_2c);
}
void FUN_8f606760(byte *param_1)
{
int iVar1;
int *piVar2;
undefined4 uVar3;
byte *pbVar4;
int iVar5;
undefined8 uVar6;
undefined8 uVar7;
piVar2 = DAT_8f69d118;
uVar6 = FUN_8f636de0(param_1);
iVar1 = DAT_8f68726c;
uVar3 = (undefined4)((ulonglong)uVar6 >> 0x20);
if (DAT_8f68726c - 1U < 0x7f) {
iVar5 = 0;
pbVar4 = (byte *)(DAT_8f69d120 + 0x48);
do {
uVar7 = FUN_8f636de0(pbVar4);
uVar3 = (undefined4)((ulonglong)uVar7 >> 0x20);
if ((int)uVar7 == (int)uVar6) {
uVar7 = FUN_8f636a7c((char *)param_1,(char *)pbVar4,(int)uVar6);
uVar3 = (undefined4)((ulonglong)uVar7 >> 0x20);
if ((int)uVar7 == 0) goto LAB_8f6067f8;
}
iVar5 = iVar5 + 1;
pbVar4 = pbVar4 + 0x98;
} while (iVar5 != iVar1);
}
iVar5 = -1;
LAB_8f6067f8:
if (piVar2 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar5,uVar3,piVar2);
}
return;
}
void FUN_8f606814(int param_1,undefined4 param_2)
{
longlong lVar1;
int *piVar2;
uint uVar3;
undefined4 uVar4;
int iVar5;
piVar2 = DAT_8f69d118;
uVar3 = FUN_8f60d5cc(param_1,param_2);
if (param_1 == -1) {
uVar4 = 0;
iVar5 = 0;
}
else {
iVar5 = param_1 * 0x98 + DAT_8f69d120;
lVar1 = (ulonglong)uVar3 * (ulonglong)*(uint *)(iVar5 + 0x38);
uVar4 = (undefined4)lVar1;
iVar5 = uVar3 * *(int *)(iVar5 + 0x3c) + (int)((ulonglong)lVar1 >> 0x20);
}
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar4,iVar5,piVar2);
}
void FUN_8f60688c(int param_1,undefined4 param_2)
{
longlong lVar1;
int *piVar2;
uint uVar3;
undefined4 uVar4;
int iVar5;
piVar2 = DAT_8f69d118;
uVar3 = FUN_8f60d5cc(param_1,param_2);
if (param_1 == -1) {
uVar4 = 0;
iVar5 = 0;
}
else {
iVar5 = param_1 * 0x98 + DAT_8f69d120;
lVar1 = (ulonglong)uVar3 * (ulonglong)*(uint *)(iVar5 + 0x28);
uVar4 = (undefined4)lVar1;
iVar5 = uVar3 * *(int *)(iVar5 + 0x2c) + (int)((ulonglong)lVar1 >> 0x20);
}
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar4,iVar5,piVar2);
}
// WARNING: Removing unreachable block (ram,0x8f60694c)
void FUN_8f606904(int param_1)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f606980)
void FUN_8f606950(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6069c8)
void FUN_8f606984(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f606a18)
void FUN_8f6069cc(int param_1)
{
return;
}
void FUN_8f606a1c(uint param_1,int param_2)
{
int *piVar1;
uint uVar2;
uint *puVar3;
undefined4 uVar4;
piVar1 = DAT_8f69d118;
puVar3 = (uint *)((*(byte *)(param_1 + 0x10) + 0x1e36c70) * 4);
uVar2 = *puVar3;
if (param_2 != 0) {
if (*(char *)(param_1 + 0x11) == '\0') {
uVar2 = uVar2 | 200;
}
else {
uVar2 = uVar2 | 0xc80000;
}
if (*(byte *)(param_1 + 0x10) != 0) {
if (DAT_8f687320 == 0) {
uVar4 = 0x20400000;
}
else {
uVar4 = 0x22000000;
}
**(undefined4 **)(param_1 + 8) = uVar4;
param_1 = (uint)*(byte *)(param_1 + 0x10);
puVar3 = (uint *)((param_1 + 0x1e36c70) * 4);
}
}
*puVar3 = uVar2;
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(param_1,uVar2,piVar1);
}
return;
}
void FUN_8f606ac0(uint param_1)
{
int *piVar1;
int iVar2;
undefined4 uVar3;
int *piVar4;
int iVar5;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
uint uVar6;
uint uVar7;
int iVar8;
int iVar9;
undefined8 uVar10;
piVar1 = DAT_8f69d118;
FUN_8f625b4c(param_1,0x14);
iVar2 = *(int *)(param_1 + 0xc);
uVar10 = CONCAT44(extraout_r1,iVar2);
if (iVar2 != 0) {
iVar2 = FUN_8f602f38(iVar2,extraout_r1);
uVar3 = FUN_8f625b4c(*(uint *)(param_1 + 0xc),0x14);
uVar10 = CONCAT44(extraout_r1_00,uVar3);
if (iVar2 != 0) {
piVar4 = (int *)FUN_8f602f38(*(undefined4 *)(iVar2 + 0x10),extraout_r1_00);
iVar8 = 0;
iVar9 = *(int *)(iVar2 + 4);
*(undefined4 *)(param_1 + 0xc) = 0;
while( true ) {
do {
iVar5 = FUN_8f625b4c((uint)piVar4,0x20);
} while ((piVar4[1] & 0x80U) != 0);
uVar7 = piVar4[1];
uVar6 = uVar7 & 0xff;
if (uVar6 != 0) {
uVar6 = 0xffffffff;
goto LAB_8f606b7c;
}
iVar5 = *piVar4;
if (iVar5 == 1) break;
uVar6 = 0x4000 - (uVar7 >> 0x10) & 0x7fff;
iVar8 = iVar8 + uVar6;
iVar9 = iVar9 - uVar6;
piVar4 = (int *)FUN_8f602f38(iVar5,extraout_r1_01);
}
iVar8 = iVar8 + (iVar9 - (uVar7 >> 0x10) & 0x7fff);
LAB_8f606b7c:
uVar10 = CONCAT44(extraout_r1_01,iVar5);
if (*(code **)(iVar2 + 8) != (code *)0x0) {
uVar10 = (**(code **)(iVar2 + 8))(iVar2,iVar8,uVar6);
}
}
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar10,(int)((ulonglong)uVar10 >> 0x20),piVar1);
}
void FUN_8f606c4c(uint param_1,int *param_2,int param_3)
{
int *piVar1;
undefined4 *puVar2;
int *piVar3;
int *extraout_r1;
int *in_lr;
bool bVar4;
bool bVar5;
piVar1 = DAT_8f69d118;
if (param_3 - 2U < 0xfe) {
bVar5 = 0xfe < param_1;
bVar4 = param_1 == 0xff;
if (param_1 < 0x100) {
bVar5 = (int *)0xfe < param_2;
bVar4 = param_2 == (int *)0xff;
}
piVar3 = param_2;
if (!bVar5 || bVar4) goto LAB_8f606c8c;
}
dprintf((byte *)s_Invalid_parameters_for_descripto_8f65b6c0,param_2,param_3 - 2U,DAT_8f69d118);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_hsusb_c_8f65b6f0,0x43);
piVar3 = extraout_r1;
LAB_8f606c8c:
puVar2 = (undefined4 *)FUN_8f63666c(param_3 + 8,piVar3);
if (puVar2 == (undefined4 *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_hsusb_c_8f65b6f0,0x47);
}
piVar3 = DAT_8f69d118;
*(ushort *)(puVar2 + 1) = (ushort)param_2 | (ushort)(param_1 << 8);
*(short *)((int)puVar2 + 6) = (short)param_3;
*(char *)(puVar2 + 2) = (char)param_3;
*(char *)((int)puVar2 + 9) = (char)param_1;
*puVar2 = 0;
if (piVar1 == piVar3) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(puVar2,piVar1,piVar3);
}
void FUN_8f606d3c(byte *param_1,undefined4 param_2)
{
byte bVar1;
int *piVar2;
int *piVar3;
int iVar4;
undefined4 *puVar5;
uint uVar6;
byte *pbVar7;
byte *pbVar8;
byte *in_r12;
undefined8 uVar9;
piVar3 = DAT_8f69d118;
piVar2 = DAT_8f67ee48;
if ((DAT_8f67ee48 < (int *)0x100) && (param_1 != (byte *)0x0)) {
iVar4 = FUN_8f636de0(param_1);
uVar9 = FUN_8f606c4c(3,piVar2,(iVar4 + 1) * 2);
param_2 = (undefined4)((ulonglong)uVar9 >> 0x20);
puVar5 = (undefined4 *)uVar9;
if (puVar5 != (undefined4 *)0x0) {
if (iVar4 != 0) {
in_r12 = param_1 + iVar4;
}
DAT_8f67ee48 = (int *)((int)DAT_8f67ee48 + 1);
if (iVar4 != 0) {
param_2 = 0;
pbVar7 = (byte *)((int)puVar5 + 10);
do {
pbVar8 = param_1 + 1;
bVar1 = *param_1;
pbVar7[1] = 0;
*pbVar7 = bVar1;
pbVar7 = pbVar7 + 2;
param_1 = pbVar8;
} while (pbVar8 != in_r12);
}
uVar6 = (uint)*(byte *)(puVar5 + 1);
*puVar5 = DAT_8f687324;
DAT_8f687324 = puVar5;
goto LAB_8f606df0;
}
}
uVar6 = 0;
LAB_8f606df0:
if (piVar3 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar6,param_2,piVar3);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f606e3c)
void FUN_8f606e0c(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f606e40(uint param_1,int param_2,ushort param_3)
{
int iVar1;
int *piVar2;
undefined4 *puVar3;
undefined4 extraout_r1;
int iVar4;
uint uVar5;
int *in_lr;
piVar2 = DAT_8f69d118;
puVar3 = (undefined4 *)FUN_8f6366a8((int *)0x40,0x40);
if (puVar3 == (undefined4 *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_hsusb_c_8f65b6f0,0xa7);
}
*(ushort *)((int)puVar3 + 0x12) = param_3;
if (param_2 != 0) {
param_2 = 1;
}
*(char *)((int)puVar3 + 0x11) = (char)param_2;
uVar5 = (uint)param_3 << 0x10 | 0x20000000;
*(char *)(puVar3 + 4) = (char)param_1;
puVar3[3] = 0;
if (param_2 == 0) {
if (param_1 == 0) {
uVar5 = (uint)param_3 << 0x10 | 0x20008000;
}
puVar3[1] = 1 << (param_1 & 0xff);
}
else {
puVar3[1] = 1 << ((param_1 & 0xff) + 0x10 & 0xff);
}
iVar1 = DAT_8f68730c;
iVar4 = param_2 + param_1 * 2;
puVar3[2] = DAT_8f68730c + iVar4 * 0x40;
*(uint *)(iVar1 + iVar4 * 0x40) = uVar5;
*puVar3 = DAT_8f687310;
DAT_8f687310 = puVar3;
FUN_8f625b24((uint)puVar3,0x14);
FUN_8f625b24(puVar3[2],0x40);
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(puVar3,extraout_r1,piVar2);
}
void FUN_8f606f6c(uint param_1,uint param_2)
{
int *piVar1;
uint uVar2;
uint uVar3;
longlong lVar4;
piVar1 = DAT_8f69d118;
if (param_1 != 1) {
uVar3 = param_2;
if (param_1 != 2) goto LAB_8f606fd4;
param_1 = 0;
}
uVar2 = 1;
do {
uVar3 = uVar2;
if (param_1 != 0) {
uVar3 = uVar2 + 0x10;
}
uVar3 = 1 << (uVar3 & 0xff);
if ((uVar3 & DAT_8f67ee4c) == 0) {
lVar4 = FUN_8f606e40(uVar2,param_1,(ushort)param_2);
if ((int)lVar4 != 0) {
DAT_8f67ee4c = uVar3 | DAT_8f67ee4c;
}
goto LAB_8f606ff0;
}
uVar2 = uVar2 + 1;
uVar3 = param_1;
} while (uVar2 != 0x10);
LAB_8f606fd4:
lVar4 = (ulonglong)uVar3 << 0x20;
LAB_8f606ff0:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)lVar4,(int)((ulonglong)lVar4 >> 0x20),piVar1);
}
void FUN_8f607014(void)
{
int *piVar1;
undefined4 *puVar2;
int *in_lr;
bool bVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
puVar2 = (undefined4 *)FUN_8f6366a8((int *)0x40,0x40);
if (puVar2 == (undefined4 *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_hsusb_c_8f65b6f0,0x107);
}
*puVar2 = 0;
puVar2[1] = 0;
uVar4 = FUN_8f6366a8((int *)0x40,0x40);
bVar3 = piVar1 == DAT_8f69d118;
puVar2[4] = (int)uVar4;
if (bVar3) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(puVar2,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f6070e0)
void FUN_8f6070ac(int param_1,undefined4 param_2)
{
FUN_8f636758(param_1);
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f6070e4(uint param_1,uint *param_2)
{
uint **ppuVar1;
int *piVar2;
uint **ppuVar3;
uint uVar4;
int iVar5;
undefined4 uVar6;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
uint uVar7;
uint uVar8;
int *piVar9;
uint uVar10;
uint uVar11;
int iVar12;
uint uVar13;
piVar2 = DAT_8f69d118;
uVar11 = param_2[1];
uVar4 = *param_2;
uVar10 = uVar11;
if (0x3fff < uVar11) {
uVar10 = 0x4000;
}
piVar9 = (int *)param_2[4];
uVar8 = uVar4 & 0xfffff000;
uVar7 = uVar10 << 0x10 | 0x80;
uVar13 = uVar10 + uVar4;
piVar9[2] = uVar4;
piVar9[1] = uVar7;
piVar9[3] = uVar8 + 0x1000;
piVar9[4] = uVar8 + 0x2000;
iVar5 = uVar8 + 0x3000;
piVar9[5] = iVar5;
piVar9[6] = uVar8 + 0x4000;
for (uVar11 = uVar11 - uVar10; uVar11 != 0; uVar11 = uVar11 - uVar10) {
iVar12 = *piVar9;
uVar10 = uVar11;
if (0x3fff < uVar11) {
uVar10 = 0x4000;
}
if (iVar12 == 1) {
iVar5 = FUN_8f602f04(&DAT_8f6872c0,iVar5);
*piVar9 = iVar5;
piVar9 = &DAT_8f6872c0;
DAT_8f6872c0 = iVar12;
}
else {
piVar9 = (int *)FUN_8f602f38(iVar12,iVar5);
}
uVar4 = uVar13 & 0xfffff000;
piVar9[2] = uVar13;
uVar7 = uVar10 << 0x10 | 0x80;
piVar9[3] = uVar4 + 0x1000;
uVar13 = uVar13 + uVar10;
iVar5 = uVar4 + 0x3000;
piVar9[1] = uVar7;
piVar9[4] = uVar4 + 0x2000;
piVar9[5] = iVar5;
piVar9[6] = uVar4 + 0x4000;
}
uVar6 = 1;
piVar9[1] = uVar7 | 0x8000;
DAT_8f67f324 = DAT_8f67f324 + 1;
*piVar9 = 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
uVar6 = extraout_r1_00;
}
iVar12 = *(int *)(param_1 + 8);
uVar6 = FUN_8f602f04(param_2[4],uVar6);
iVar5 = *(int *)(param_1 + 8);
*(undefined4 *)(iVar12 + 8) = uVar6;
*(undefined4 *)(iVar5 + 0xc) = 0;
*(uint **)(param_1 + 0xc) = param_2;
FUN_8f625b24(param_1,0x14);
FUN_8f625b24(*(uint *)(param_1 + 8),0x40);
FUN_8f625b24(*(uint *)(param_1 + 0xc),0x14);
uVar11 = FUN_8f602f38(*param_2,extraout_r1);
FUN_8f625b24(uVar11,param_2[1]);
ppuVar3 = (uint **)param_2[4];
if (ppuVar3 != (uint **)0x0) {
for (ppuVar1 = (uint **)*ppuVar3; ppuVar1 != (uint **)0x1; ppuVar1 = (uint **)*ppuVar1) {
FUN_8f625b24((uint)ppuVar3,0x20);
if (ppuVar1 == (uint **)0x0) goto LAB_8f6072b8;
ppuVar3 = ppuVar1;
}
FUN_8f625b24((uint)ppuVar3,0x20);
}
LAB_8f6072b8:
_DAT_078db1b0 = *(undefined4 *)(param_1 + 4);
DAT_8f67f324 = DAT_8f67f324 + -1;
if (DAT_8f67f324 == 0) {
FUN_8f625b8c();
}
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,&DAT_8f69d118,piVar2);
}
void FUN_8f60730c(undefined4 *param_1,uint param_2)
{
uint *puVar1;
uint *puVar2;
int *piVar3;
int *piVar4;
uint uVar5;
undefined4 extraout_r1;
bool bVar6;
piVar3 = DAT_8f69d118;
FUN_8f63685c((undefined4 *)*DAT_8f68731c,param_1,param_2);
puVar1 = DAT_8f68731c;
uVar5 = FUN_8f602f04(*DAT_8f68731c,extraout_r1);
puVar2 = DAT_8f68731c;
*puVar1 = uVar5;
FUN_8f625b24(*puVar2,param_2);
piVar4 = DAT_8f69d118;
puVar1 = DAT_8f68731c;
bVar6 = piVar3 == DAT_8f69d118;
DAT_8f68731c[1] = param_2;
puVar1[2] = (uint)&LAB_8f6073a4;
if (bVar6) {
FUN_8f6070e4(DAT_8f687314,puVar1);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(piVar3,puVar1,piVar4);
}
// WARNING: Removing unreachable block (ram,0x8f607474)
void FUN_8f607414(void)
{
uint *puVar1;
puVar1 = DAT_8f68731c;
DAT_8f68731c[2] = (uint)&LAB_8f606bc0;
puVar1[1] = 0;
FUN_8f6070e4(DAT_8f687314,puVar1);
return;
}
/*
Unable to decompile 'FUN_8f607478'
Cause:
Low-level Error: Forced merge caused intersection
*/
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f607978(undefined4 param_1,undefined4 param_2)
{
int iVar1;
int *piVar2;
undefined4 *puVar3;
undefined4 uVar4;
undefined4 extraout_r1;
uint uVar5;
int *in_lr;
bool bVar6;
undefined8 uVar7;
iVar1 = DAT_8f69d118;
FUN_8f606e0c(param_1,param_2);
_DAT_078db140 = 0x80002;
uVar7 = FUN_8f627cfc(0x14);
do {
uVar5 = _DAT_078db140 & 2;
} while (uVar5 != 0);
_DAT_078db184 = 0x80000000;
FUN_8f626508((int)uVar7,(int)((ulonglong)uVar7 >> 0x20));
_DAT_078db098 = 8;
_DAT_078db090 = uVar5;
piVar2 = (int *)FUN_8f635d28(0x1000,0x40);
DAT_8f68730c = (uint *)FUN_8f6366a8(piVar2,0x1000);
if (DAT_8f68730c == (uint *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_hsusb_c_8f65b6f0,0x2c0);
}
FUN_8f636968(DAT_8f68730c,0,0x800);
FUN_8f625b24((uint)DAT_8f68730c,0x800);
_DAT_078db158 = FUN_8f602f04(DAT_8f68730c,extraout_r1);
_DAT_078db1a8 = 2;
_DAT_078db1b4 = 0xffffffff;
FUN_8f627cfc(0x14);
DAT_8f687284 = FUN_8f606e40(0,0,0x40);
DAT_8f687314 = FUN_8f606e40(0,1,0x40);
puVar3 = (undefined4 *)FUN_8f607014();
DAT_8f68731c = puVar3;
uVar4 = FUN_8f6366a8((int *)0x40,0x1000);
*puVar3 = uVar4;
puVar3 = (undefined4 *)FUN_8f606c4c(3,(int *)0x0,4);
uVar4 = DAT_8f687324;
bVar6 = iVar1 == DAT_8f69d118;
DAT_8f687324 = puVar3;
DAT_8f687328 = param_1;
*(undefined *)((int)puVar3 + 10) = 9;
*puVar3 = uVar4;
*(undefined *)((int)puVar3 + 0xb) = 4;
if (bVar6) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,&DAT_8f687328,(int *)&DAT_8f687324);
}
void FUN_8f607b44(int param_1)
{
int *piVar1;
int iVar2;
int iVar3;
piVar1 = DAT_8f69d118;
iVar3 = DAT_8f687308;
iVar2 = param_1;
if (DAT_8f687308 != 0) {
dprintf((byte *)s_only_one_gadget_supported_8f65b724,DAT_8f69d118,DAT_8f687308,&DAT_8f687308);
iVar3 = -1;
iVar2 = DAT_8f687308;
}
DAT_8f687308 = iVar2;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar3,piVar1,(int *)iVar3);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f607ba8(undefined4 param_1,int *param_2,undefined4 param_3)
{
byte bVar1;
undefined4 *puVar2;
int *piVar3;
undefined uVar4;
byte bVar5;
undefined4 *puVar6;
undefined4 uVar7;
int *extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
uint uVar8;
undefined4 extraout_r1_03;
undefined4 extraout_r1_04;
undefined4 extraout_r1_05;
undefined4 extraout_r1_06;
char cVar9;
undefined4 uVar10;
int iVar11;
undefined *puVar12;
int iVar13;
int *in_lr;
undefined8 uVar14;
piVar3 = DAT_8f69d118;
dprintf((byte *)s_udc_start___8f65b740,param_2,param_3,DAT_8f69d118);
if (DAT_8f687328 == (undefined4 *)0x0) {
dprintf((byte *)s_udc_cannot_start_before_init_8f65b750,extraout_r1,param_3,0);
uVar7 = 0xffffffff;
uVar10 = extraout_r1_06;
}
else if (DAT_8f687308 == 0) {
dprintf((byte *)s_udc_has_no_gadget_registered_8f65b770,extraout_r1,param_3,0);
uVar7 = 0xffffffff;
uVar10 = extraout_r1_05;
}
else {
uVar10 = 0x12;
iVar11 = DAT_8f687308;
uVar14 = FUN_8f606c4c(1,(int *)0x0,0x12);
puVar6 = (undefined4 *)uVar14;
if (puVar6 == (undefined4 *)0x0) {
dprintf((byte *)s_Failed_to_allocate_device_descri_8f65b790,(int *)((ulonglong)uVar14 >> 0x20)
,uVar10,iVar11);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_hsusb_c_8f65b6f0,0x37b);
}
*(undefined *)((int)puVar6 + 0xf) = 0x40;
puVar2 = DAT_8f687328;
*(undefined *)((int)puVar6 + 0xb) = 2;
*(undefined *)((int)puVar6 + 10) = 0;
*(undefined *)(puVar6 + 3) = 0;
*(undefined *)((int)puVar6 + 0xd) = 0;
*(undefined *)((int)puVar6 + 0xe) = 0;
FUN_8f63685c(puVar6 + 4,puVar2,2);
FUN_8f63685c((undefined4 *)((int)puVar6 + 0x12),(undefined4 *)((int)DAT_8f687328 + 2),2);
FUN_8f63685c(puVar6 + 5,DAT_8f687328 + 1,2);
uVar4 = FUN_8f606d3c((byte *)DAT_8f687328[2],extraout_r1_00);
puVar2 = DAT_8f687328;
*(undefined *)((int)puVar6 + 0x16) = uVar4;
uVar4 = FUN_8f606d3c((byte *)puVar2[3],extraout_r1_01);
puVar2 = DAT_8f687328;
*(undefined *)((int)puVar6 + 0x17) = uVar4;
uVar4 = FUN_8f606d3c((byte *)puVar2[4],extraout_r1_02);
iVar11 = DAT_8f687308;
*(undefined *)((int)puVar6 + 0x19) = 1;
*puVar6 = DAT_8f687324;
uVar10 = 9;
DAT_8f687324 = puVar6;
*(undefined *)(puVar6 + 6) = uVar4;
iVar13 = (short)(ushort)*(byte *)(iVar11 + 0xb) * 7 + 0x12;
iVar11 = iVar13;
uVar14 = FUN_8f606c4c(2,(int *)0x0,iVar13);
puVar6 = (undefined4 *)uVar14;
if (puVar6 == (undefined4 *)0x0) {
dprintf((byte *)s_Failed_to_allocate_device_descri_8f65b790,(int *)((ulonglong)uVar14 >> 0x20)
,iVar11,uVar10);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_hsusb_c_8f65b6f0,0x393);
}
iVar11 = DAT_8f687308;
*(char *)((int)puVar6 + 10) = (char)iVar13;
*(undefined *)(puVar6 + 2) = 9;
*(undefined *)((int)puVar6 + 0x11) = 9;
*(undefined *)((int)puVar6 + 0xe) = 0;
*(char *)((int)puVar6 + 0xb) = (char)((uint)iVar13 >> 8);
*(undefined *)((int)puVar6 + 0x13) = 0;
*(undefined *)(puVar6 + 3) = 1;
*(undefined *)((int)puVar6 + 0xd) = 1;
*(undefined *)(puVar6 + 5) = 0;
*(undefined *)((int)puVar6 + 0x12) = 4;
*(undefined *)((int)puVar6 + 0xf) = 0x80;
*(undefined *)(puVar6 + 4) = 0x80;
*(undefined *)((int)puVar6 + 0x15) = *(undefined *)(iVar11 + 0xb);
*(undefined *)((int)puVar6 + 0x16) = *(undefined *)(iVar11 + 8);
*(undefined *)((int)puVar6 + 0x17) = *(undefined *)(iVar11 + 9);
*(undefined *)(puVar6 + 6) = *(undefined *)(iVar11 + 10);
uVar4 = FUN_8f606d3c(*(byte **)(iVar11 + 0xc),4);
*(undefined *)((int)puVar6 + 0x19) = uVar4;
if (*(char *)(iVar11 + 0xb) != '\0') {
uVar8 = 0;
puVar12 = (undefined *)((int)puVar6 + 0x1a);
do {
iVar13 = *(int *)(*(int *)(iVar11 + 0x14) + uVar8 * 4);
uVar8 = uVar8 + 1;
*puVar12 = 7;
puVar12[1] = 5;
cVar9 = *(char *)(iVar13 + 0x11);
bVar1 = *(byte *)(iVar13 + 0x10);
puVar12[3] = 2;
if (cVar9 == '\0') {
bVar5 = 0;
}
else {
bVar5 = 0x80;
}
puVar12[2] = bVar5 | bVar1;
puVar12[4] = (char)*(undefined2 *)(iVar13 + 0x12);
puVar12[5] = (char)((ushort)*(undefined2 *)(iVar13 + 0x12) >> 8);
cVar9 = '\x01' - *(byte *)(iVar13 + 0x11);
if (1 < *(byte *)(iVar13 + 0x11)) {
cVar9 = '\0';
}
puVar12[6] = cVar9;
puVar12 = puVar12 + 7;
} while (uVar8 < *(byte *)(iVar11 + 0xb));
}
*puVar6 = DAT_8f687324;
DAT_8f687324 = puVar6;
FUN_8f61097c(0xac,FUN_8f607478,(int *)0x0);
_DAT_078db148 = 0x145;
FUN_8f610944(0xac,extraout_r1_03);
uVar7 = 0;
_DAT_078db140 = _DAT_078db140 | 0x80001;
uVar10 = extraout_r1_04;
}
if (piVar3 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar7,uVar10,piVar3);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f607f48)
// WARNING: Removing unreachable block (ram,0x8f607f58)
// WARNING: Removing unreachable block (ram,0x8f607f60)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f607ee8(void)
{
undefined8 uVar1;
_DAT_078db1b4 = 0xffffffff;
_DAT_078db140 = _DAT_078db140 & 0xfffffffe;
_DAT_078db148 = 0;
uVar1 = FUN_8f61090c(0xac,DAT_8f69d118);
FUN_8f62653c((int)uVar1,(int)((ulonglong)uVar1 >> 0x20));
do {
} while( true );
}
void FUN_8f607f64(int *param_1,undefined4 param_2)
{
int *piVar1;
int iVar2;
uint uVar3;
int *piVar4;
int *in_lr;
ulonglong uVar5;
piVar1 = DAT_8f69d118;
piVar4 = DAT_8f69d118;
uVar5 = FUN_8f602d8c(param_1,param_2);
iVar2 = (int)uVar5;
if (iVar2 == 0) goto LAB_8f607fb4;
if (&DAT_00000005 < param_1) {
dprintf((byte *)s_bad_bs_id___u__max___u_8f65b7b8,param_1,6,piVar4);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_stats_c_8f65b7d0,0x2c);
}
else {
if (param_1 == (int *)&DAT_00000004) {
uVar5 = FUN_8f602d4c();
DAT_8f68732c = (int)uVar5;
goto LAB_8f607fb4;
}
if (param_1 == (int *)&DAT_00000005) {
uVar5 = FUN_8f602d4c();
if ((int)uVar5 != 0) {
uVar3 = (int)uVar5 - DAT_8f68732c;
uVar5 = uVar5 & 0xffffffff00000000 | (ulonglong)uVar3;
*(uint *)(iVar2 + 0xc) = uVar3;
}
goto LAB_8f607fb4;
}
}
uVar5 = FUN_8f602d4c();
if ((int)uVar5 != 0) {
*(int *)(iVar2 + (int)param_1 * 4) = (int)uVar5;
}
LAB_8f607fb4:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)(uVar5 >> 0x20),piVar1);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f608048(uint param_1,undefined4 param_2)
{
int *piVar1;
uint uVar2;
uint uVar3;
piVar1 = DAT_8f69d118;
if (param_1 < 0x21) {
_DAT_0b000c04 = 0xffffffff;
if (param_1 == 0) goto LAB_8f6080d8;
}
else {
uVar3 = 0x20;
do {
uVar2 = uVar3 << 2;
uVar3 = uVar3 + 0x10;
*(undefined4 *)((uVar2 >> 4) + 0xb000c00) = 0xffffffff;
} while (uVar3 < param_1);
}
_DAT_0b000c04 = 0xffffffff;
uVar3 = 0;
do {
uVar2 = uVar3 & 0x3fffffff;
uVar3 = uVar3 + 4;
*(undefined4 *)(&DAT_0b000400 + uVar2) = 0xa0a0a0a0;
} while (uVar3 < param_1);
uVar3 = 0;
param_2 = 0xffffffff;
do {
uVar2 = uVar3 << 2;
uVar3 = uVar3 + 0x20;
*(undefined4 *)(&DAT_0b000180 + (uVar2 >> 5)) = 0xffffffff;
} while (uVar3 < param_1);
LAB_8f6080d8:
_DAT_0b000100 = 0xffff;
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(param_1,param_2,piVar1);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f610264)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f608118(void)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f610158();
if (piVar1 == DAT_8f69d118) {
_DAT_0b002004 = 0xf0;
_DAT_0b002000 = 1;
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
void FUN_8f608154(void)
{
int *piVar1;
uint uVar2;
undefined4 uVar3;
undefined4 extraout_r1;
undefined4 uVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
uVar5 = FUN_8f610268();
uVar4 = (undefined4)((ulonglong)uVar5 >> 0x20);
uVar2 = (uint)uVar5;
if (uVar2 < 0x1ad) {
uVar3 = (**(code **)(&DAT_8f687330 + uVar2 * 8))(*(undefined4 *)(&DAT_8f687334 + uVar2 * 8));
FUN_8f6102a8(uVar2);
uVar4 = extraout_r1;
}
else {
uVar3 = 0;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,uVar4,piVar1);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f6083f4)
void FUN_8f608394(uint param_1,byte *param_2,int param_3)
{
byte *pbVar1;
if (param_3 != 0) {
pbVar1 = param_2 + param_3;
do {
param_2 = param_2 + 1;
} while (param_2 != pbVar1);
}
return;
}
void FUN_8f6083f8(undefined4 param_1,undefined4 param_2,int **param_3)
{
int *piVar1;
undefined4 uVar2;
undefined4 extraout_r1;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
uVar3 = FUN_8f616b54((int *)(s__keymaster_8f65bc7f + 1),param_2,param_3);
DAT_8f688098 = (int *)uVar3;
if ((int)DAT_8f688098 < 1) {
dprintf((byte *)s_Failure_to_load_TZ_app__lksecapp_8f65bc8c,DAT_8f688098,param_3,&DAT_8f688098);
uVar3 = CONCAT44(extraout_r1,DAT_8f688098);
uVar2 = 0xffffffff;
}
else {
uVar2 = 0;
DAT_8f68809c = 1;
}
DAT_8f688098 = (int *)uVar3;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,(int)((ulonglong)uVar3 >> 0x20),piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f6084b4)
void FUN_8f608478(void)
{
return;
}
void FUN_8f6084b8(void)
{
int iVar1;
int *piVar2;
int *extraout_r1;
undefined4 uVar3;
int **ppiVar4;
undefined4 local_1c;
int *local_18;
int *local_14;
uVar3 = 4;
local_1c = 0x10e;
ppiVar4 = &local_18;
local_14 = DAT_8f69d118;
local_18 = (int *)0x0;
iVar1 = FUN_8f617098(DAT_8f688098,&local_1c,(int *)&DAT_00000004,ppiVar4,(int *)&DAT_00000004);
if ((iVar1 < 0) || ((int)local_18 < 0)) {
dprintf((byte *)s_Failed_to_send_delete_keys_comma_8f65bcbc,local_18,uVar3,ppiVar4);
uVar3 = 0xffffffff;
piVar2 = extraout_r1;
}
else {
uVar3 = 0;
piVar2 = local_18;
}
if (local_14 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,piVar2,local_14);
}
return;
}
void FUN_8f608548(void)
{
int iVar1;
uint uVar2;
int iVar3;
int *piVar4;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
int *extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 uVar5;
int **ppiVar6;
undefined8 uVar7;
undefined4 local_1c;
int *local_18;
int *local_14;
uVar5 = 4;
local_1c = 0x204;
ppiVar6 = &local_18;
local_14 = DAT_8f69d118;
local_18 = (int *)0x0;
iVar1 = FUN_8f617098(DAT_8f688098,&local_1c,(int *)&DAT_00000004,ppiVar6,(int *)&DAT_00000004);
if ((iVar1 < 0) || ((int)local_18 < 0)) {
dprintf((byte *)s_Failed_to_send_milestone_end_com_8f65bcec,local_18,uVar5,ppiVar6);
iVar1 = -1;
uVar5 = extraout_r1_02;
}
else {
uVar7 = FUN_8f6178c4();
uVar2 = (uint)uVar7;
iVar3 = FUN_8f6161c8(uVar2,(int)((ulonglong)uVar7 >> 0x20));
if (iVar3 == 0) {
dprintf((byte *)s_send_milestone_call_to_tz__TZ_di_8f65bd70,(int *)(uVar2 >> 0x16),
(uVar2 << 10) >> 0x16,uVar2 & 0x3ff);
uVar5 = extraout_r1_00;
}
else {
uVar7 = FUN_8f615698(0xb);
piVar4 = (int *)((ulonglong)uVar7 >> 0x20);
if ((int)uVar7 != 0) {
dprintf((byte *)s_send_milestone_call_to_tz__set_t_8f65bd20,piVar4,uVar5,ppiVar6);
piVar4 = extraout_r1_01;
}
dprintf((byte *)s_Success_8f65bdd8,piVar4,uVar5,ppiVar6);
iVar1 = 0;
uVar5 = extraout_r1;
}
}
if (local_14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar1,uVar5,local_14);
}
// WARNING: Removing unreachable block (ram,0x8f608674)
void FUN_8f608638(void)
{
return;
}
void FUN_8f608678(int *param_1,int param_2,int param_3)
{
int *piVar1;
undefined4 extraout_r1;
int *in_lr;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f6366a8((int *)0x40,param_3 + 0x3fU & 0xffffffc0);
*param_1 = (int)uVar2;
if ((int)uVar2 == 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_rpm_ipc_c_8f65bde4,0x29);
uVar2 = CONCAT44(extraout_r1,*param_1);
}
if (piVar1 == DAT_8f69d118) {
FUN_8f63685c((undefined4 *)uVar2,(undefined4 *)(param_2 + 8),param_3);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((undefined4 *)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f608764)
void FUN_8f608714(int *param_1,undefined4 param_2)
{
if (*param_1 != 0) {
FUN_8f636758(*param_1);
return;
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f60879c)
void FUN_8f608768(undefined4 *param_1,int param_2,int *param_3)
{
uint *puVar1;
int extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
int extraout_r1_02;
undefined4 uVar2;
uint uVar3;
int *in_lr;
undefined8 uVar4;
uint local_48;
uint local_44;
int local_40;
int local_3c;
int *local_38;
undefined4 local_34;
undefined4 local_30;
int local_2c;
undefined4 *local_28;
int *local_24;
local_48 = 0;
local_24 = DAT_8f69d118;
if (param_3 == (int *)0x0) {
local_30 = param_1[1];
local_34 = *param_1;
DAT_8f6880a0 = DAT_8f6880a0 + 1;
local_40 = param_2 + 0x14;
local_44 = 0x716572;
local_3c = DAT_8f6880a0;
local_38 = param_3;
local_2c = param_2;
FUN_8f608678((int *)&local_28,(int)param_1,param_2);
uVar3 = local_2c + 0x28;
puVar1 = (uint *)FUN_8f63666c(uVar3,extraout_r1_00);
if (puVar1 == (uint *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_rpm_smd_c_8f65be3c,0x4d);
}
FUN_8f63685c(puVar1,&local_44,8);
FUN_8f63685c(puVar1 + 2,&local_3c,0x14);
FUN_8f63685c(puVar1 + 7,local_28,param_2);
uVar2 = FUN_8f608df4((int)&DAT_8f69d124,puVar1,uVar3);
FUN_8f608824(&local_48);
FUN_8f608d8c((int)&DAT_8f69d124);
FUN_8f636758((int)puVar1);
FUN_8f608714((int *)&local_28,extraout_r1_01);
param_2 = extraout_r1_02;
}
else if (param_3 == (int *)0x1) {
local_40 = 8;
local_44 = 0x646d63;
FUN_8f608678(&local_3c,(int)param_1,param_2);
uVar4 = FUN_8f608df4((int)&DAT_8f69d124,&local_44,0xc);
uVar2 = (undefined4)uVar4;
FUN_8f608714(&local_3c,(int)((ulonglong)uVar4 >> 0x20));
param_2 = extraout_r1;
}
else {
uVar2 = 0;
}
if (local_24 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,param_2,local_24);
}
return;
}
void FUN_8f608824(uint *param_1)
{
undefined4 uVar1;
int *extraout_r1;
int *extraout_r1_00;
int *piVar2;
int iVar3;
int local_20;
int local_1c;
int *local_c;
local_c = DAT_8f69d118;
FUN_8f608b90((int)&DAT_8f69d124,param_1,0xf,&local_20);
FUN_8f625b4c((uint)&local_20,8);
if (((local_20 == 0x646d63) || (iVar3 = 0x716572, local_20 == 0x716572)) &&
(iVar3 = local_1c, local_1c == 0xc)) {
uVar1 = 0x14;
piVar2 = extraout_r1;
}
else {
dprintf((byte *)s_Received_ERROR_ACK_8f65be24,extraout_r1,local_20,iVar3);
uVar1 = 1;
piVar2 = extraout_r1_00;
}
if (local_c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar1,piVar2,local_c);
}
void FUN_8f608a7c(undefined4 *param_1,uint param_2)
{
int *piVar1;
undefined4 uVar2;
uint extraout_r1;
int iVar3;
undefined4 *puVar4;
piVar1 = DAT_8f69d118;
iVar3 = 0x40;
puVar4 = DAT_8f69d190;
do {
if (*(byte *)(puVar4 + 6) == param_2) {
FUN_8f63685c(param_1,puVar4,0x20);
uVar2 = 0;
param_2 = extraout_r1;
goto LAB_8f608ad0;
}
iVar3 = iVar3 + -1;
puVar4 = puVar4 + 8;
} while (iVar3 != 0);
uVar2 = 0xffffffff;
LAB_8f608ad0:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,param_2,piVar1);
}
void FUN_8f608af4(undefined4 *param_1,uint param_2)
{
undefined4 uVar1;
undefined8 uVar2;
undefined8 uVar3;
uint local_1c;
undefined4 local_18;
int *local_14;
local_1c = 0;
local_18 = 0;
local_14 = DAT_8f69d118;
uVar2 = FUN_8f608a7c(param_1,param_2);
uVar1 = (undefined4)((ulonglong)uVar2 >> 0x20);
if ((int)uVar2 == 0) {
uVar1 = FUN_8f6046bc(param_1[5] + 0xe & 0xffff,&local_18);
param_1[0xb] = uVar1;
uVar3 = FUN_8f6046bc(param_1[5] + 0x152 & 0xffff,&local_1c);
uVar1 = (undefined4)((ulonglong)uVar3 >> 0x20);
param_1[10] = local_1c >> 1;
param_1[8] = (int)uVar3;
param_1[9] = (int)uVar3 + (local_1c >> 1);
}
if (local_14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,uVar1,local_14);
}
void FUN_8f608b90(int param_1,uint *param_2,undefined4 param_3,undefined4 *param_4)
{
undefined4 *puVar1;
uint uVar2;
undefined4 uVar3;
uint uVar4;
undefined4 extraout_r1;
uint uVar5;
char *pcVar6;
undefined4 *puVar7;
uint *puVar8;
uint *puVar9;
undefined4 *puVar10;
uint *puVar11;
int *in_lr;
uint uVar12;
uint local_3c;
uint local_38 [5];
int *local_24;
puVar9 = &local_3c;
local_3c = 0;
local_24 = DAT_8f69d118;
pcVar6 = (char *)DAT_8f69d118;
puVar7 = param_4;
uVar2 = FUN_8f6046bc(*(int *)(param_1 + 0x14) + 0xeU & 0xffff,puVar9);
*(uint *)(param_1 + 0x2c) = uVar2;
if (uVar2 == 0) {
dprintf((byte *)s__s__unable_to_find_index_in_smem_8f65be74,(int *)s_smd_read_8f65be68,pcVar6,
puVar7);
pcVar6 = s_platform_msm_shared_smd_c_8f65be98;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_smd_c_8f65be98,0xf5);
uVar2 = *(uint *)(param_1 + 0x2c);
}
if (*(int *)(uVar2 + 0x30) != 0) goto LAB_8f608c00;
dprintf((byte *)s__s__DTR_is_off_8f65beb4,(int *)s_smd_read_8f65be68,pcVar6,0);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_smd_c_8f65be98,0xfb);
while( true ) {
uVar2 = *(uint *)(param_1 + 0x2c);
LAB_8f608c00:
uVar5 = *(uint *)(uVar2 + 0x50);
if (0x13 < *(int *)(uVar2 + 0x54) - uVar5) break;
FUN_8f625b4c(uVar2,local_3c);
}
puVar11 = *(uint **)(param_1 + 0x24);
uVar12 = *(uint *)(param_1 + 0x28);
puVar8 = (uint *)((int)puVar11 + uVar5);
do {
uVar4 = *puVar8;
uVar5 = uVar5 + 4;
if (uVar5 < uVar12) {
puVar8 = puVar8 + 1;
}
puVar9 = puVar9 + 1;
*puVar9 = uVar4;
if (uVar12 <= uVar5) {
uVar5 = 0;
puVar8 = puVar11;
}
} while (puVar9 != local_38 + 4);
*(uint *)(uVar2 + 0x50) = uVar5;
FUN_8f625b4c((uint)local_38,0x14);
uVar5 = *(uint *)(param_1 + 0x2c);
*param_2 = local_38[0];
uVar2 = *(uint *)(uVar5 + 0x50);
if (*(int *)(uVar5 + 0x54) - uVar2 < local_38[0]) {
do {
FUN_8f625b4c(uVar5,local_3c);
uVar5 = *(uint *)(param_1 + 0x2c);
uVar2 = *(uint *)(uVar5 + 0x50);
} while (*(int *)(uVar5 + 0x54) - uVar2 < local_38[0]);
}
puVar10 = *(undefined4 **)(param_1 + 0x24);
puVar7 = (undefined4 *)((int)puVar10 + uVar2);
puVar1 = param_4;
uVar12 = local_38[0];
while (uVar12 != 0) {
uVar2 = uVar2 + 4;
uVar12 = uVar12 - 4;
*puVar1 = *puVar7;
if (uVar2 < *(uint *)(param_1 + 0x28)) {
puVar7 = puVar7 + 1;
puVar1 = puVar1 + 1;
}
else {
uVar2 = 0;
puVar7 = puVar10;
puVar1 = puVar1 + 1;
}
}
*(uint *)(uVar5 + 0x50) = uVar2;
uVar3 = FUN_8f625b4c((uint)param_4,local_38[0]);
if (local_24 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,extraout_r1,local_24);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f608d8c(int param_1)
{
int *piVar1;
int iVar2;
piVar1 = DAT_8f69d118;
iVar2 = *(int *)(param_1 + 0x2c);
*(undefined4 *)(iVar2 + 0x40) = 0;
*(undefined4 *)(iVar2 + 0x18) = 1;
*(undefined4 *)(iVar2 + 0x20) = 1;
DataSynchronizationBarrier(0xf);
_DAT_0b111008 = 1;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,1,piVar1);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f608df4(int param_1,uint *param_2,uint param_3)
{
uint *puVar1;
undefined4 uVar2;
undefined4 extraout_r1;
uint *puVar3;
undefined4 uVar4;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
char *pcVar5;
uint *puVar6;
char *pcVar7;
uint uVar8;
uint uVar9;
int iVar10;
uint *puVar11;
int *in_lr;
undefined4 local_3c;
uint local_38;
uint local_34 [4];
int *local_24;
local_3c = 0;
local_24 = DAT_8f69d118;
FUN_8f636968(&local_38,0,0x14);
pcVar7 = *(char **)(param_1 + 0x28);
pcVar5 = (char *)(param_3 + 0x14);
if (pcVar7 < pcVar5) {
dprintf((byte *)s__s__len_is_greater_than_fifo_sz_8f65bec4,(int *)s_smd_write_8f65bfac,pcVar5,
pcVar7);
uVar2 = 0xffffffff;
uVar4 = extraout_r1_00;
}
else {
puVar1 = (uint *)FUN_8f6046bc(*(int *)(param_1 + 0x14) + 0xeU & 0xffff,&local_3c);
*(uint **)(param_1 + 0x2c) = puVar1;
if (puVar1 == (uint *)0x0) {
dprintf((byte *)s__s__unable_to_find_index_in_smem_8f65be74,(int *)s_smd_write_8f65bfac,pcVar5
,pcVar7);
pcVar5 = s_platform_msm_shared_smd_c_8f65be98;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_smd_c_8f65be98,0x13b);
puVar1 = *(uint **)(param_1 + 0x2c);
}
uVar8 = *puVar1;
if ((uVar8 == 2) && (uVar8 = puVar1[0xb] - 2, uVar8 < 2)) {
if (puVar1[1] == 0) {
dprintf((byte *)s__s__DTR_is_off_8f65beb4,(int *)s_smd_write_8f65bfac,pcVar5,0);
uVar2 = 0xffffffff;
uVar4 = extraout_r1_01;
}
else {
puVar11 = *(uint **)(param_1 + 0x20);
uVar9 = puVar1[10];
puVar6 = &local_38;
puVar3 = (uint *)((int)puVar11 + uVar9);
puVar1[0x11] = 0;
uVar8 = param_3;
while( true ) {
*puVar3 = uVar8;
uVar9 = uVar9 + 4;
if (uVar9 < *(uint *)(param_1 + 0x28)) {
puVar3 = puVar3 + 1;
}
else {
uVar9 = 0;
puVar3 = puVar11;
}
if (puVar6 == local_34 + 3) break;
puVar6 = puVar6 + 1;
uVar8 = *puVar6;
}
puVar1[10] = uVar9;
puVar3 = (uint *)((int)puVar11 + uVar9);
uVar8 = param_3;
if (param_3 != 0) {
do {
uVar9 = uVar9 + 4;
uVar8 = uVar8 - 4;
*puVar3 = *param_2;
if (uVar9 < *(uint *)(param_1 + 0x28)) {
puVar3 = puVar3 + 1;
}
else {
uVar9 = 0;
puVar3 = puVar11;
}
param_2 = param_2 + 1;
} while (uVar8 != 0);
}
puVar1[10] = uVar9;
DataSynchronizationBarrier(0xf);
iVar10 = *(int *)(param_1 + 0x2c);
uVar4 = 1;
*(undefined4 *)(iVar10 + 0x14) = 1;
*(undefined4 *)(iVar10 + 0x20) = 0;
DataSynchronizationBarrier(0xf);
uVar2 = 0;
_DAT_0b111008 = 1;
local_38 = param_3;
}
}
else {
dprintf((byte *)s__s__channel_is_not_in_OPEN_state_8f65bee8,(int *)s_smd_write_8f65bfac,pcVar5
,uVar8);
uVar2 = 0xffffffff;
uVar4 = extraout_r1;
}
}
if (local_24 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,uVar4,local_24);
}
return;
}
void FUN_8f608ffc(uint *param_1,uint param_2,uint param_3)
{
int *piVar1;
uint *puVar2;
uint uVar3;
uint *puVar4;
int *in_lr;
undefined4 local_20;
int *local_1c;
local_20 = 0;
local_1c = DAT_8f69d118;
puVar2 = param_1;
puVar4 = (uint *)param_1[0xb];
if ((uint *)param_1[0xb] == (uint *)0x0) {
puVar2 = (uint *)FUN_8f6046bc(param_1[5] + 0xe & 0xffff,&local_20);
param_1[0xb] = (uint)puVar2;
puVar4 = puVar2;
if (puVar2 == (uint *)0x0) {
puVar2 = (uint *)FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_smd_c_8f65be98,0x171);
puVar4 = (uint *)param_1[0xb];
}
}
uVar3 = *puVar4;
switch(param_2) {
case 0:
if (uVar3 != 2) {
puVar4[1] = 0;
puVar4[2] = 0;
puVar4[3] = 0;
*puVar4 = 0;
puVar4 = (uint *)param_1[0xb];
break;
}
goto LAB_8f609068;
case 1:
if ((uVar3 & 0xfffffffb) == 0) {
puVar4[1] = 0;
puVar4[2] = 0;
puVar4[3] = 0;
puVar4[0x14] = 0;
puVar4[10] = 0;
puVar4[8] = 0;
*puVar4 = 1;
puVar4 = (uint *)param_1[0xb];
}
break;
case 2:
if (uVar3 == 1) {
puVar4[1] = 1;
puVar4[2] = 1;
puVar4[3] = 1;
*puVar4 = 2;
puVar4 = (uint *)param_1[0xb];
}
break;
case 4:
if (uVar3 != 2) break;
LAB_8f609068:
puVar4[1] = 0;
puVar4[2] = 0;
puVar4[3] = 0;
*puVar4 = 4;
puVar4 = (uint *)param_1[0xb];
}
piVar1 = DAT_8f69d118;
param_1[0xc] = param_2;
puVar4[7] = param_3;
if (local_1c != piVar1) {
// WARNING: Subroutine does not return
FUN_8f635428(puVar2,local_1c,piVar1);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f609378(uint *param_1)
{
int *piVar1;
uint uVar2;
uint extraout_r1;
uint extraout_r1_00;
int *extraout_r1_01;
uint extraout_r1_02;
uint uVar3;
uint uVar4;
piVar1 = DAT_8f69d118;
uVar4 = param_1[0xc];
if (uVar4 == 0) {
do {
uVar2 = DAT_8f69d190 + uVar4;
uVar4 = uVar4 + 0x20;
FUN_8f625b4c(uVar2,0x20);
} while (uVar4 != 0x800);
if (DAT_8f69d190 != 0) {
FUN_8f636758(DAT_8f69d190);
DAT_8f69d190 = 0;
}
FUN_8f627070((int)&DAT_8f6880a4,(int *)0x0);
uVar2 = extraout_r1_00;
}
else {
uVar3 = param_1[0xb];
uVar2 = *(uint *)(uVar3 + 0x2c);
if (*(int *)(uVar3 + 0x48) != 0) {
*(undefined4 *)(uVar3 + 0x48) = 0;
}
if (uVar4 != uVar2) {
FUN_8f608ffc(param_1,uVar2,0);
uVar4 = param_1[0xc];
uVar2 = extraout_r1;
}
if (uVar4 == 4) {
FUN_8f608ffc(param_1,0,1);
_DAT_0b111008 = 1;
dprintf((byte *)s_Channel_alloc_freed_8f65bf94,extraout_r1_01,1,0xb111000);
uVar2 = extraout_r1_02;
}
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,uVar2,piVar1);
}
void FUN_8f60947c(int *param_1,int *param_2)
{
int *piVar1;
int iVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
uVar3 = CONCAT44(param_2,param_1);
*(char *)(*param_1 + 0x2f) = (char)param_2;
if (((uint)*(byte *)(*param_1 + 0x2f) & (uint)param_2) == 0) {
LAB_8f6094dc:
if (piVar1 == DAT_8f69d118) {
return;
}
}
else {
iVar2 = 100;
do {
uVar3 = FUN_8f6104a8(1);
if (((uint)*(byte *)(*param_1 + 0x2f) & (uint)param_2) == 0) goto LAB_8f6094dc;
iVar2 = iVar2 + -1;
} while (iVar2 != 0);
if (piVar1 == DAT_8f69d118) {
dprintf((byte *)s_Error__sdhci_reset_failed_for____8f65bfb8,param_2,piVar1,DAT_8f69d118);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),piVar1);
}
void FUN_8f609520(int *param_1,uint param_2)
{
int *piVar1;
uint uVar2;
int iVar3;
ushort uVar4;
int *piVar5;
uint uVar6;
uint uVar7;
piVar1 = DAT_8f69d118;
uVar7 = param_1[7];
piVar5 = DAT_8f69d118;
if (uVar7 <= param_2) {
piVar5 = (int *)0x1;
}
uVar4 = (ushort)piVar5;
if (param_2 < uVar7) {
uVar6 = 2;
do {
uVar2 = FUN_8f6582ac(uVar7,uVar6);
if (uVar2 <= param_2) {
uVar4 = (ushort)((uVar6 >> 1) << 8) | 1 | (ushort)((((uVar6 >> 1) << 0x16) >> 0x1e) << 6);
goto LAB_8f609594;
}
uVar6 = uVar6 + 2;
} while (uVar6 != 0x7fe);
uVar4 = 0xffc1;
}
LAB_8f609594:
iVar3 = *param_1;
*(ushort *)(iVar3 + 0x2c) = uVar4;
do {
} while ((*(ushort *)(iVar3 + 0x2c) & 2) == 0);
*(ushort *)(iVar3 + 0x2c) = *(ushort *)(iVar3 + 0x2c) | 4;
piVar5 = DAT_8f69d118;
param_1[1] = param_2;
if (piVar1 == piVar5) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,iVar3,piVar1);
}
void FUN_8f6095e4(int *param_1,int *param_2)
{
int *piVar1;
int *piVar2;
uint uVar3;
int iVar4;
ushort uVar5;
ushort *puVar6;
int *in_lr;
piVar1 = DAT_8f69d118;
iVar4 = *param_1;
puVar6 = (ushort *)(iVar4 + 0x3e);
uVar3 = *(ushort *)(iVar4 + 0x2c) & 0xfffb;
*(short *)(iVar4 + 0x2c) = (short)uVar3;
uVar5 = *(ushort *)(iVar4 + 0x3e) & 0xfff8;
piVar2 = param_1;
switch(param_2) {
case (int *)0x0:
uVar3 = 25000000;
break;
case (int *)0x1:
uVar5 = uVar5 | 1;
uVar3 = 50000000;
break;
case (int *)0x2:
uVar5 = uVar5 | 2;
uVar3 = 100000000;
break;
case (int *)0x3:
uVar5 = uVar5 | 3;
uVar3 = 200000000;
break;
case (int *)0x4:
uVar5 = uVar5 | 4;
uVar3 = 50000000;
break;
default:
dprintf((byte *)s_Error__Invalid_UHS_mode___x_8f65bfdc,param_2,uVar3,
(uint)*(ushort *)(iVar4 + 0x3e));
piVar2 = (int *)FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_sdhci_c_8f65bffc,0x13d);
uVar3 = 0;
puVar6 = (ushort *)(*param_1 + 0x3e);
}
*puVar6 = uVar5;
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(piVar2,uVar3,piVar1);
}
FUN_8f609520(param_1,uVar3);
return;
}
void FUN_8f6096fc(int *param_1,int *param_2,undefined4 param_3)
{
int *piVar1;
undefined4 uVar2;
int *extraout_r1;
byte bVar3;
int iVar4;
piVar1 = DAT_8f69d118;
iVar4 = *param_1;
if (param_2 == (int *)0x1) {
bVar3 = 2;
}
else if (param_2 == (int *)0x0) {
bVar3 = 0;
}
else {
if (param_2 != (int *)0x2) {
dprintf((byte *)s_Bus_width_is_invalid___u_8f65c018,param_2,param_3,iVar4);
uVar2 = 1;
param_2 = extraout_r1;
goto LAB_8f609744;
}
bVar3 = 0x20;
}
uVar2 = 0;
*(byte *)(iVar4 + 0x28) = bVar3 | *(byte *)(iVar4 + 0x28);
LAB_8f609744:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,param_2,piVar1);
}
void FUN_8f609784(uint **param_1,int *param_2)
{
ushort *puVar1;
int *piVar2;
uint uVar3;
char *pcVar4;
int *extraout_r1;
int *extraout_r1_00;
int iVar5;
int *extraout_r1_01;
int *extraout_r1_02;
int *extraout_r1_03;
int *extraout_r1_04;
int *extraout_r1_05;
int *piVar6;
int *extraout_r1_06;
int *extraout_r1_07;
int *extraout_r1_08;
int *extraout_r1_09;
ushort uVar8;
uint uVar9;
uint *puVar10;
uint uVar11;
uint *puVar12;
uint *puVar13;
uint *puVar14;
int iVar15;
uint uVar16;
char cVar17;
ushort uVar18;
uint *puVar19;
undefined2 uVar20;
uint uVar21;
int *in_lr;
bool bVar22;
undefined8 uVar23;
uint *puVar7;
piVar2 = DAT_8f69d118;
piVar6 = param_2;
if ((*(char *)(param_2 + 2) != '\0') && (param_2[0xd] == 0)) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_sdhci_c_8f65bffc,0x2f8);
piVar6 = extraout_r1_09;
}
if ((param_2[7] == 0x10) && ((param_2[0xd] & 0x3fU) != 0)) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_sdhci_c_8f65bffc,0x304);
piVar6 = extraout_r1_04;
}
cVar17 = '\n';
while( true ) {
puVar13 = *param_1;
uVar9 = puVar13[9];
if ((uVar9 & 3) == 0) break;
cVar17 = cVar17 + -1;
FUN_8f6104fc(1000);
piVar6 = extraout_r1;
if (cVar17 == '\0') {
dprintf((byte *)s_Error__CMD_or_DAT_lines_were_nev_8f65c074,extraout_r1,uVar9,puVar13);
puVar13 = (uint *)0x1;
piVar6 = extraout_r1_00;
LAB_8f609804:
if (piVar2 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(puVar13,piVar6,piVar2);
}
return;
}
}
uVar9 = (uint)*(ushort *)((int)param_2 + 10);
if (uVar9 == 4) {
uVar18 = 1;
LAB_8f609a14:
uVar18 = (ushort)*(byte *)(param_2 + 2) << 5 | (ushort)*(byte *)((int)param_2 + 9) << 6 | uVar18
;
if (uVar9 == 4) {
uVar18 = uVar18 | 8;
}
else if (uVar9 < 5) {
if (uVar9 - 1 < 2) goto LAB_8f609854;
}
else if ((uVar9 == 0x40) || (uVar9 == 0x80)) {
LAB_8f609854:
uVar18 = uVar18 | 0x18;
}
}
else {
if (4 < uVar9) {
if (((uVar9 == 0x40) || (uVar9 == 0x80)) || (uVar9 == 8)) {
LAB_8f609a10:
uVar18 = 2;
goto LAB_8f609a14;
}
LAB_8f6099fc:
dprintf((byte *)s_Invalid_response_type_for_the_co_8f65c0a0,piVar6,uVar9,puVar13);
puVar13 = (uint *)0x1;
piVar6 = extraout_r1_05;
goto LAB_8f609804;
}
if (uVar9 == 1) goto LAB_8f609a10;
if (uVar9 != 0) {
if (uVar9 != 2) goto LAB_8f6099fc;
uVar18 = (ushort)*(byte *)(param_2 + 2) << 5 | (ushort)*(byte *)((int)param_2 + 9) << 6 | 3;
goto LAB_8f609854;
}
uVar18 = (ushort)*(byte *)(param_2 + 2) << 5 | (ushort)*(byte *)((int)param_2 + 9) << 6;
}
*(undefined *)((int)puVar13 + 0x2e) = 0xf;
puVar19 = (uint *)(uint)*(byte *)(param_2 + 2);
if (puVar19 == (uint *)0x0) {
puVar13 = *param_1;
}
else {
puVar14 = (uint *)param_2[0xf];
uVar9 = param_2[0xd];
if (param_2[0xe] == 0) {
uVar16 = (int)puVar14 << 9;
puVar13 = puVar14;
}
else {
uVar16 = (int)puVar14 * param_2[0xe];
}
if (uVar16 < 0x10001) {
uVar3 = uVar9;
piVar6 = (int *)FUN_8f635d28(4,0x40);
uVar23 = FUN_8f6366a8(piVar6,0x40);
puVar19 = (uint *)uVar23;
if (puVar19 == (uint *)0x0) {
dprintf((byte *)s_Error_allocating_memory_8f65c0c8,(int *)((ulonglong)uVar23 >> 0x20),uVar3,
puVar13);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_sdhci_c_8f65bffc,0x265);
}
bVar22 = uVar16 != 0x10000;
if (bVar22) {
uVar16 = uVar16 & 0xffff;
}
uVar20 = (undefined2)uVar16;
if (!bVar22) {
uVar20 = 0;
}
iVar5 = 8;
puVar19[1] = uVar9;
*(undefined2 *)((int)puVar19 + 2) = uVar20;
*(undefined2 *)puVar19 = 0x23;
}
else {
uVar3 = uVar16 >> 0x10;
if (uVar16 != (uVar16 & 0xffff0000)) {
uVar3 = uVar3 + 1;
}
uVar21 = uVar9;
piVar6 = (int *)FUN_8f635d28(4,0x40);
iVar5 = uVar3 * 8;
uVar23 = FUN_8f6366a8(piVar6,iVar5 + 0x3fU & 0xffffffc0);
puVar19 = (uint *)uVar23;
if (puVar19 == (uint *)0x0) {
dprintf((byte *)s_Error_allocating_memory_8f65c0c8,(int *)((ulonglong)uVar23 >> 0x20),uVar21
,puVar13);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_sdhci_c_8f65bffc,0x27e);
}
FUN_8f636968(puVar19,0,iVar5);
if (uVar3 == 1) {
uVar20 = 0;
puVar19[1] = uVar9;
puVar13 = puVar19;
}
else {
iVar15 = 0;
uVar21 = uVar9;
do {
*(uint *)((int)puVar19 + iVar15 + 4) = uVar21;
uVar21 = uVar21 + 0x10000;
*(undefined2 *)((int)puVar19 + iVar15 + 2) = 0;
*(undefined2 *)((int)puVar19 + iVar15) = 0x21;
iVar15 = iVar15 + 8;
} while (iVar15 != iVar5 + -8);
uVar16 = uVar16 + 0x10000 + uVar3 * -0x10000;
bVar22 = uVar16 < 0x10000;
if (bVar22) {
uVar16 = uVar16 & 0xffff;
}
uVar20 = (undefined2)uVar16;
if (!bVar22) {
uVar20 = 0;
}
((uint *)((int)puVar19 + iVar15))[1] = uVar9 + (uVar3 + 0xffff) * 0x10000;
puVar13 = (uint *)((int)puVar19 + iVar15);
}
*(undefined2 *)((int)puVar13 + 2) = uVar20;
*(undefined2 *)puVar13 = 0x23;
}
FUN_8f625b24((uint)puVar19,iVar5);
(*param_1)[0x16] = (uint)puVar19;
puVar13 = *param_1;
if (param_2[0xe] == 0) {
uVar20 = 0x200;
}
else {
uVar20 = (undefined2)param_2[0xe];
}
*(undefined2 *)(puVar13 + 1) = uVar20;
*(short *)((int)puVar13 + 6) = (short)puVar14;
}
puVar13[2] = param_2[1];
uVar8 = (ushort)*(byte *)(param_2 + 2);
if (uVar8 != 0) {
iVar5 = param_2[7];
if (iVar5 == 1) {
if (*(short *)param_2 == 0x15) {
iVar5 = 0;
}
FUN_8f60a75c((int *)param_1,iVar5);
uVar8 = 0x11;
}
else {
FUN_8f60a75c((int *)param_1,0);
uVar8 = 1;
}
if (1 < (uint)param_2[0xf]) {
if (*(char *)(param_2 + 0x10) == '\0') {
if (param_2[9] == 0) {
uVar8 = uVar8 | 0x26;
}
else {
uVar8 = uVar8 | 0x2a;
**param_1 = param_2[0xf];
}
}
else {
uVar8 = uVar8 | 0x22;
}
}
}
puVar14 = *param_1;
uVar16 = param_2[10];
uVar9 = param_2[0xb];
iVar5 = 0;
*(ushort *)(puVar14 + 3) = uVar8;
if ((uVar16 | uVar9) == 0) {
uVar9 = 0;
uVar16 = 10000000;
}
*(ushort *)((int)puVar14 + 0xe) = uVar18 & 0xff | *(short *)param_2 << 8;
while( true ) {
puVar7 = puVar14 + 0xc;
if (((*(ushort *)(puVar14 + 0xc) & 1) != 0) &&
(uVar3 = *(ushort *)((int)puVar14 + 0x32) & 1, (*(ushort *)((int)puVar14 + 0x32) & 1) == 0))
break;
puVar10 = param_1[3];
if ((*(ushort *)(puVar14 + 0xc) & 0x8000) != 0) {
if (puVar10 == (uint *)0x0) {
puVar12 = (uint *)(*(ushort *)((int)puVar14 + 0x32) & 0x10);
puVar13 = puVar12;
if ((*(ushort *)((int)puVar14 + 0x32) & 0x10) == 0) goto LAB_8f609c58;
goto LAB_8f609924;
}
LAB_8f609974:
puVar12 = (uint *)(uint)*(ushort *)((int)puVar14 + 0x32);
if ((*(ushort *)((int)puVar14 + 0x32) & 0xf) == 0) goto LAB_8f609924;
LAB_8f609980:
FUN_8f60947c((int *)param_1,(int *)&DAT_00000006);
puVar13 = (uint *)0x1;
piVar6 = extraout_r1_02;
goto LAB_8f609990;
}
puVar12 = puVar14;
if (puVar10 != (uint *)0x0) goto LAB_8f609974;
LAB_8f609924:
puVar14 = puVar12;
iVar5 = iVar5 + 1;
FUN_8f6104fc(1);
if (iVar5 == 9000000) {
pcVar4 = s_Error__Command_never_completed_8f65c0e4;
piVar6 = extraout_r1_01;
puVar12 = puVar10;
LAB_8f609c44:
dprintf((byte *)pcVar4,piVar6,puVar12,puVar14);
puVar14 = *param_1;
puVar12 = (uint *)0x0;
puVar7 = puVar14 + 0xc;
puVar13 = (uint *)0x1;
goto LAB_8f609c58;
}
puVar14 = *param_1;
}
cVar17 = '\x01';
*(ushort *)puVar7 = 1;
if (*(short *)((int)param_2 + 10) == 4) {
while( true ) {
uVar11 = uVar3 & 0xff;
uVar21 = puVar14[uVar11 + 4];
param_2[uVar11 + 3] = uVar21 << 8;
if ((uVar11 != 0) &&
(param_2[uVar11 + 3] = uVar21 << 8 | puVar14[uVar11 + 3] >> 0x18, cVar17 == '\x04')) break;
cVar17 = cVar17 + '\x01';
uVar3 = uVar3 + 1;
}
puVar14 = *param_1;
}
else {
param_2[3] = puVar14[4];
}
puVar12 = (uint *)(uint)*(byte *)(param_2 + 2);
if ((puVar12 == (uint *)0x0) && (*(short *)((int)param_2 + 10) != 2)) {
puVar7 = puVar14 + 0xc;
puVar13 = puVar12;
}
else {
uVar3 = 0;
uVar21 = 0;
while( true ) {
puVar7 = puVar14 + 0xc;
if ((*(ushort *)(puVar14 + 0xc) & 2) != 0) break;
puVar12 = param_1[3];
if ((*(ushort *)(puVar14 + 0xc) & 0x8000) != 0) {
if (puVar12 != (uint *)0x0) goto LAB_8f609e10;
puVar12 = (uint *)(*(ushort *)((int)puVar14 + 0x32) & 0x10);
puVar13 = puVar12;
if ((*(ushort *)((int)puVar14 + 0x32) & 0x10) != 0) goto LAB_8f609dc8;
goto LAB_8f609c58;
}
if (puVar12 != (uint *)0x0) {
LAB_8f609e10:
puVar1 = (ushort *)((int)puVar14 + 0x32);
puVar14 = (uint *)(uint)*puVar1;
if ((*puVar1 & 0x30) != 0) goto LAB_8f609980;
}
LAB_8f609dc8:
bVar22 = 0xfffffffe < uVar3;
uVar3 = uVar3 + 1;
uVar21 = uVar21 + bVar22;
FUN_8f6104fc(1);
if (uVar21 == uVar9 && uVar3 == uVar16) {
pcVar4 = s_Error__Transfer_never_completed_8f65c104;
piVar6 = extraout_r1_08;
goto LAB_8f609c44;
}
puVar14 = *param_1;
}
puVar12 = (uint *)0x1;
*(ushort *)puVar7 = 2;
puVar13 = (uint *)0x0;
}
LAB_8f609c58:
piVar6 = (int *)(uint)*(ushort *)puVar7;
if ((*(ushort *)puVar7 & 0x8000) != 0) {
if (((*(ushort *)((int)puVar14 + 0x32) & 0x10) == 0) || (puVar12 == (uint *)0x0)) {
uVar18 = *(ushort *)((int)puVar14 + 0x32);
uVar9 = (uint)uVar18;
if ((uVar18 & 1) == 0) {
if ((uVar18 & 2) == 0) {
if ((uVar18 & 4) == 0) {
if ((uVar18 & 8) == 0) {
if ((uVar18 & 0x10) == 0) {
if ((uVar18 & 0x20) == 0) {
if ((uVar18 & 0x40) == 0) {
if ((uVar18 & 0x80) == 0) {
if ((uVar18 & 0x100) == 0) {
if ((uVar18 & 0x200) == 0) goto LAB_8f609ce8;
dprintf((byte *)s_Error__ADMA_error_8f65c224,piVar6,puVar12,uVar9);
}
else {
dprintf((byte *)s_Error__Auto_CMD12_error_8f65c208,piVar6,puVar12,uVar9);
}
}
else {
dprintf((byte *)s_Error__Current_limit_error_8f65c1ec,piVar6,puVar12,uVar9);
}
}
else {
dprintf((byte *)s_Error__DATA_end_bit_error_8f65c1d0,piVar6,puVar12,uVar9);
}
}
else {
dprintf((byte *)s_Error__DATA_CRC_error_8f65c1b8,piVar6,puVar12,uVar9);
}
}
else {
dprintf((byte *)s_Error__DATA_time_out_error_8f65c19c,piVar6,puVar12,uVar9);
}
}
else {
dprintf((byte *)s_Error__Command_Index_error_8f65c180,piVar6,puVar12,uVar9);
}
}
else {
dprintf((byte *)s_Error__CMD_end_bit_error_8f65c164,piVar6,puVar12,uVar9);
}
}
else {
dprintf((byte *)s_Error__Command_CRC_error_8f65c148,piVar6,puVar12,uVar9);
}
}
else {
dprintf((byte *)s_Error__Command_timeout_error_8f65c128,piVar6,puVar12,uVar9);
}
puVar13 = (uint *)0x1;
}
else {
puVar13 = (uint *)0x0;
}
LAB_8f609ce8:
FUN_8f60947c((int *)param_1,(int *)&DAT_00000006);
piVar6 = extraout_r1_06;
}
if (puVar13 == (uint *)0x0) {
if (param_2[7] == 1) {
puVar13 = (uint *)0x0;
if (param_2[0xe] == 0) {
iVar5 = param_2[0xf] << 9;
}
else {
iVar5 = param_2[0xf] * param_2[0xe];
}
FUN_8f625b4c(param_2[0xd],iVar5);
piVar6 = extraout_r1_07;
}
}
else {
puVar13 = (uint *)0x1;
}
LAB_8f609990:
if (puVar19 != (uint *)0x0) {
FUN_8f636758((int)puVar19);
piVar6 = extraout_r1_03;
}
goto LAB_8f609804;
}
void FUN_8f609fbc(int *param_1)
{
int *piVar1;
byte bVar2;
uint uVar3;
int iVar4;
int iVar5;
uint uVar6;
byte bVar7;
uint uVar8;
bool bVar9;
piVar1 = DAT_8f69d118;
iVar5 = *param_1;
uVar6 = *(uint *)(iVar5 + 0x40);
iVar4 = *(int *)(iVar5 + 0x44);
uVar8 = (uVar6 << 0x10) >> 0x18;
param_1[8] = (uVar6 << 0xe) >> 0x1e;
uVar3 = uVar8 * 1000000;
param_1[7] = uVar3;
if ((uVar6 & 0x40000) != 0) {
uVar3 = 1;
*(undefined *)(param_1 + 9) = 1;
}
if ((uVar6 & 0x80000) != 0) {
uVar3 = 1;
*(undefined *)((int)param_1 + 0x25) = 1;
}
if ((uVar6 & 0x1000000) == 0) {
if ((uVar6 & 0x2000000) == 0) {
bVar9 = (uVar6 & 0x4000000) == 0;
if (bVar9) {
uVar3 = (uint)*(byte *)((int)param_1 + 0x26);
}
else {
uVar6 = 5;
uVar8 = 0xb;
}
bVar7 = (byte)uVar8;
if (!bVar9) {
uVar3 = 10;
}
bVar2 = (byte)uVar3;
if (bVar9) {
bVar2 = (byte)(uVar3 << 1);
bVar7 = bVar2 | 1;
}
else {
*(char *)((int)param_1 + 0x26) = (char)uVar6;
}
}
else {
bVar7 = 0xd;
*(undefined *)((int)param_1 + 0x26) = 6;
bVar2 = 0xc;
}
}
else {
bVar7 = 0xf;
bVar2 = 0xe;
*(undefined *)((int)param_1 + 0x26) = 7;
}
*(byte *)(param_1 + 10) = (byte)((uint)(iVar4 << 0x1d) >> 0x1f);
*(byte *)((int)param_1 + 0x29) = (byte)iVar4 & 1;
*(byte *)((int)param_1 + 0x2a) = (byte)((uint)(iVar4 << 0x1e) >> 0x1f);
uVar6 = *(uint *)(*(int *)param_1[0xc] + 0x50);
uVar3 = uVar6 >> 0x1c;
uVar8 = uVar6 & 0xff;
*(byte *)(param_1 + 4) = (byte)(uVar6 >> 0x1c);
*(short *)((int)param_1 + 0x12) = (short)uVar8;
if ((uVar3 != 1) || (0x33 < uVar8)) {
uVar3 = 0;
}
param_1[5] = uVar3;
*(byte *)(iVar5 + 0x29) = bVar2;
*(byte *)(*param_1 + 0x29) = bVar7;
FUN_8f627034(param_1[6],uVar8);
FUN_8f6096fc(param_1,(int *)0x0,iVar5);
*(undefined *)(*param_1 + 0x28) = 0x10;
iVar4 = *param_1;
*(undefined2 *)(iVar4 + 0x34) = 0xb;
*(undefined2 *)(iVar4 + 0x36) = 0xffff;
*(undefined2 *)(iVar4 + 0x38) = 0xb;
*(undefined2 *)(iVar4 + 0x3a) = 0xffff;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0x10,0xb,piVar1);
}
void FUN_8f60a128(int *param_1)
{
int *piVar1;
int iVar2;
undefined4 extraout_r1;
undefined4 uVar3;
piVar1 = DAT_8f69d118;
iVar2 = param_1[4];
if ((*(uint *)(*param_1 + 0xe0) & 0xc) == 0) {
uVar3 = 1;
}
else {
uVar3 = 5;
}
*(undefined4 *)(*param_1 + 0xe8) = uVar3;
FUN_8f627070(iVar2,(int *)0x0);
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(0,extraout_r1,piVar1);
}
return;
}
void FUN_8f60a184(int param_1,uint param_2)
{
int *piVar1;
uint uVar2;
piVar1 = DAT_8f69d118;
if (112000000 < param_2) {
if (param_2 < 0x7735941) {
uVar2 = 0x1000000;
goto LAB_8f60a238;
}
if (param_2 < 0x82a7441) {
uVar2 = 0x2000000;
goto LAB_8f60a238;
}
if (param_2 < 0x8f0d181) {
uVar2 = 0x3000000;
goto LAB_8f60a238;
}
if (param_2 < 0x9a7ec81) {
uVar2 = 0x4000000;
goto LAB_8f60a238;
}
if (param_2 < 0xa6e49c1) {
uVar2 = 0x5000000;
goto LAB_8f60a238;
}
if (param_2 < 0xb2564c1) {
uVar2 = 0x6000000;
goto LAB_8f60a238;
}
if (param_2 < 0xbebc201) {
uVar2 = 0x7000000;
goto LAB_8f60a238;
}
}
uVar2 = 0;
LAB_8f60a238:
*(uint *)(param_1 + 0x100) = uVar2 | *(uint *)(param_1 + 0x100) & 0xf8ffffff;
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(param_1,uVar2,piVar1);
}
return;
}
void FUN_8f60a26c(int *param_1,int param_2)
{
int iVar1;
undefined4 uVar2;
undefined4 extraout_r1;
undefined4 uVar3;
undefined4 extraout_r1_00;
uint *puVar4;
int iVar5;
int local_5c [4];
undefined4 local_4c;
undefined4 uStack_48;
undefined4 uStack_44;
undefined4 uStack_40;
undefined4 local_3c;
undefined4 uStack_38;
undefined4 uStack_34;
undefined4 uStack_30;
undefined4 local_2c;
undefined4 uStack_28;
undefined4 uStack_24;
undefined4 uStack_20;
int *local_1c;
uVar3 = DAT_8f65c26c;
local_5c[0] = DAT_8f65c238;
local_5c[1] = DAT_8f65c23c;
local_5c[2] = DAT_8f65c240;
local_5c[3] = DAT_8f65c244;
local_1c = DAT_8f69d118;
local_4c = DAT_8f65c248;
uStack_48 = DAT_8f65c24c;
uStack_44 = DAT_8f65c250;
uStack_40 = DAT_8f65c254;
local_3c = DAT_8f65c258;
uStack_38 = DAT_8f65c25c;
uStack_34 = DAT_8f65c260;
uStack_30 = DAT_8f65c264;
local_2c = DAT_8f65c268;
uStack_28 = DAT_8f65c26c;
uStack_24 = DAT_8f65c270;
uStack_20 = DAT_8f65c274;
*(uint *)(*param_1 + 0x100) = *(uint *)(*param_1 + 0x100) & 0xfff9ffff | 0x90000;
iVar1 = *param_1;
do {
} while ((*(uint *)(iVar1 + 0x100) & 0x40000) != 0);
iVar5 = 0x32;
*(uint *)(iVar1 + 0x100) = *(uint *)(iVar1 + 0x100) & 0xff0fffff | local_5c[param_2] << 0x14;
*(uint *)(*param_1 + 0x100) = *(uint *)(*param_1 + 0x100) | 0x40000;
do {
puVar4 = (uint *)(*param_1 + 0x100);
if ((*(uint *)(*param_1 + 0x100) & 0x40000) != 0) {
uVar2 = 0;
*puVar4 = *puVar4 & 0xfff7ffff | 0x20000;
goto LAB_8f60a34c;
}
FUN_8f6104fc(1);
iVar5 = iVar5 + -1;
uVar3 = extraout_r1;
} while (iVar5 != 0);
dprintf((byte *)s__s__clk_out_en_timed_out___08x_8f65c30c,(int *)s_sdhci_msm_config_dll_8f65c48c,
*(undefined4 *)(*param_1 + 0x100),*param_1);
uVar2 = 1;
uVar3 = extraout_r1_00;
LAB_8f60a34c:
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,uVar3,local_1c);
}
void FUN_8f60a38c(int *param_1)
{
int *piVar1;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 uVar2;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 extraout_r1_03;
int iVar3;
int iVar4;
uint uVar5;
piVar1 = DAT_8f69d118;
iVar3 = *param_1;
uVar5 = *(uint *)(iVar3 + 0x10c) & 2;
if ((*(char *)(param_1 + 4) == '\x01') && (0x41 < *(ushort *)((int)param_1 + 0x12))) {
*(uint *)(iVar3 + 0x100) = *(uint *)(iVar3 + 0x100) & 0xfffbffff;
*(uint *)(*param_1 + 0x1b4) = *(uint *)(*param_1 + 0x1b4) | 0x200000;
iVar3 = *param_1;
}
if (uVar5 != 0) {
*(uint *)(iVar3 + 0x10c) = *(uint *)(iVar3 + 0x10c) & 0xfffffffd;
iVar3 = *param_1;
}
*(uint *)(iVar3 + 0x100) = *(uint *)(iVar3 + 0x100) | 0x40000000;
*(uint *)(*param_1 + 0x100) = *(uint *)(*param_1 + 0x100) | 0x20000000;
FUN_8f60a184(*param_1,param_1[1]);
uVar2 = extraout_r1;
if ((*(char *)(param_1 + 4) == '\x01') && (0x41 < *(ushort *)((int)param_1 + 0x12))) {
iVar3 = *param_1;
if ((*(uint *)(iVar3 + 0x1b4) & 0x40000) == 0) {
iVar4 = (uint)param_1[1] / 19200000 << 2;
}
else {
iVar4 = (uint)param_1[1] / 19200000 << 3;
}
*(uint *)(iVar3 + 0x1b4) = *(uint *)(iVar3 + 0x1b4) & 0xfffc03ff | iVar4 << 10;
FUN_8f6104fc(5);
uVar2 = extraout_r1_03;
}
*(uint *)(*param_1 + 0x100) = *(uint *)(*param_1 + 0x100) & 0xbfffffff;
*(uint *)(*param_1 + 0x100) = *(uint *)(*param_1 + 0x100) & 0xdfffffff;
if ((*(char *)(param_1 + 4) == '\x01') && (0x41 < *(ushort *)((int)param_1 + 0x12))) {
FUN_8f60a184(*param_1,param_1[1]);
*(uint *)(*param_1 + 0x1b4) = *(uint *)(*param_1 + 0x1b4) & 0xffdfffff;
uVar2 = extraout_r1_02;
}
iVar3 = 0x32;
*(uint *)(*param_1 + 0x100) = *(uint *)(*param_1 + 0x100) | 0x10000;
*(uint *)(*param_1 + 0x100) = *(uint *)(*param_1 + 0x100) | 0x40000;
do {
iVar4 = *param_1;
if ((*(uint *)(iVar4 + 0x108) & 0x80) != 0) {
if (uVar5 != 0) {
uVar5 = 0;
*(uint *)(iVar4 + 0x10c) = *(uint *)(iVar4 + 0x10c) | 2;
}
goto LAB_8f60a490;
}
FUN_8f6104fc(1);
iVar3 = iVar3 + -1;
uVar2 = extraout_r1_00;
} while (iVar3 != 0);
dprintf((byte *)s__s__Failed_to_get_DLL_lock__0x_0_8f65c32c,(int *)s_sdhci_msm_init_dll_8f65c2f8,
*(undefined4 *)(*param_1 + 0x108),*param_1);
uVar5 = 1;
uVar2 = extraout_r1_01;
LAB_8f60a490:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar5,uVar2,piVar1);
}
void FUN_8f60a578(int *param_1,int *param_2)
{
int *piVar1;
undefined4 uVar2;
undefined4 extraout_r1;
uint uVar3;
uint uVar4;
int *piVar5;
piVar1 = DAT_8f69d118;
*(undefined4 *)(*param_1 + 0x10c) = 0xa1c;
*(uint *)(*param_2 + 0x78) = *(uint *)(*param_2 + 0x78) | 1;
*(uint *)(*param_2 + 0x78) = *(uint *)(*param_2 + 0x78) | 0x2000;
FUN_8f60947c(param_1,(int *)0x1);
if (*(char *)(param_2 + 3) != '\0') {
*(uint *)(*param_1 + 0x10c) = *(uint *)(*param_1 + 0x10c) | 0x18000;
}
uVar3 = *(uint *)(*param_2 + 0xdc);
*(uint *)(*param_2 + 0xe4) = uVar3;
uVar4 = *(uint *)(*param_2 + 0xe8);
if ((uVar3 & 3) != 0) {
uVar4 = uVar4 | 1;
}
if ((uVar3 & 0xc) != 0) {
uVar4 = uVar4 | 4;
}
*(uint *)(*param_2 + 0xe8) = uVar4;
FUN_8f61097c(param_2[1],FUN_8f60a128,param_2);
uVar2 = FUN_8f610944(param_2[1],extraout_r1);
piVar5 = (int *)param_1[0xc];
*(undefined4 *)(*param_2 + 0xe0) = 0xf;
uVar3 = *(uint *)(*piVar5 + 0x50);
*(byte *)(param_1 + 4) = (byte)(uVar3 >> 0x1c);
*(short *)((int)param_1 + 0x12) = (short)(uVar3 & 0xff);
if ((uVar3 >> 0x1c != 0) && (1 < ((uVar3 & 0xff) - 0x11 & 0xffff))) {
uVar3 = *(uint *)(*param_1 + 0x40);
if (*(char *)((int)param_2 + 0xb) == '\x01') {
uVar3 = uVar3 | 0x4000000;
}
else {
uVar3 = uVar3 | 0x2000000;
}
*(uint *)(*param_1 + 0x11c) = uVar3;
}
piVar5 = DAT_8f69d118;
*(undefined *)(param_2 + 2) = 0;
*(undefined *)((int)param_2 + 9) = 0;
param_1[3] = 0;
if (piVar1 != piVar5) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,piVar1,piVar5);
}
return;
}
void FUN_8f60a6b0(int *param_1)
{
int *piVar1;
uint uVar2;
int iVar3;
int iVar4;
piVar1 = DAT_8f69d118;
iVar4 = param_1[0xc];
iVar3 = *param_1;
if (param_1[2] == 3) {
uVar2 = *(uint *)(iVar3 + 0x10c) | 0x300;
*(uint *)(iVar3 + 0x10c) = uVar2;
if ((*(char *)(iVar4 + 8) != '\0') && (*(char *)(iVar4 + 9) == '\0')) {
*(uint *)(*param_1 + 0x10c) = *(uint *)(*param_1 + 0x10c) & 0xffc7ffff | 0x300000;
uVar2 = *(uint *)(*param_1 + 0x10c) | 0x40000;
*(uint *)(*param_1 + 0x10c) = uVar2;
}
}
else {
*(uint *)(iVar3 + 0x10c) = *(uint *)(iVar3 + 0x10c) & 0xffc7ffff;
uVar2 = *(uint *)(*param_1 + 0x10c) & 0xfffbffff;
*(uint *)(*param_1 + 0x10c) = uVar2;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1,uVar2,piVar1);
}
void FUN_8f60a75c(int *param_1,int param_2)
{
int *piVar1;
uint uVar2;
piVar1 = DAT_8f69d118;
uVar2 = *(uint *)(*param_1 + 0x100);
if (param_2 == 0) {
uVar2 = uVar2 & 0xfffdffff | 0x80000;
}
else {
uVar2 = uVar2 & 0xfff7ffff | 0x20000;
}
*(uint *)(*param_1 + 0x100) = uVar2;
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(param_1,uVar2,piVar1);
}
return;
}
void FUN_8f60a7b0(uint **param_1,uint *param_2,int param_3)
{
bool bVar1;
undefined8 uVar2;
char *pcVar3;
uint uVar4;
int iVar5;
int *piVar6;
undefined4 uVar7;
undefined4 extraout_r1;
int *extraout_r1_00;
int *extraout_r1_01;
int *extraout_r1_02;
uint uVar8;
uint uVar9;
uint uVar10;
char *pcVar11;
uint *puVar12;
uint *puVar13;
uint uVar14;
int iVar15;
uint uVar16;
int *in_lr;
undefined8 uVar17;
uint local_568;
uint local_54c;
uint local_544 [17];
uint local_500 [16];
undefined2 uStack_4c0;
int local_4bc;
undefined local_4b8;
undefined local_4b7;
undefined2 uStack_4b6;
undefined4 local_4a4;
char *local_48c;
uint local_488;
undefined4 local_484;
undefined2 uStack_478;
int local_474;
undefined local_46f;
undefined2 uStack_46e;
int local_46c;
uint local_42c [256];
int local_2c;
undefined auStack_28 [4];
local_2c = DAT_8f69d118;
FUN_8f636968(local_544 + 1,0,0x40);
if (param_3 != 2) {
uVar16 = 0x40;
}
else {
uVar16 = 0x80;
}
param_1[3] = (uint *)0x1;
pcVar11 = (char *)0x8f65c278;
if (param_3 != 2) {
pcVar11 = &DAT_8f65c4a4;
}
puVar13 = param_1[0xc];
pcVar3 = (char *)FUN_8f6366a8((int *)0x40,uVar16);
if (pcVar3 == (char *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_sdhci_msm_c_8f65c350,0x2dd);
}
if (((*(char *)(puVar13 + 2) == '\0') || (*(char *)((int)puVar13 + 9) != '\0')) ||
(param_1[2] != (uint *)0x3)) {
uVar4 = FUN_8f60a38c((int *)param_1);
local_54c = uVar4;
if (uVar4 == 0) {
do {
local_568 = 0;
FUN_8f636968((uint *)&uStack_4c0,0,0x48);
FUN_8f636968((uint *)&uStack_478,0,0x48);
uVar14 = 0;
local_544[0] = uVar4;
do {
while( true ) {
iVar5 = FUN_8f60a26c((int *)param_1,uVar14);
if (iVar5 != 0) goto LAB_8f60ac30;
local_4b7 = 0;
local_4a4 = 1;
local_4b8 = 1;
local_484 = 1;
local_4bc = iVar5;
local_48c = pcVar3;
local_488 = uVar16;
iVar5 = FUN_8f609784(param_1,(int *)&uStack_4c0);
if (iVar5 == 0) break;
local_46f = 0;
uVar8 = *param_2;
iVar5 = 0x32;
uStack_46e = 1;
local_474 = uVar8 << 0x10;
uStack_478 = 0xd;
do {
uVar17 = FUN_8f609784(param_1,(int *)&uStack_478);
uVar7 = (undefined4)((ulonglong)uVar17 >> 0x20);
if (((int)uVar17 == 0) && ((uint)(local_46c << 0x13) >> 0x1c == 4)) break;
FUN_8f6104fc(10);
iVar5 = iVar5 + -1;
uVar7 = extraout_r1;
} while (iVar5 != 0);
LAB_8f60a9a0:
uVar14 = uVar14 + 1;
if (uVar14 == 0x10) goto LAB_8f60a9ac;
}
uVar8 = uVar16;
uVar17 = FUN_8f636a7c(pcVar3,pcVar11,uVar16);
uVar7 = (undefined4)((ulonglong)uVar17 >> 0x20);
if ((int)uVar17 != 0) goto LAB_8f60a9a0;
uVar4 = local_568 + 1;
local_544[local_568 + 1] = uVar14;
uVar14 = uVar14 + 1;
local_568 = uVar4;
} while (uVar14 != 0x10);
LAB_8f60a9ac:
uVar17 = CONCAT44(uVar7,local_54c);
uVar14 = local_568;
uVar4 = local_544[0];
uVar2 = CONCAT44(uVar7,local_54c);
if (local_568 != 0x10) goto LAB_8f60a9f4;
do {
uVar4 = uVar4 + 1 & 0xff;
uVar2 = uVar17;
if (3 < uVar4) goto LAB_8f60a9f4;
uVar8 = uVar4;
uVar17 = FUN_8f60b81c(param_1,(int *)param_2,uVar4);
local_54c = (uint)uVar17;
} while (local_54c == 0);
} while( true );
}
}
else {
iVar5 = FUN_8f60a38c((int *)param_1);
if ((iVar5 == 0) &&
(iVar5 = FUN_8f60a26c((int *)param_1,(uint)*(byte *)((int)param_1[0xc] + 10)), iVar5 == 0)) {
(*param_1)[0x40] = (*param_1)[0x40] | 1;
if (param_1[5] == (uint *)0x0) {
puVar12 = *param_1;
uVar17 = FUN_8f62668c();
uVar7 = FUN_8f626650((int)uVar17,(int)((ulonglong)uVar17 >> 0x20));
*(undefined4 *)((int)uVar17 + (int)puVar12) = uVar7;
iVar5 = 0x32;
(*param_1)[0x6d] = (*param_1)[0x6d] | 1;
do {
puVar12 = *param_1;
uVar4 = puVar12[0x42];
if ((uVar4 & 0x800) != 0) {
piVar6 = (int *)0x0;
puVar12[0x6c] = puVar12[0x6c] | 8;
LAB_8f60add4:
*(undefined *)((int)puVar13 + 9) = 1;
goto LAB_8f60ac3c;
}
FUN_8f6104a8(1);
iVar5 = iVar5 + -1;
} while (iVar5 != 0);
dprintf((byte *)s_Error__DLL_lock_for_hs400_operat_8f65c3d4,extraout_r1_01,uVar4,puVar12);
}
else {
(*param_1)[0x61] = (*param_1)[0x61] & 0xfffffffe;
(*param_1)[0x61] = (*param_1)[0x61] & 0xffffffbf;
(*param_1)[0x5e] = (*param_1)[0x5e] & 0xfffffffe;
(*param_1)[0x5e] = (*param_1)[0x5e] | 2;
(*param_1)[0x61] = (*param_1)[0x61] & 0xffffffbf;
iVar5 = 0x32;
(*param_1)[0x4c] = 0x11800ec;
(*param_1)[0x4d] = 0x3011111;
(*param_1)[0x4e] = 0x1201000;
(*param_1)[0x4f] = 4;
(*param_1)[0x50] = 0xcb732020;
(*param_1)[0x51] = 0xb19;
(*param_1)[0x54] = 0x4e2;
(*param_1)[0x53] = 0;
(*param_1)[0x58] = 0x16334;
(*param_1)[0x4c] = (*param_1)[0x4c] | 0x10000;
(*param_1)[0x4c] = (*param_1)[0x4c] & 0xfffeffff;
(*param_1)[0x4c] = (*param_1)[0x4c] | 0x20000;
(*param_1)[0x4e] = (*param_1)[0x4e] | 0x10000;
do {
puVar12 = *param_1;
uVar4 = puVar12[0x59];
if ((uVar4 & 1) != 0) {
piVar6 = (int *)(puVar12[0x59] & 0x7000000);
if (piVar6 == (int *)0x0) {
puVar12[0x61] = puVar12[0x61] | 0x40;
goto LAB_8f60add4;
}
dprintf((byte *)s_CDC_error_set_during_calibration_8f65c3ac,piVar6,uVar4,puVar12);
goto LAB_8f60ac30;
}
FUN_8f6104a8(1);
iVar5 = iVar5 + -1;
} while (iVar5 != 0);
dprintf((byte *)s_Error__Calibration_done_in_CDC_s_8f65c37c,extraout_r1_02,uVar4,puVar12);
}
}
}
LAB_8f60ac30:
piVar6 = (int *)0x1;
LAB_8f60ac3c:
if (DAT_8f6880c0 != 0) {
uStack_4b6 = 1;
uStack_4c0 = 0x15;
local_4a4 = 1;
local_4b8 = 1;
local_484 = 1;
local_4bc = 0;
local_4b7 = 0;
local_48c = pcVar3;
local_488 = uVar16;
FUN_8f609784(param_1,(int *)&uStack_4c0);
}
FUN_8f636758((int)pcVar3);
iVar5 = DAT_8f69d118;
param_1[3] = (uint *)0x0;
*(undefined *)(param_1[0xc] + 2) = 1;
if (local_2c == iVar5) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(piVar6,iVar5,(int *)0x1);
LAB_8f60a9f4:
piVar6 = (int *)((ulonglong)uVar2 >> 0x20);
local_54c = (uint)uVar2;
if (local_54c != 0) {
uVar8 = 0;
FUN_8f60b81c(param_1,(int *)param_2,0);
piVar6 = extraout_r1_00;
}
if (local_568 == 0x10) {
DAT_8f6880c0 = 1;
dprintf((byte *)s_WARNING__All_phase_passed_The_se_8f65c404,piVar6,uVar8,1);
}
else if (local_568 == 0) {
dprintf((byte *)s_Failed_to_get_tuned_phase_8f65c470,piVar6,uVar8,uVar14);
goto LAB_8f60ac30;
}
FUN_8f636968(local_42c,0,0x400);
FUN_8f636968(local_500,0,0x40);
if (local_544[1] == 0) {
uVar4 = local_568;
if (local_568 < 0x10) {
uVar4 = local_544[local_568];
}
if (uVar4 == 0xf) {
bVar1 = true;
}
else {
bVar1 = false;
}
}
else {
bVar1 = false;
}
uVar4 = local_568;
uVar14 = local_568;
if (local_568 != 0) {
uVar8 = 1;
local_42c[0] = local_544[1];
local_500[0] = 1;
if (local_568 == 1) {
uVar4 = 0;
}
else {
puVar13 = local_544 + 1;
iVar5 = 1;
uVar4 = 0;
do {
uVar14 = local_544[1] + 1;
puVar13 = puVar13 + 1;
local_544[1] = *puVar13;
if (uVar14 != local_544[1]) {
uVar4 = uVar4 + 1;
iVar5 = 0;
}
uVar14 = local_500[0];
if (uVar8 == local_568) break;
iVar15 = iVar5 + uVar4 * 0x10;
uVar8 = uVar8 + 1;
iVar5 = iVar5 + 1;
uVar14 = local_500[uVar4];
local_42c[iVar15] = local_544[1];
local_500[uVar4] = uVar14 + 1;
uVar14 = local_500[0];
} while (local_568 != uVar8);
}
}
if (bVar1) {
uVar8 = local_500[uVar4];
if ((uVar8 < 0x10) && (local_42c[uVar8 + uVar4 * 0x10] = local_42c[0], 1 < uVar14)) {
puVar13 = local_42c;
uVar9 = 1;
do {
if (uVar9 == 0x10 - uVar8) break;
puVar13 = puVar13 + 1;
uVar9 = uVar9 + 1;
puVar13[uVar4 * 0x10 + uVar8] = *puVar13;
} while (uVar9 != uVar14);
}
uVar8 = uVar8 + uVar14;
uVar14 = 0;
local_500[uVar4] = uVar8;
local_500[0] = 0;
}
uVar9 = 0;
puVar13 = local_500;
uVar8 = 0;
uVar10 = 0;
while( true ) {
if (uVar8 < uVar14) {
uVar9 = uVar10;
}
uVar10 = uVar10 + 1;
if (uVar8 < uVar14) {
uVar8 = uVar14;
}
if (uVar4 < uVar10) break;
puVar13 = puVar13 + 1;
uVar14 = *puVar13;
}
uVar4 = uVar8 * 3 >> 2;
if (uVar4 != 0) {
uVar4 = uVar4 - 1;
}
iVar5 = uVar4 + uVar9 * 0x10;
uVar4 = local_42c[iVar5];
if ((int)uVar4 < 0) {
dprintf((byte *)s_Failed_in_selecting_the_tuning_p_8f65c448,(int *)puVar13,uVar10,
auStack_28 + iVar5 * 4);
piVar6 = (int *)0x1;
}
else {
piVar6 = (int *)FUN_8f60a26c((int *)param_1,uVar4);
if (piVar6 == (int *)0x0) {
*(char *)((int)param_1[0xc] + 10) = (char)uVar4;
}
else {
piVar6 = (int *)0x0;
}
}
goto LAB_8f60ac3c;
}
void FUN_8f60aff0(int param_1)
{
int *piVar1;
uint uVar2;
piVar1 = DAT_8f69d118;
uVar2 = *(uint *)(**(int **)(param_1 + 0x30) + 0x78) & 0xfffffffe;
*(uint *)(**(int **)(param_1 + 0x30) + 0x78) = uVar2;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1,uVar2,piVar1);
}
void FUN_8f60b038(uint **param_1,int *param_2,int *param_3)
{
int iVar1;
undefined8 uVar2;
undefined2 local_68;
int local_64;
undefined local_5f;
undefined2 local_5e;
int local_5c;
int *local_1c;
local_1c = DAT_8f69d118;
FUN_8f636968((uint *)&local_68,0,0x48);
local_68 = 0xd;
local_64 = *param_2 << 0x10;
local_5f = 0;
local_5e = 1;
uVar2 = FUN_8f609784(param_1,(int *)&local_68);
iVar1 = (int)uVar2;
if (iVar1 == 0) {
if (local_5c < 0) {
iVar1 = 1;
}
else {
*param_3 = local_5c;
}
}
if (local_1c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar1,(int)((ulonglong)uVar2 >> 0x20),local_1c);
}
return;
}
void FUN_8f60b0d0(uint **param_1,int *param_2,int param_3,int param_4,int param_5)
{
int *extraout_r1;
int *extraout_r1_00;
int *extraout_r1_01;
int **ppiVar1;
undefined4 uVar2;
uint uVar3;
int iVar4;
undefined8 uVar5;
int *local_74;
undefined2 local_70;
uint local_6c;
undefined local_67;
undefined2 local_66;
int *local_24;
local_24 = DAT_8f69d118;
FUN_8f636968((uint *)&local_70,0,0x48);
local_70 = 6;
local_67 = 0;
uVar2 = 2;
local_66 = 2;
uVar3 = local_6c;
local_6c = local_6c | param_5 << 8 | param_4 << 0x10 | param_3 << 0x18;
uVar5 = FUN_8f609784(param_1,(int *)&local_70);
iVar4 = (int)uVar5;
if (iVar4 == 0) {
ppiVar1 = &local_74;
uVar5 = FUN_8f60b038(param_1,param_2,(int *)ppiVar1);
iVar4 = (int)uVar5;
if (iVar4 == 0) {
uVar3 = (uint)((int)local_74 << 0x13) >> 0x1c;
if (uVar3 != 4) {
dprintf((byte *)s_Switch_cmd_failed__Card_not_in_t_8f65c5e4,local_74,ppiVar1,uVar3);
iVar4 = 1;
}
if (((uint)local_74 & 0x80) != 0) {
dprintf((byte *)s_Switch_cmd_failed__Switch_Error__8f65c614,local_74,ppiVar1,uVar3);
iVar4 = 1;
local_74 = extraout_r1_01;
}
}
else {
dprintf((byte *)s_Get_card_status_failed_8f65c5cc,(int *)((ulonglong)uVar5 >> 0x20),ppiVar1,
uVar2);
local_74 = extraout_r1_00;
}
}
else {
dprintf((byte *)s_CMD6_send_failed_8f65c5b8,(int *)((ulonglong)uVar5 >> 0x20),uVar3,uVar2);
local_74 = extraout_r1;
}
if (local_24 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar4,local_74,local_24);
}
return;
}
void FUN_8f60b1e8(uint **param_1,int *param_2,int param_3)
{
int *piVar1;
int *extraout_r1;
int *piVar2;
undefined4 uVar3;
undefined4 uVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
uVar4 = 0xb7;
uVar3 = 3;
uVar5 = FUN_8f60b0d0(param_1,param_2,3,0xb7,param_3);
piVar2 = (int *)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 != 0) {
dprintf((byte *)s_Switch_cmd_failed_8f65c638,piVar2,uVar3,uVar4);
piVar2 = extraout_r1;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,piVar2,piVar1);
}
void FUN_8f60b244(uint **param_1,int *param_2)
{
int *piVar1;
undefined4 extraout_r1;
undefined4 uVar2;
undefined4 uVar3;
uint uVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
uVar2 = 3;
uVar3 = 0xb3;
uVar4 = *(byte *)((int)param_1[0x16] + 0xb3) & 0xfffffff8 | (uint)param_2;
uVar5 = FUN_8f60b0d0(param_1,(int *)(param_1 + 0xe),3,0xb3,uVar4);
if ((int)uVar5 == 0) {
*(char *)((int)param_1[0x16] + 0xb3) = (char)uVar4;
}
else {
dprintf((byte *)s_Failed_to_switch_partition_to_ty_8f65c64c,param_2,uVar2,uVar3);
uVar5 = CONCAT44(extraout_r1,1);
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),piVar1);
}
void FUN_8f60b2cc(uint **param_1,int param_2)
{
undefined4 extraout_r1;
undefined4 uVar1;
undefined4 uVar2;
undefined8 uVar3;
undefined2 local_68;
int local_64;
undefined2 local_5e;
int *local_1c;
uVar1 = 0x48;
local_64 = param_2 << 0x10;
local_1c = DAT_8f69d118;
FUN_8f636968((uint *)&local_68,0,0x48);
uVar2 = 0x37;
local_68 = 0x37;
local_5e = 1;
uVar3 = FUN_8f609784(param_1,(int *)&local_68);
if ((int)uVar3 != 0) {
dprintf((byte *)s_Failed_Sending_CMD55_8f65c674,(int *)((ulonglong)uVar3 >> 0x20),uVar1,uVar2);
uVar3 = CONCAT44(extraout_r1,1);
}
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),local_1c);
}
void FUN_8f60b354(uint param_1,int *param_2,undefined4 param_3)
{
int *piVar1;
int *extraout_r1;
int *extraout_r1_00;
int *extraout_r1_01;
int *extraout_r1_02;
int *extraout_r1_03;
int *extraout_r1_04;
int *extraout_r1_05;
uint uVar2;
uint uVar3;
piVar1 = DAT_8f69d118;
if ((int)param_1 < 0) {
dprintf((byte *)s_Attempting_to_read_or_write_beyo_8f65c68c,param_2,param_3,DAT_8f69d118);
uVar2 = 1;
param_2 = extraout_r1_04;
}
else if ((param_1 & 0x40000000) == 0) {
if ((param_1 & 0x20000000) == 0) {
if ((param_1 & 0x4000000) == 0) {
if ((param_1 & 0x100000) == 0) {
uVar2 = param_1 & 0x80000;
if (uVar2 == 0) {
uVar3 = (param_1 << 0x13) >> 0x1c;
if (uVar3 != 4) {
dprintf((byte *)s_MMC_card_is_not_in_TRAN_state_8f65c7c0,param_2,0,uVar3);
uVar2 = 1;
param_2 = extraout_r1;
}
}
else {
dprintf((byte *)s_A_generic_Device_error_8f65c7a8,param_2,uVar2,DAT_8f69d118);
uVar2 = 1;
param_2 = extraout_r1_05;
}
}
else {
dprintf((byte *)s_Device_error_occurred__which_is_n_8f65c764,param_2,param_3,DAT_8f69d118)
;
uVar2 = 1;
param_2 = extraout_r1_03;
}
}
else {
dprintf((byte *)s_Attempt_to_program_a_write_prote_8f65c738,param_2,param_3,DAT_8f69d118);
uVar2 = 1;
param_2 = extraout_r1_00;
}
}
else {
dprintf((byte *)s_The_transferred_bytes_does_not_m_8f65c700,param_2,param_3,DAT_8f69d118);
uVar2 = 1;
param_2 = extraout_r1_02;
}
}
else {
dprintf((byte *)s_The_misaligned_address_did_not_m_8f65c6c4,param_2,param_3,DAT_8f69d118);
uVar2 = 1;
param_2 = extraout_r1_01;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,param_2,piVar1);
}
void FUN_8f60b450(uint **param_1)
{
int *piVar1;
uint extraout_r1;
undefined4 uVar2;
undefined4 uVar3;
ulonglong uVar4;
undefined2 local_60;
int local_5c;
undefined local_57;
undefined2 local_56;
uint local_54;
int *local_14;
local_14 = DAT_8f69d118;
FUN_8f636968((uint *)&local_60,0,0x48);
uVar2 = 0;
local_60 = 0xc;
local_5c = (int)param_1[0xe] << 0x10;
local_57 = 0;
uVar3 = 1;
local_56 = 1;
uVar4 = FUN_8f609784(param_1,(int *)&local_60);
piVar1 = (int *)(uVar4 >> 0x20);
if ((int)uVar4 == 0) {
uVar4 = FUN_8f60b354(local_54,piVar1,uVar2);
}
else {
dprintf((byte *)s_Failed_to_send_stop_command_8f65c7e0,piVar1,uVar2,uVar3);
uVar4 = uVar4 & 0xffffffff | (ulonglong)extraout_r1 << 0x20;
}
if (local_14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)(uVar4 >> 0x20),local_14);
}
void FUN_8f60b4ec(uint **param_1,int *param_2)
{
int *piVar1;
int iVar2;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 uVar3;
undefined4 uVar4;
piVar1 = DAT_8f69d118;
uVar3 = 3;
uVar4 = 0xb9;
iVar2 = FUN_8f60b0d0(param_1,param_2,3,0xb9,1);
if (iVar2 == 0) {
param_1[2] = (uint *)0x1;
FUN_8f6095e4((int *)param_1,(int *)0x1);
uVar3 = extraout_r1;
}
else {
dprintf((byte *)s_Switch_cmd_returned_failure__d_8f65c800,(int *)0x3d5,uVar3,uVar4);
uVar3 = extraout_r1_00;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,uVar3,piVar1);
}
void FUN_8f60b568(uint **param_1,int **param_2)
{
int *piVar1;
uint uVar2;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 uVar3;
int *piVar4;
piVar1 = DAT_8f69d118;
uVar3 = 6;
piVar4 = DAT_8f69d118;
uVar2 = FUN_8f60b1e8(param_1,(int *)param_2,6);
if ((uVar2 & 0xff) == 0) {
param_1[2] = (uint *)&DAT_00000004;
FUN_8f6095e4((int *)param_1,(int *)&DAT_00000004);
uVar3 = extraout_r1;
}
else {
dprintf((byte *)s_Failure_to_set_DDR_mode_for_Card_8f65c820,*param_2,uVar3,piVar4);
uVar3 = extraout_r1_00;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2 & 0xff,uVar3,piVar1);
}
void FUN_8f60b5e0(uint **param_1,uint **param_2)
{
uint *puVar1;
int *in_lr;
undefined8 uVar2;
undefined2 local_68;
undefined local_60;
undefined local_5f;
undefined2 local_5e;
undefined4 local_4c;
uint *local_34;
undefined4 local_2c;
int *local_1c;
local_1c = DAT_8f69d118;
puVar1 = (uint *)FUN_8f6366a8((int *)0x40,0x200);
*param_2 = puVar1;
if (puVar1 == (uint *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_mmc_sdhci_c_8f65c84c,0x2ad);
puVar1 = *param_2;
}
FUN_8f636968(puVar1,0,4);
FUN_8f636968((uint *)&local_68,0,0x48);
local_34 = *param_2;
local_5f = 0;
local_5e = 1;
local_2c = 1;
local_60 = 1;
local_4c = 1;
local_68 = 8;
uVar2 = FUN_8f609784(param_1,(int *)&local_68);
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),local_1c);
}
void FUN_8f60b6bc(uint **param_1,int **param_2,int param_3)
{
int *piVar1;
int iVar2;
int *extraout_r1;
int *piVar3;
int *extraout_r1_00;
int *extraout_r1_01;
int *extraout_r1_02;
int iVar4;
undefined4 uVar5;
undefined4 uVar6;
uint *puVar7;
undefined8 uVar8;
piVar1 = DAT_8f69d118;
iVar4 = param_3;
piVar3 = DAT_8f69d118;
iVar2 = FUN_8f60b1e8(param_1,(int *)param_2,param_3);
if (iVar2 == 0) {
uVar5 = 3;
uVar6 = 0xb9;
iVar2 = FUN_8f60b0d0(param_1,(int *)param_2,3,0xb9,2);
if (iVar2 == 0) {
FUN_8f6095e4((int *)param_1,(int *)0x3);
puVar7 = (uint *)(uint)*(byte *)(param_1 + 0xb);
if (((puVar7 != (uint *)0x0) &&
(puVar7 = (uint *)((int)param_2[6] + -3), puVar7 < (uint *)0x2)) &&
(puVar7 = (uint *)(uint)*(byte *)(param_2[8] + 0x31),
(*(byte *)(param_2[8] + 0x31) & 0xc0) != 0)) {
param_1[2] = (uint *)0x3;
FUN_8f60a6b0((int *)param_1);
puVar7 = param_1[0xc];
FUN_8f60354c((int *)(uint)*(byte *)((int)puVar7 + 0xb),(int *)0x17d78400);
}
uVar8 = FUN_8f60a7b0(param_1,(uint *)param_2,param_3);
piVar3 = (int *)((ulonglong)uVar8 >> 0x20);
iVar2 = (int)uVar8;
if (iVar2 != 0) {
dprintf((byte *)s_Tuning_for_hs200_failed_8f65c8a8,piVar3,param_3,puVar7);
piVar3 = extraout_r1_01;
}
if (param_1[2] == (uint *)0x3) {
param_1[2] = (uint *)0x2;
FUN_8f60a6b0((int *)param_1);
FUN_8f60354c((int *)(uint)*(byte *)((int)param_1[0xc] + 0xb),(int *)0xb71b000);
piVar3 = extraout_r1_02;
}
else {
param_1[2] = (uint *)0x2;
}
}
else {
dprintf((byte *)s_Switch_cmd_returned_failure__d_8f65c800,(int *)0x375,uVar5,uVar6);
piVar3 = extraout_r1;
}
}
else {
dprintf((byte *)s_Failure_to_set_wide_bus_for_Card_8f65c87c,*param_2,iVar4,piVar3);
piVar3 = extraout_r1_00;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,piVar3,piVar1);
}
void FUN_8f60b81c(uint **param_1,int *param_2,uint param_3)
{
int *piVar1;
undefined4 uVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
if (param_2[6] - 3U < 2) {
if (((int)(uint)*(byte *)(param_2[8] + 0xc5) >> (param_3 & 0xff) & 1U) != 0) {
uVar3 = FUN_8f60b0d0(param_1,param_2,3,0xb9,param_3 << 4 | 2);
param_2 = (int *)((ulonglong)uVar3 >> 0x20);
if ((int)uVar3 != 0) goto LAB_8f60b844;
}
uVar2 = 1;
}
else {
LAB_8f60b844:
uVar2 = 0;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,param_2,piVar1);
}
return;
}
void FUN_8f60b8a4(uint **param_1,int **param_2,int *param_3)
{
int *piVar1;
int iVar2;
undefined4 extraout_r1;
uint extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 extraout_r1_03;
undefined4 extraout_r1_04;
int *piVar3;
undefined4 uVar4;
uint *puVar5;
ulonglong uVar6;
piVar1 = DAT_8f69d118;
if (param_3 == (int *)0x2) {
piVar3 = DAT_8f69d118;
iVar2 = FUN_8f60b6bc(param_1,param_2,2);
if (iVar2 == 0) {
param_1[2] = (uint *)0x0;
FUN_8f6095e4((int *)param_1,(int *)0x0);
iVar2 = FUN_8f60b4ec(param_1,(int *)param_2);
if (iVar2 == 0) {
iVar2 = FUN_8f60b568(param_1,param_2);
if (iVar2 == 0) {
uVar4 = 0xb9;
iVar2 = FUN_8f60b0d0(param_1,(int *)param_2,3,0xb9,3);
if (iVar2 == 0) {
param_1[2] = (uint *)0x3;
FUN_8f6095e4((int *)param_1,(int *)0x3);
FUN_8f60a6b0((int *)param_1);
puVar5 = param_1[0xc];
FUN_8f60354c((int *)(uint)*(byte *)((int)puVar5 + 0xb),(int *)0x17d78400);
uVar6 = FUN_8f60a7b0(param_1,(uint *)param_2,2);
if ((int)uVar6 != 0) {
dprintf((byte *)s_Tuning_for_hs400_failed_8f65c988,(int *)(uVar6 >> 0x20),param_3,
puVar5);
uVar6 = uVar6 & 0xffffffff | (ulonglong)extraout_r1_00 << 0x20;
}
}
else {
dprintf((byte *)s_Switch_cmd_returned_failure__s___8f65c964,
(int *)s_mmc_set_hs400_mode_8f65c524,0x425,uVar4);
uVar6 = CONCAT44(extraout_r1_04,iVar2);
}
}
else {
dprintf((byte *)s_Failure_setting_DDR_mode__s__d_8f65c944,
(int *)s_mmc_set_hs400_mode_8f65c524,0x41c,piVar3);
uVar6 = CONCAT44(extraout_r1_03,iVar2);
}
}
else {
dprintf((byte *)s_Error_adjusting_interface_speed__8f65c91c,
(int *)s_mmc_set_hs400_mode_8f65c524,0x414,piVar3);
uVar6 = CONCAT44(extraout_r1_01,iVar2);
}
}
else {
dprintf((byte *)s_Failure_Setting_HS200_mode__s__d_8f65c8f8,
(int *)s_mmc_set_hs400_mode_8f65c524,0x405,piVar3);
uVar6 = CONCAT44(extraout_r1_02,iVar2);
}
}
else {
dprintf((byte *)s_Bus_width_is_not_8_bit__cannot_s_8f65c8c4,param_3,param_3,DAT_8f69d118);
uVar6 = CONCAT44(extraout_r1,1);
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar6,(int)(uVar6 >> 0x20),piVar1);
}
void FUN_8f60ba44(uint **param_1,int *param_2)
{
int *extraout_r1;
int *extraout_r1_00;
int *extraout_r1_01;
int *piVar1;
int *extraout_r1_02;
int *extraout_r1_03;
int *extraout_r1_04;
int *extraout_r1_05;
undefined4 uVar2;
uint uVar3;
int iVar4;
char cVar5;
undefined8 uVar6;
undefined2 local_78;
undefined4 local_74;
undefined local_6f;
undefined2 local_6e;
uint local_6c;
int *local_2c;
uVar2 = 0x48;
cVar5 = '\x03';
local_2c = DAT_8f69d118;
FUN_8f636968((uint *)&local_78,0,0x48);
uVar3 = 0;
*param_2 = 0;
do {
local_78 = 8;
local_74 = 0x1aa;
local_6f = 0;
local_6e = 0x80;
uVar6 = FUN_8f609784(param_1,(int *)&local_78);
if ((int)uVar6 != 0) {
dprintf((byte *)s_The_response_for_CMD8_does_not_m_8f65c9a4,(int *)((ulonglong)uVar6 >> 0x20),
uVar2,uVar3);
uVar2 = 1;
piVar1 = extraout_r1_05;
goto LAB_8f60bb6c;
}
if (local_6c == 0x1aa) goto LAB_8f60bae4;
cVar5 = cVar5 + -1;
uVar3 = local_6c;
FUN_8f6104a8(1);
} while (cVar5 != '\0');
uVar2 = 0x1aa;
if (local_6c == 0x1aa) {
LAB_8f60bae4:
cVar5 = '\x14';
do {
uVar6 = FUN_8f60b2cc(param_1,*param_2);
iVar4 = (int)uVar6;
if (iVar4 != 0) {
dprintf((byte *)s_Failed_sending_App_command_8f65ca00,(int *)((ulonglong)uVar6 >> 0x20),
uVar2,iVar4);
uVar2 = 1;
piVar1 = extraout_r1_02;
goto LAB_8f60bb6c;
}
local_78 = 0x29;
local_74 = 0x40ff8000;
local_6f = 0;
local_6e = 8;
uVar6 = FUN_8f609784(param_1,(int *)&local_78);
piVar1 = (int *)((ulonglong)uVar6 >> 0x20);
if ((int)uVar6 != 0) {
dprintf((byte *)s_Failure_sending_ACMD41_8f65ca1c,piVar1,uVar2,iVar4);
uVar2 = 1;
piVar1 = extraout_r1_03;
goto LAB_8f60bb6c;
}
if ((int)local_6c < 0) {
local_6c = local_6c & 0x40000000;
if (local_6c != 0) {
local_6c = 1;
}
param_2[6] = local_6c;
goto LAB_8f60bb90;
}
FUN_8f6104a8(0x32);
cVar5 = cVar5 + -1;
} while (cVar5 != '\0');
piVar1 = extraout_r1_00;
if ((int)local_6c < 0) {
LAB_8f60bb90:
uVar2 = 0;
}
else {
dprintf((byte *)s_Error__ACMD41_response_timed_out_8f65ca34,extraout_r1_00,uVar2,local_6c);
uVar2 = 1;
piVar1 = extraout_r1_01;
}
}
else {
dprintf((byte *)s_Error__CMD8_response_timed_out_8f65c9e0,extraout_r1,0x1aa,local_6c);
uVar2 = 1;
piVar1 = extraout_r1_04;
}
LAB_8f60bb6c:
if (local_2c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,piVar1,local_2c);
}
void FUN_8f60bbec(uint **param_1,int *param_2,int param_3)
{
undefined4 extraout_r1;
undefined4 uVar1;
undefined8 uVar2;
undefined2 local_68;
undefined4 local_64;
undefined local_5f;
undefined2 local_5e;
int *local_1c;
uVar1 = 0x48;
local_1c = DAT_8f69d118;
FUN_8f636968((uint *)&local_68,0,0x48);
uVar2 = FUN_8f60b2cc(param_1,*param_2);
if ((int)uVar2 == 0) {
local_5f = 0;
if (param_3 == 1) {
local_64 = 2;
}
else {
local_64 = 0;
}
local_68 = 6;
local_5e = 1;
uVar2 = FUN_8f609784(param_1,(int *)&local_68);
if ((int)uVar2 != 0) {
uVar2 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),1);
}
}
else {
dprintf((byte *)s_Failed_sending_App_command_8f65ca00,(int *)((ulonglong)uVar2 >> 0x20),uVar1,
(int)uVar2);
uVar2 = CONCAT44(extraout_r1,1);
}
if (local_1c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),local_1c);
}
return;
}
void FUN_8f60bc9c(uint **param_1)
{
int iVar1;
undefined4 extraout_r1;
undefined4 uVar2;
undefined8 uVar3;
undefined2 local_68;
undefined4 local_64;
undefined local_60;
undefined2 local_5e;
undefined4 local_4c;
undefined *local_34;
undefined4 local_30;
undefined4 local_2c;
int *local_1c;
local_1c = DAT_8f69d118;
FUN_8f636968((uint *)&local_68,0,0x48);
local_64 = 0x80fffff1;
local_34 = &DAT_8f688100;
local_68 = 6;
local_5e = 1;
local_4c = 1;
local_60 = 1;
local_2c = 1;
local_30 = 0x40;
uVar3 = FUN_8f609784(param_1,(int *)&local_68);
uVar2 = (undefined4)((ulonglong)uVar3 >> 0x20);
iVar1 = (int)uVar3;
if (iVar1 == 0) {
FUN_8f6095e4((int *)param_1,(int *)0x1);
uVar2 = extraout_r1;
}
else {
iVar1 = 1;
}
if (local_1c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar1,uVar2,local_1c);
}
return;
}
void FUN_8f60bd48(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
undefined *puVar1;
byte bVar2;
longlong lVar3;
uint **ppuVar4;
uint uVar5;
undefined *puVar6;
uint **ppuVar7;
uint *puVar8;
undefined4 extraout_r1;
int *extraout_r1_00;
int *extraout_r1_01;
int *extraout_r1_02;
int *extraout_r1_03;
int *extraout_r1_04;
int *extraout_r1_05;
int *extraout_r1_06;
int *extraout_r1_07;
int *extraout_r1_08;
int *extraout_r1_09;
uint uVar9;
int *extraout_r1_10;
int *extraout_r1_11;
int *extraout_r1_12;
int *extraout_r1_13;
int *extraout_r1_14;
int *extraout_r1_15;
int *extraout_r1_16;
int *extraout_r1_17;
int *extraout_r1_18;
int *extraout_r1_19;
int *extraout_r1_20;
int *extraout_r1_21;
int *extraout_r1_22;
int *extraout_r1_23;
int *extraout_r1_24;
byte bVar10;
uint uVar11;
uint *puVar12;
uint *puVar13;
int *piVar14;
uint *puVar15;
uint **ppuVar16;
int iVar17;
int iVar18;
byte *pbVar19;
int *in_lr;
uint uVar20;
bool bVar21;
undefined8 uVar22;
ulonglong uVar23;
uint local_108;
int local_104;
uint local_f8;
uint local_f4;
uint local_f0;
int local_ec;
uint local_e8;
uint local_e4;
int local_e0;
uint local_dc;
uint local_d8;
int local_d4;
uint local_d0;
uint local_cc;
uint local_c8;
uint local_c4;
uint local_c0;
byte local_bc;
uint local_b8;
uint local_b4;
byte bStack_b1;
byte local_b0 [5];
undefined local_ab;
undefined local_aa;
uint local_a8;
uint local_a4;
uint local_a0;
int local_9c;
byte local_85;
uint local_84;
uint local_7c;
undefined2 local_78;
uint *local_74;
undefined local_70;
undefined local_6f;
undefined2 local_6e;
undefined4 local_6c;
uint local_68;
uint local_60;
undefined4 local_5c;
undefined *local_44;
undefined4 local_40;
undefined4 local_3c;
int *local_2c;
undefined auStack_28 [4];
local_2c = DAT_8f69d118;
piVar14 = DAT_8f69d118;
uVar22 = FUN_8f63666c(0x118,param_2);
ppuVar7 = (uint **)uVar22;
if (ppuVar7 == (uint **)0x0) {
dprintf((byte *)s_Error_allocating_mmc_device_8f65ca58,(int *)((ulonglong)uVar22 >> 0x20),
param_3,piVar14);
piVar14 = extraout_r1_21;
goto LAB_8f60bf90;
}
if (param_1 == (undefined4 *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_mmc_sdhci_c_8f65c84c,0x6d6);
}
ppuVar16 = ppuVar7 + 0xe;
FUN_8f63685c(ppuVar7 + 0x3e,param_1,0x1c);
FUN_8f636968((uint *)ppuVar16,0,0xc0);
FUN_8f626f38(&local_f8,0,1);
ppuVar7[6] = &local_f8;
*ppuVar7 = ppuVar7[0x40];
*(undefined *)((int)ppuVar7 + 0x2b) = *(undefined *)(ppuVar7 + 0x44);
*(undefined *)(ppuVar7 + 0xb) = *(undefined *)((int)ppuVar7 + 0x111);
ppuVar4 = (uint **)FUN_8f63666c(0x14,ppuVar7[0x40]);
if (ppuVar4 == (uint **)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_mmc_sdhci_c_8f65c84c,0x459);
}
bVar10 = *(byte *)(ppuVar7 + 0x3e);
piVar14 = (int *)(uint)bVar10;
puVar8 = ppuVar7[0x3f];
bVar2 = *(byte *)((int)ppuVar7 + 0x112);
uVar11 = (uint)bVar2;
*ppuVar4 = ppuVar7[0x41];
ppuVar4[1] = puVar8;
*(byte *)((int)ppuVar4 + 0xb) = bVar10;
*(byte *)(ppuVar4 + 3) = bVar2;
ppuVar4[4] = &local_f8;
ppuVar7[0xc] = (uint *)ppuVar4;
FUN_8f6034b0(piVar14);
FUN_8f60354c((int *)(uint)*(byte *)(ppuVar7 + 0x3e),(int *)ppuVar7[0x43]);
if (*(char *)(ppuVar7 + 0x3e) == '\x01') {
FUN_8f62634c(1,extraout_r1);
}
FUN_8f60a578((int *)ppuVar7,(int *)ppuVar4);
FUN_8f609fbc((int *)ppuVar7);
uVar5 = FUN_8f609520((int *)ppuVar7,400000);
puVar8 = (uint *)(uVar5 & 0xff);
if (puVar8 != (uint *)0x0) {
dprintf((byte *)s_Error_Initializing_MMC_host____u_8f65ca78,(int *)puVar8,uVar11,piVar14);
ppuVar7 = (uint **)0x0;
piVar14 = extraout_r1_09;
goto LAB_8f60bf90;
}
ppuVar7[0x15] = (uint *)0x0;
puVar12 = (uint *)0x48;
puVar15 = (uint *)0x40ff8000;
ppuVar7[0xf] = (uint *)0x40ff8000;
FUN_8f636968((uint *)&local_78,0,0x48);
local_78 = 0;
local_6f = 0;
local_6e = 0;
local_74 = puVar8;
uVar23 = FUN_8f609784(ppuVar7,(int *)&local_78);
if ((uVar23 & 0xff) == 0) {
iVar17 = 1000;
FUN_8f636968((uint *)&local_78,0,0x48);
puVar12 = ppuVar7[0xf];
puVar15 = (uint *)0x8;
local_6f = 0;
local_78 = 1;
local_6e = 8;
local_74 = puVar12;
do {
uVar22 = FUN_8f609784(ppuVar7,(int *)&local_78);
piVar14 = (int *)((ulonglong)uVar22 >> 0x20);
if ((int)uVar22 != 0) goto LAB_8f60bf10;
if ((int)local_6c < 0) {
ppuVar7[0xf] = local_6c;
if (((uint)local_6c & 0x40000000) == 0) {
ppuVar7[0x14] = (uint *)&DAT_00000004;
}
else {
ppuVar7[0x14] = (uint *)0x3;
}
goto LAB_8f60bf34;
}
puVar15 = local_6c;
FUN_8f6104a8(1);
iVar17 = iVar17 + -1;
} while (iVar17 != 0);
dprintf((byte *)s_Card_has_busy_status_set__Init_d_8f65cdb4,extraout_r1_00,puVar12,puVar15);
piVar14 = extraout_r1_01;
LAB_8f60bf10:
dprintf((byte *)s_Failure_getting_OCR_response_fro_8f65cc70,piVar14,puVar12,puVar15);
piVar14 = extraout_r1_02;
}
else {
dprintf((byte *)s_Failure_resetting_MMC_cards__8f65ca9c,(int *)(uVar23 >> 0x20),puVar12,puVar15)
;
piVar14 = extraout_r1_05;
}
dprintf((byte *)s_MMC_card_failed_to_respond__try_f_8f65cc9c,piVar14,puVar12,puVar15);
uVar22 = FUN_8f60ba44(ppuVar7,(int *)ppuVar16);
puVar8 = (uint *)uVar22;
if (puVar8 == (uint *)0x0) {
LAB_8f60bf34:
FUN_8f636968((uint *)&local_78,0,0x48);
local_74 = (uint *)0x0;
local_78 = 2;
puVar12 = (uint *)&DAT_00000004;
local_6f = 0;
local_6e = 4;
uVar22 = FUN_8f609784(ppuVar7,(int *)&local_78);
puVar8 = (uint *)uVar22;
if (puVar8 != (uint *)0x0) {
puVar15 = puVar8;
dprintf((byte *)s_Failure_getting_card_s_CID_numbe_8f65cccc,(int *)((ulonglong)uVar22 >> 0x20)
,puVar12,puVar8);
piVar14 = extraout_r1_03;
goto LAB_8f60bf84;
}
if (ppuVar7[0x14] < (uint *)0x2) {
pbVar19 = &bStack_b1;
uVar11 = 0x60;
local_b4 = (local_60 << 8) >> 0x10;
local_b8 = local_60 >> 0x18;
do {
uVar5 = uVar11 >> 5;
uVar20 = uVar11 + 7;
uVar9 = uVar11 & 0x1f;
uVar11 = uVar11 - 8;
bVar10 = (byte)((uint)(&local_6c)[uVar5] >> uVar9);
if (uVar5 < uVar20 >> 5) {
bVar10 = bVar10 | (byte)(local_60 << (0x20 - uVar9 & 0xff));
}
pbVar19 = pbVar19 + 1;
*pbVar19 = bVar10;
} while (uVar11 != 0x38);
local_ab = 0;
local_a4 = local_68 << 8 | (uint)local_6c >> 0x18;
local_9c = ((uint)((int)local_6c << 0xc) >> 0x18) + 2000;
}
else {
pbVar19 = &bStack_b1;
uVar11 = 0x60;
local_b4 = (local_60 << 8) >> 0x10;
local_b8 = local_60 >> 0x18;
do {
puVar1 = (undefined *)(uVar11 >> 5);
uVar5 = uVar11 & 0x1f;
puVar6 = (undefined *)(uVar11 + 7 >> 5);
bVar21 = puVar1 < puVar6;
uVar11 = uVar11 - 8;
if (bVar21) {
puVar6 = auStack_28 + (int)puVar6 * 4;
}
if (bVar21) {
puVar6 = *(undefined **)(puVar6 + -0x44);
}
bVar10 = (byte)((uint)(&local_6c)[(int)puVar1] >> uVar5);
if (bVar21) {
bVar10 = bVar10 | (byte)((int)puVar6 << (0x20 - uVar5 & 0xff));
}
pbVar19 = pbVar19 + 1;
*pbVar19 = bVar10;
} while (uVar11 != 0x30);
local_9c = ((uint)((int)local_6c << 0x10) >> 0x1c) + 0x7cd;
local_a4 = local_68 << 0x10 | (uint)local_6c >> 0x10;
local_68 = local_68 << 8;
}
local_a0 = (uint)((int)local_6c << 0x14) >> 0x1c;
local_a8 = local_68 >> 0x18;
local_aa = 0;
FUN_8f63685c(ppuVar7 + 0x1f,&local_b8,0x20);
FUN_8f636968((uint *)&local_78,0,0x48);
if (ppuVar7[0x14] < (uint *)0x2) {
puVar15 = (uint *)0x0;
local_74 = (uint *)0x0;
local_78 = 3;
puVar12 = (uint *)0x40;
local_6f = 0;
local_6e = 0x40;
uVar22 = FUN_8f609784(ppuVar7,(int *)&local_78);
if ((int)uVar22 != 0) goto LAB_8f60c0b8;
ppuVar7[0xe] = (uint *)(uint)local_6c._2_2_;
}
else {
ppuVar7[0xe] = (uint *)0x2;
local_78 = 3;
puVar12 = (uint *)0x0;
local_74 = (uint *)0x20000;
puVar15 = (uint *)0x40;
local_6f = 0;
local_6e = 0x40;
uVar22 = FUN_8f609784(ppuVar7,(int *)&local_78);
if ((int)uVar22 != 0) {
LAB_8f60c0b8:
puVar8 = (uint *)uVar22;
dprintf((byte *)s_Failure_getting_card_s_RCA__8f65ccf0,(int *)((ulonglong)uVar22 >> 0x20),
puVar12,puVar15);
piVar14 = extraout_r1_04;
goto LAB_8f60bf84;
}
}
FUN_8f636968((uint *)&local_78,0,0x48);
puVar12 = (uint *)0x0;
local_74 = (uint *)((int)ppuVar7[0xe] << 0x10);
local_78 = 9;
puVar15 = (uint *)&DAT_00000004;
local_6f = 0;
local_6e = 4;
uVar22 = FUN_8f609784(ppuVar7,(int *)&local_78);
puVar8 = (uint *)uVar22;
if (puVar8 != (uint *)0x0) {
dprintf((byte *)s_Failure_getting_card_s_CSD_infor_8f65cd10,(int *)((ulonglong)uVar22 >> 0x20)
,puVar12,puVar15);
piVar14 = extraout_r1_07;
goto LAB_8f60bf84;
}
FUN_8f63685c(ppuVar7 + 0x17,&local_6c,0x10);
FUN_8f636968((uint *)&local_78,0,0x48);
puVar8 = ppuVar7[0xe];
local_6f = 0;
local_78 = 7;
if (puVar8 == (uint *)0x0) {
local_6e = 0;
}
puVar12 = (uint *)((int)puVar8 << 0x10);
if (puVar8 != (uint *)0x0) {
puVar15 = ppuVar7[0x14];
puVar8 = puVar15;
if (puVar15 < (uint *)0x2) {
puVar8 = (uint *)0x2;
}
local_6e = SUB42(puVar8,0);
if ((uint *)0x1 < puVar15) {
local_6e = 1;
}
}
local_74 = puVar12;
puVar8 = (uint *)FUN_8f609784(ppuVar7,(int *)&local_78);
if (puVar8 != (uint *)0x0) {
puVar15 = puVar8;
dprintf((byte *)s_Failure_selecting_the_Card_with_R_8f65cd3c,(int *)ppuVar7[0xe],puVar12,
puVar8);
piVar14 = extraout_r1_08;
goto LAB_8f60bf84;
}
puVar12 = (uint *)0x1;
ppuVar7[0x15] = (uint *)0x1;
if (ppuVar7[0x14] < (uint *)0x2) {
uVar22 = FUN_8f60bc9c(ppuVar7);
puVar8 = (uint *)uVar22;
if (puVar8 == (uint *)0x0) goto LAB_8f60c30c;
puVar15 = puVar8;
dprintf((byte *)s_Failed_to_set_HS_for_SD_card_8f65cadc,(int *)((ulonglong)uVar22 >> 0x20),
puVar12,puVar8);
piVar14 = extraout_r1_11;
goto LAB_8f60bf84;
}
uVar22 = FUN_8f60b4ec(ppuVar7,(int *)ppuVar16);
puVar8 = (uint *)uVar22;
if (puVar8 != (uint *)0x0) {
puVar15 = puVar8;
dprintf((byte *)s_Error_adjusting_interface_speed__8f65cafc,(int *)((ulonglong)uVar22 >> 0x20)
,puVar12,puVar8);
piVar14 = extraout_r1_14;
goto LAB_8f60bf84;
}
LAB_8f60c30c:
if ((int)ppuVar7[0x14] - 3U < 2) {
uVar22 = FUN_8f60b5e0(ppuVar7,ppuVar7 + 0x16);
puVar8 = (uint *)uVar22;
if (puVar8 == (uint *)0x0) {
LAB_8f60c3fc:
puVar8 = ppuVar7[0x1a];
local_f8 = (uint)puVar8 >> 0x1e;
if (ppuVar7[0x14] < (uint *)0x2) {
if (local_f8 == 1) {
local_d4 = ((uint)((int)puVar8 << 0x10) >> 0x18) * 100;
local_d8 = (uint)*(ushort *)((int)ppuVar7 + 0x62) | ((uint)ppuVar7[0x19] & 0x3f) << 0x10
;
local_f0 = (uint)ppuVar7[0x19] >> 0x14;
local_bc = (byte)(((uint)((int)ppuVar7[0x17] << 0x12) >> 0x1f) << 1) | 8 |
(byte)(((uint)((int)ppuVar7[0x17] << 0x13) >> 0x1f) << 2);
local_d0 = (uint)(*(int *)(&DAT_8f65c4e4 + ((uint)((int)puVar8 << 9) >> 0x1c) * 4) *
*(int *)(&DAT_8f65c538 + ((uint)((int)puVar8 << 0xd) >> 0x1d) * 4)) /
10;
local_cc = (uint)(*(int *)(&DAT_8f65c558 + ((uint)puVar8 & 7) * 4) *
*(int *)(&DAT_8f65c578 + ((uint)((int)puVar8 << 0x19) >> 0x1c) * 4)) /
10;
ppuVar7[0x12] = (uint *)((local_d8 + 1) * 0x80000);
ppuVar7[0x13] = (uint *)(local_d8 + 1 >> 0xd);
local_ec = 0x200;
local_e8 = 0x200;
local_e4 = 2;
local_dc = 0;
local_c0 = 0;
}
else {
puVar12 = ppuVar7[0x17];
puVar15 = ppuVar7[0x19];
uVar11 = (uint)((int)puVar12 << 6) >> 0x1c;
local_f0 = (uint)puVar15 >> 0x14;
if (uVar11 - 9 < 3) {
local_ec = 1 << uVar11;
}
else {
local_ec = 0x200;
}
local_108 = (uint)((int)puVar15 << 0xc) >> 0x1c;
if (local_108 - 9 < 3) {
local_108 = 1 << local_108;
local_104 = (int)local_108 >> 0x1f;
}
else {
local_108 = 0x200;
local_104 = 0;
}
puVar13 = ppuVar7[0x18];
local_d8 = ((uint)puVar15 & 0x3ff) << 2 | (uint)puVar13 >> 0x1e;
iVar17 = *(int *)(&DAT_8f65c578 + ((uint)((int)puVar8 << 0x19) >> 0x1c) * 4);
local_dc = (uint)((int)puVar13 << 0xe) >> 0x1d;
iVar18 = *(int *)(&DAT_8f65c558 + ((uint)puVar8 & 7) * 4);
uVar11 = local_d8 + 1 << local_dc + 2;
lVar3 = (ulonglong)uVar11 * (ulonglong)local_108;
local_d4 = ((uint)((int)puVar8 << 0x10) >> 0x18) * 100;
local_e0 = ((uint)((int)puVar13 << 0x12) >> 0x19) + 1;
local_c0 = (uint)puVar13 & 0x7f;
local_bc = (byte)(((uint)((int)puVar13 << 0x11) >> 0x1f) << 3) |
(byte)(((uint)((int)puVar15 << 0x12) >> 0x1f) << 4) |
(byte)(((uint)((int)puVar15 << 0x11) >> 0x1f) << 5) |
(byte)(((uint)((int)puVar15 << 0x10) >> 0x1f) << 6) |
(byte)(((uint)((int)puVar12 << 10) >> 0x1f) << 7) |
(byte)((uint)puVar12 >> 0x1f) |
(byte)(((uint)((int)puVar12 << 0x12) >> 0x1f) << 1) |
(byte)(((uint)((int)puVar12 << 0x13) >> 0x1f) << 2);
local_e4 = (uint)((int)puVar12 << 3) >> 0x1d;
local_d0 = (uint)(*(int *)(&DAT_8f65c4e4 + ((uint)((int)puVar8 << 9) >> 0x1c) * 4) *
*(int *)(&DAT_8f65c538 + ((uint)((int)puVar8 << 0xd) >> 0x1d) * 4)) /
10;
ppuVar7[0x12] = (uint *)lVar3;
ppuVar7[0x13] = (uint *)(uVar11 * local_104 + (int)((ulonglong)lVar3 >> 0x20));
local_cc = (uint)(iVar18 * iVar17) / 10;
local_e8 = local_108;
}
}
else {
puVar13 = ppuVar7[0x19];
local_f4 = (uint)((int)puVar8 << 2) >> 0x1c;
puVar15 = ppuVar7[0x17];
puVar12 = ppuVar7[0x18];
local_d4 = ((uint)((int)puVar8 << 0x10) >> 0x18) * 100;
local_d8 = ((uint)puVar13 & 0x3ff) << 2 | (uint)puVar12 >> 0x1e;
local_bc = local_bc & 8 | (byte)(((uint)((int)puVar13 << 0x12) >> 0x1f) << 4) |
(byte)(((uint)((int)puVar13 << 0x11) >> 0x1f) << 5) |
(byte)(((uint)((int)puVar13 << 0x10) >> 0x1f) << 6) |
(byte)(((uint)((int)puVar15 << 10) >> 0x1f) << 7) |
(byte)((uint)puVar15 >> 0x1f) |
(byte)(((uint)((int)puVar15 << 0x12) >> 0x1f) << 1) |
(byte)(((uint)((int)puVar15 << 0x13) >> 0x1f) << 2);
local_ec = 1 << ((uint)((int)puVar15 << 6) >> 0x1c);
local_e4 = (uint)((int)puVar15 << 3) >> 0x1d;
local_f0 = (uint)puVar13 >> 0x14;
local_d0 = (uint)(*(int *)(&DAT_8f65c4e4 + ((uint)((int)puVar8 << 9) >> 0x1c) * 4) *
*(int *)(&DAT_8f65c538 + ((uint)((int)puVar8 << 0xd) >> 0x1d) * 4)) / 10;
local_e8 = 1 << ((uint)((int)puVar13 << 0xc) >> 0x1c);
local_c4 = (uint)((int)puVar12 << 0x16) >> 0x1b;
local_dc = (uint)((int)puVar12 << 0xe) >> 0x1d;
local_c8 = (uint)((int)puVar12 << 0x11) >> 0x1b;
local_c0 = (uint)puVar12 & 0x1f;
local_cc = 0;
if (local_d8 == 0xfff) {
puVar8 = ppuVar7[0x16];
uVar5 = (uint)*(byte *)((int)puVar8 + 0xd6) << 0x10 |
(uint)*(byte *)((int)puVar8 + 0xd7) << 0x18;
uVar11 = uVar5 | *(byte *)(puVar8 + 0x35) | (uint)*(byte *)((int)puVar8 + 0xd5) << 8;
ppuVar7[0x12] = (uint *)(uVar11 << 9);
ppuVar7[0x13] = (uint *)(((int)uVar11 >> 0x1f) << 9 | uVar5 >> 0x17);
}
else {
uVar11 = local_d8 + 1 << local_dc + 2;
lVar3 = (ulonglong)local_e8 * (ulonglong)uVar11;
ppuVar7[0x12] = (uint *)lVar3;
ppuVar7[0x13] =
(uint *)(uVar11 * ((int)local_e8 >> 0x1f) + (int)((ulonglong)lVar3 >> 0x20));
}
}
FUN_8f63685c(ppuVar7 + 0x27,&local_f8,0x40);
if ((int)ppuVar7[0x14] - 3U < 2) {
puVar8 = ppuVar7[0x16];
if (*(char *)((int)puVar8 + 0xaf) == '\0') {
iVar17 = (int)ppuVar7[0x33] * ((int)ppuVar7[0x35] + 1) + (int)ppuVar7[0x35] + 1;
puVar15 = (uint *)((int)ppuVar7[0x34] * iVar17 + iVar17);
}
else {
puVar15 = (uint *)((uint)*(byte *)(puVar8 + 0x38) << 10);
}
puVar12 = (uint *)(uint)*(ushort *)(ppuVar7 + 0x42);
ppuVar7[0x11] = puVar15;
puVar13 = (uint *)((uint)*(byte *)(puVar8 + 0x2a) * 0x3ef00);
ppuVar7[0x1d] = puVar13;
puVar15 = (uint *)(uint)*(byte *)((int)puVar8 + 0xde);
ppuVar7[0x1e] = puVar15;
if (puVar12 == (uint *)0x2) {
puVar15 = (uint *)(uint)*(byte *)(ppuVar7 + 9);
if (puVar15 == (uint *)0x0) goto LAB_8f60c750;
}
else if (puVar12 != (uint *)0x1) {
LAB_8f60c750:
puVar12 = (uint *)0x0;
}
uVar22 = FUN_8f6096fc((int *)ppuVar7,(int *)puVar12,puVar13);
if ((int)uVar22 != 0) {
dprintf((byte *)s_Failed_to_set_bus_width_for_host_8f65cb4c,
(int *)((ulonglong)uVar22 >> 0x20),puVar13,puVar15);
goto LAB_8f60c398;
}
if (((*(char *)(ppuVar7 + 0xb) == '\0') || (1 < (int)ppuVar7[0x14] - 3U)) ||
(puVar15 = (uint *)(uint)*(byte *)(ppuVar7[0x16] + 0x31),
(*(byte *)(ppuVar7[0x16] + 0x31) & 0xc0) == 0)) {
if (((*(char *)((int)ppuVar7 + 0x2a) == '\0') || (1 < (int)ppuVar7[0x14] - 3U)) ||
(puVar15 = (uint *)(uint)*(byte *)(ppuVar7[0x16] + 0x31),
(*(byte *)(ppuVar7[0x16] + 0x31) & 0x30) == 0)) {
puVar15 = (uint *)(uint)*(byte *)(ppuVar7 + 10);
if (((puVar15 == (uint *)0x0) ||
(puVar15 = (uint *)((int)ppuVar7[0x14] + -3), (uint *)0x1 < puVar15)) ||
(puVar15 = (uint *)(uint)*(byte *)(ppuVar7[0x16] + 0x31),
(*(byte *)(ppuVar7[0x16] + 0x31) & 0xc) == 0)) {
puVar8 = (uint *)FUN_8f60b4ec(ppuVar7,(int *)ppuVar16);
if (puVar8 == (uint *)0x0) {
uVar22 = FUN_8f60b1e8(ppuVar7,(int *)ppuVar16,(int)puVar12);
piVar14 = (int *)((ulonglong)uVar22 >> 0x20);
puVar8 = (uint *)uVar22;
if (puVar8 == (uint *)0x0) goto LAB_8f60c5ac;
dprintf((byte *)s_Failure_to_set_wide_bus_for_Card_8f65c87c,(int *)ppuVar7[0xe],
puVar12,puVar15);
piVar14 = extraout_r1_16;
}
else {
dprintf((byte *)s_Failure_to_enalbe_HS_mode_for_Ca_8f65cbd4,(int *)ppuVar7[0xe],
puVar13,puVar15);
piVar14 = extraout_r1_20;
puVar12 = puVar13;
}
}
else {
uVar22 = FUN_8f60b568(ppuVar7,(int **)ppuVar16);
piVar14 = (int *)((ulonglong)uVar22 >> 0x20);
puVar8 = (uint *)uVar22;
if (puVar8 == (uint *)0x0) goto LAB_8f60c5ac;
dprintf((byte *)s_Failure_to_set_DDR_mode_for_Card_8f65c820,(int *)ppuVar7[0xe],
puVar13,puVar15);
piVar14 = extraout_r1_22;
puVar12 = puVar13;
}
}
else {
uVar22 = FUN_8f60b6bc(ppuVar7,(int **)ppuVar16,(int)puVar12);
piVar14 = (int *)((ulonglong)uVar22 >> 0x20);
puVar8 = (uint *)uVar22;
if (puVar8 == (uint *)0x0) goto LAB_8f60c5ac;
dprintf((byte *)s_Failure_to_set_HS200_mode_for_Ca_8f65cba8,(int *)ppuVar7[0xe],
puVar12,puVar15);
piVar14 = extraout_r1_24;
}
}
else {
uVar22 = FUN_8f60b8a4(ppuVar7,(int **)ppuVar16,(int *)puVar12);
piVar14 = (int *)((ulonglong)uVar22 >> 0x20);
puVar8 = (uint *)uVar22;
if (puVar8 == (uint *)0x0) {
LAB_8f60c5ac:
ppuVar7[0x10] = (uint *)0x200;
if ((1 < (int)ppuVar7[0x14] - 3U) || (*(char *)((int)ppuVar7[0x16] + 0xa2) != '\0'))
goto LAB_8f60bf90;
puVar12 = (uint *)0x1;
puVar15 = (uint *)0xa2;
uVar22 = FUN_8f60b0d0(ppuVar7,(int *)ppuVar16,1,0xa2,1);
piVar14 = (int *)((ulonglong)uVar22 >> 0x20);
puVar8 = (uint *)uVar22;
if (puVar8 == (uint *)0x0) goto LAB_8f60bf90;
dprintf((byte *)s_Failed_to_enable_RST_n_FUNCTION_8f65cc28,piVar14,puVar12,puVar15);
piVar14 = extraout_r1_13;
}
else {
dprintf((byte *)s_Failure_to_set_HS400_mode_for_Ca_8f65cb7c,(int *)ppuVar7[0xe],
puVar12,puVar15);
piVar14 = extraout_r1_23;
}
}
}
else {
iVar17 = (int)ppuVar7[0x33] * ((int)ppuVar7[0x35] + 1) + (int)ppuVar7[0x35] + 1;
puVar13 = (uint *)((uint)((int)ppuVar7[0x37] << 0x1d) >> 0x1f);
puVar15 = (uint *)((int)ppuVar7[0x34] * iVar17 + iVar17);
ppuVar7[0x11] = puVar15;
puVar12 = puVar13;
uVar22 = FUN_8f60bbec(ppuVar7,(int *)ppuVar16,(int)puVar13);
puVar8 = (uint *)uVar22;
if (puVar8 == (uint *)0x0) {
uVar22 = FUN_8f6096fc((int *)ppuVar7,(int *)puVar13,puVar12);
piVar14 = (int *)((ulonglong)uVar22 >> 0x20);
puVar8 = (uint *)uVar22;
if (puVar8 == (uint *)0x0) goto LAB_8f60c5ac;
dprintf((byte *)s_Failed_to_set_bus_width_for_host_8f65cb4c,piVar14,puVar12,puVar15);
piVar14 = extraout_r1_19;
}
else {
dprintf((byte *)s_Failed_to_set_bus_width_for_the_c_8f65cc00,
(int *)((ulonglong)uVar22 >> 0x20),puVar12,puVar15);
piVar14 = extraout_r1_17;
}
}
}
else {
puVar15 = puVar8;
dprintf((byte *)s_Failure_getting_card_s_ExtCSD_in_8f65cb20,
(int *)((ulonglong)uVar22 >> 0x20),puVar12,puVar8);
piVar14 = extraout_r1_18;
}
goto LAB_8f60bf84;
}
puVar13 = (uint *)0x48;
FUN_8f636968((uint *)&local_78,0,0x48);
uVar22 = FUN_8f60b2cc(ppuVar7,(int)ppuVar7[0xe]);
puVar15 = (uint *)uVar22;
if (puVar15 == (uint *)0x0) {
local_6f = 0;
puVar8 = (uint *)0x33;
local_78 = 0x33;
local_44 = &DAT_8f688180;
local_6e = 1;
local_5c = 1;
local_70 = 1;
local_3c = 1;
local_40 = 8;
local_74 = puVar15;
uVar22 = FUN_8f609784(ppuVar7,(int *)&local_78);
piVar14 = (int *)((ulonglong)uVar22 >> 0x20);
puVar15 = puVar8;
if ((int)uVar22 != 0) goto LAB_8f60c38c;
FUN_8f63685c(&local_b8,(undefined4 *)&DAT_8f688180,8);
puVar8 = (uint *)(local_b8 << 0x18 | (local_b8 >> 8 & 0xff) << 0x10 |
(local_b8 >> 0x10 & 0xff) << 8 | local_b8 >> 0x18);
ppuVar7[0x1b] = puVar8;
ppuVar7[0x37] = (uint *)((uint)((int)puVar8 << 0xc) >> 0x1c);
ppuVar7[0x3a] = (uint *)(local_b8 >> 0x18 & 2);
ppuVar7[0x38] = (uint *)((uint)((int)puVar8 << 4) >> 0x1c);
ppuVar7[0x39] = (uint *)((uint)((int)puVar8 << 0x10) >> 0x1f);
puVar13 = (uint *)0x48;
ppuVar7[0x1c] =
(uint *)(local_b4 << 0x18 | (local_b4 >> 8 & 0xff) << 0x10 |
(local_b4 >> 0x10 & 0xff) << 8 | local_b4 >> 0x18);
FUN_8f636968((uint *)&local_78,0,0x48);
uVar22 = FUN_8f60b2cc(ppuVar7,(int)ppuVar7[0xe]);
puVar15 = (uint *)uVar22;
if (puVar15 == (uint *)0x0) {
local_6f = 0;
puVar8 = (uint *)0xd;
local_6e = 1;
local_5c = 1;
local_70 = 1;
local_3c = 1;
local_44 = &DAT_8f688140;
local_78 = 0xd;
local_40 = 0x40;
local_74 = puVar15;
uVar22 = FUN_8f609784(ppuVar7,(int *)&local_78);
piVar14 = (int *)((ulonglong)uVar22 >> 0x20);
puVar15 = puVar8;
if ((int)uVar22 == 0) {
FUN_8f63685c(&local_b8,(undefined4 *)&DAT_8f688140,0x40);
puVar12 = (uint *)&local_bc;
puVar8 = (uint *)&local_78;
do {
puVar12 = puVar12 + 1;
uVar11 = *puVar12;
puVar8 = puVar8 + -1;
*puVar8 = uVar11 << 0x18 | (uVar11 >> 8 & 0xff) << 0x10 | (uVar11 >> 0x10 & 0xff) << 8 |
uVar11 >> 0x18;
} while (puVar12 != &local_7c);
ppuVar7[0x3b] = (uint *)(1 << ((local_84 << 0x10) >> 0x1c) + 4);
puVar8 = (uint *)((uint)local_85 | (local_84 & 0xff) << 8);
if (puVar8 == (uint *)0x0) {
puVar8 = (uint *)0x10;
}
ppuVar7[0x3c] = puVar8;
goto LAB_8f60c3fc;
}
}
else {
dprintf((byte *)s_Failed_sending_App_command_8f65ca00,(int *)((ulonglong)uVar22 >> 0x20),
puVar13,puVar15);
piVar14 = extraout_r1_15;
}
dprintf((byte *)s_Failed_to_get_SSR_from_the_card_8f65cd90,piVar14,puVar13,puVar15);
}
else {
dprintf((byte *)s_Failed_sending_App_command_8f65ca00,(int *)((ulonglong)uVar22 >> 0x20),
puVar13,puVar15);
piVar14 = extraout_r1_12;
LAB_8f60c38c:
dprintf((byte *)s_Failure_getting_card_s_SCR_regis_8f65cd68,piVar14,puVar13,puVar15);
}
}
else {
puVar15 = puVar8;
dprintf((byte *)s_Failed_to_initialize_SD_card_8f65cabc,(int *)((ulonglong)uVar22 >> 0x20),
puVar12,puVar8);
piVar14 = extraout_r1_06;
LAB_8f60bf84:
puVar13 = puVar12;
if (((uint)puVar8 & 0xff) == 0) goto LAB_8f60bf90;
}
LAB_8f60c398:
dprintf((byte *)s_Failed_detecting_MMC_SDC___slot__8f65cc4c,(int *)(uint)*(byte *)(ppuVar7 + 0x3e)
,puVar13,puVar15);
ppuVar7 = (uint **)0x0;
piVar14 = extraout_r1_10;
LAB_8f60bf90:
if (local_2c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(ppuVar7,piVar14,local_2c);
}
void FUN_8f60ccc0(uint **param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5)
{
uint *puVar1;
bool bVar2;
undefined8 uVar3;
undefined2 local_68;
int local_64;
undefined local_60;
undefined local_5f;
undefined2 local_5e;
uint local_5c;
undefined4 local_4c;
uint *local_44;
undefined4 local_34;
int local_2c;
int *local_1c;
local_1c = DAT_8f69d118;
FUN_8f636968((uint *)&local_68,0,0x48);
if (param_5 == 1) {
local_68 = 0x11;
}
else {
local_68 = 0x12;
}
if (param_1[0x14] == (uint *)&DAT_00000004) {
puVar1 = param_1[0x10];
local_64 = param_3 * (int)puVar1;
}
else {
puVar1 = (uint *)0x0;
local_64 = param_3;
if (param_1[0x14] < (uint *)0x2) {
local_44 = param_1[0x3a];
goto LAB_8f60cd40;
}
}
local_44 = (uint *)0x1;
LAB_8f60cd40:
local_4c = 1;
local_5e = 1;
local_5f = 0;
local_60 = 1;
local_2c = param_5;
local_34 = param_2;
uVar3 = FUN_8f609784(param_1,(int *)&local_68);
bVar2 = (int)uVar3 == 0;
if ((bVar2 || param_5 != 0) && (!bVar2 && param_5 != 1)) {
uVar3 = FUN_8f60b450(param_1);
}
else {
uVar3 = FUN_8f60b354(local_5c,(int *)((ulonglong)uVar3 >> 0x20),puVar1);
}
if (local_1c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),local_1c);
}
return;
}
void FUN_8f60cdc4(uint **param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5)
{
undefined4 uVar1;
bool bVar2;
undefined8 uVar3;
undefined2 local_68;
int local_64;
undefined local_60;
undefined local_5f;
undefined2 local_5e;
uint local_5c;
undefined4 local_4c;
uint *local_44;
undefined4 local_34;
int local_2c;
int *local_1c;
local_1c = DAT_8f69d118;
FUN_8f636968((uint *)&local_68,0,0x48);
if (param_5 == 1) {
local_68 = 0x18;
}
else {
local_68 = 0x19;
}
if (param_1[0x14] == (uint *)&DAT_00000004) {
local_64 = param_3 * (int)param_1[0x10];
}
else {
local_64 = param_3;
if (param_1[0x14] < (uint *)0x2) {
local_44 = param_1[0x3a];
goto LAB_8f60ce40;
}
}
local_44 = (uint *)0x1;
LAB_8f60ce40:
local_4c = 0;
local_5e = 1;
local_5f = 0;
uVar1 = 1;
local_2c = param_5;
local_60 = 1;
local_34 = param_2;
uVar3 = FUN_8f609784(param_1,(int *)&local_68);
bVar2 = (int)uVar3 == 0;
if ((bVar2 || param_5 != 0) && (!bVar2 && param_5 != 1)) {
uVar3 = FUN_8f60b450(param_1);
}
else {
uVar3 = FUN_8f60b354(local_5c,(int *)((ulonglong)uVar3 >> 0x20),uVar1);
}
if (local_1c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),local_1c);
}
return;
}
void FUN_8f60cec8(uint **param_1,int param_2,uint param_3,uint param_4,char param_5)
{
uint uVar1;
int *extraout_r1;
int *extraout_r1_00;
int *piVar2;
int *extraout_r1_01;
int *extraout_r1_02;
int *extraout_r1_03;
int *extraout_r1_04;
int *extraout_r1_05;
int *extraout_r1_06;
int *extraout_r1_07;
undefined4 uVar3;
uint *puVar4;
undefined4 uVar5;
uint uVar6;
uint **ppuVar7;
uint *puVar8;
int iVar9;
uint *puVar10;
uint uVar11;
undefined8 uVar12;
longlong lVar13;
uint local_7c;
undefined2 local_78;
int iStack_74;
undefined local_6f;
undefined2 local_6e;
uint local_6c;
int *local_2c;
ppuVar7 = param_1 + 0xe;
local_2c = DAT_8f69d118;
FUN_8f636968((uint *)&local_78,0,0x48);
uVar3 = 1;
uVar5 = 0xab;
puVar8 = param_1[0x11];
uVar12 = FUN_8f60b0d0(param_1,(int *)ppuVar7,1,0xab,0x10);
iVar9 = (int)uVar12;
if (iVar9 == 0) {
uVar12 = FUN_8f60b5e0(param_1,param_1 + 0x16);
piVar2 = (int *)((ulonglong)uVar12 >> 0x20);
iVar9 = (int)uVar12;
if (iVar9 == 0) {
if ((*(byte *)((int)param_1[0x16] + 0xab) & 0xc) == 0) {
puVar10 = (uint *)(param_3 >> 9 | param_4 << 0x17);
if (param_4 >> 9 == 0 && puVar10 < puVar8) {
dprintf((byte *)s_Length_is_less_than_min_WP_size__8f65d060,piVar2,puVar8,0);
iVar9 = 1;
piVar2 = extraout_r1_02;
}
else {
uVar3 = 1;
uVar5 = 0xab;
uVar12 = FUN_8f60b0d0(param_1,(int *)ppuVar7,1,0xab,1);
iVar9 = (int)uVar12;
if (iVar9 == 0) {
uVar11 = 0;
puVar4 = puVar8;
lVar13 = FUN_8f658e24((int)puVar10 + (int)puVar8 + -1 & -(int)puVar8,0,(uint)puVar8,0);
uVar1 = (uint)lVar13;
local_6f = 0;
if (param_5 == '\0') {
local_78 = 0x1d;
}
else {
local_78 = 0x1c;
}
local_6e = 2;
if (uVar1 != 0) {
iVar9 = 0;
do {
iStack_74 = param_2;
if (param_1[0x14] == (uint *)&DAT_00000004) {
iStack_74 = param_2 * (int)param_1[0x10];
}
uVar12 = FUN_8f609784(param_1,(int *)&local_78);
piVar2 = (int *)((ulonglong)uVar12 >> 0x20);
if ((int)uVar12 != 0) {
iVar9 = 1;
goto LAB_8f60d0ac;
}
uVar6 = local_6c;
if ((int)local_6c < 0) {
dprintf((byte *)s_Address_for_CMD28_29_is_out_of_r_8f65d0b8,piVar2,puVar4,local_6c
);
iVar9 = 1;
piVar2 = extraout_r1_07;
goto LAB_8f60d0ac;
}
do {
puVar4 = &local_7c;
uVar12 = FUN_8f60b038(param_1,(int *)ppuVar7,(int *)puVar4);
if ((int)uVar12 != 0) {
dprintf((byte *)s_Failed_to_get_card_status_aftera_8f65d0e0,
(int *)((ulonglong)uVar12 >> 0x20),puVar4,uVar6);
iVar9 = 1;
piVar2 = extraout_r1_04;
goto LAB_8f60d0ac;
}
iVar9 = iVar9 + 1;
FUN_8f6104fc(1000);
lVar13 = ZEXT48(extraout_r1) << 0x20;
if (iVar9 == 10000) {
dprintf((byte *)s_Card_status_timed_out_after_send_8f65d118,extraout_r1,puVar4,
uVar6);
iVar9 = 1;
piVar2 = extraout_r1_05;
goto LAB_8f60d0ac;
}
uVar6 = local_7c;
} while (((local_7c & 0x100) == 0) ||
(uVar6 = (local_7c << 0x13) >> 0x1c, uVar6 == 7));
uVar11 = uVar11 + 1;
param_2 = param_2 + (int)puVar8;
} while (uVar11 < uVar1);
}
piVar2 = (int *)((ulonglong)lVar13 >> 0x20);
iVar9 = 0;
}
else {
dprintf((byte *)s_Failed_to_set_power_on_WP_for_us_8f65d094,
(int *)((ulonglong)uVar12 >> 0x20),uVar3,uVar5);
piVar2 = extraout_r1_06;
}
}
}
else {
dprintf((byte *)s_Power_on_protection_is_disabled__8f65d030,piVar2,uVar3,
(uint)*(byte *)((int)param_1[0x16] + 0xab));
iVar9 = 1;
piVar2 = extraout_r1_03;
}
}
else {
dprintf((byte *)s_Failed_to_read_ext_csd_for_the_c_8f65d008,piVar2,uVar3,uVar5);
piVar2 = extraout_r1_01;
}
}
else {
dprintf((byte *)s_Failed_to_Disable_PERM_WP_8f65cfec,(int *)((ulonglong)uVar12 >> 0x20),uVar3,
uVar5);
piVar2 = extraout_r1_00;
}
LAB_8f60d0ac:
if (local_2c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar9,piVar2,local_2c);
}
return;
}
void FUN_8f60d15c(uint **param_1)
{
undefined4 uVar1;
uint uVar2;
undefined8 uVar3;
undefined2 local_60;
uint local_5c;
undefined local_57;
undefined2 local_56;
int *local_14;
local_14 = DAT_8f69d118;
FUN_8f636968((uint *)&local_60,0,0x48);
uVar1 = 7;
local_60 = 7;
uVar3 = FUN_8f609784(param_1,(int *)&local_60);
if ((int)uVar3 == 0) {
if ((int)param_1[0x14] - 3U < 2) {
local_57 = 0;
uVar1 = 2;
local_60 = 5;
uVar2 = (int)param_1[0xe] << 0x10 | 0x8000;
local_56 = 2;
local_5c = uVar2;
uVar3 = FUN_8f609784(param_1,(int *)&local_60);
if ((int)uVar3 != 0) {
uVar3 = dprintf((byte *)s_card_sleep_error___s_8f65d170,
(int *)s_mmc_put_card_to_sleep_8f65d210,uVar1,uVar2);
}
}
}
else {
uVar3 = dprintf((byte *)s_card_deselect_error___s_8f65d154,
(int *)s_mmc_put_card_to_sleep_8f65d210,(int)uVar3,uVar1);
}
if (local_14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),local_14);
}
void FUN_8f60d238(uint **param_1,int *param_2)
{
undefined4 uVar1;
int iVar2;
int *extraout_r1;
undefined4 uVar3;
uint *puVar4;
int iVar5;
uint uVar6;
uint uVar7;
int *in_lr;
undefined8 uVar8;
int local_84;
uint local_7c;
undefined2 local_78;
uint local_74;
undefined2 local_6e;
int *local_2c;
local_2c = DAT_8f69d118;
if (param_2 == (int *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_mmc_sdhci_c_8f65c84c,0x995);
}
uVar8 = FUN_8f60b244(param_1,(int *)0x3);
uVar3 = (undefined4)((ulonglong)uVar8 >> 0x20);
if ((int)uVar8 == 0) {
iVar5 = 5;
local_84 = 3;
do {
if (*(short *)param_2 == 0) break;
uVar7 = param_2[0xf];
uVar3 = 0x48;
if (param_2[0xc] == 1) {
uVar6 = 0x80000000;
}
else {
uVar6 = 0;
}
FUN_8f636968((uint *)&local_78,0,0x48);
local_78 = 0x17;
local_6e = 1;
uVar6 = uVar6 | uVar7 & 0xffff;
local_74 = uVar6;
iVar2 = FUN_8f609784(param_1,(int *)&local_78);
if (iVar2 != 0) {
dprintf((byte *)s_Set_block_count_failed___s_8f65d18c,
(int *)s_mmc_sdhci_set_blk_cnt_8f65d228,uVar3,uVar6);
uVar1 = 1;
goto LAB_8f60d378;
}
iVar2 = FUN_8f609784(param_1,param_2);
if (iVar2 != 0) {
uVar1 = 1;
goto LAB_8f60d378;
}
do {
puVar4 = &local_7c;
uVar8 = FUN_8f60b038(param_1,(int *)(param_1 + 0xe),(int *)puVar4);
if ((int)uVar8 != 0) {
dprintf((byte *)s_Failed_to_get_card_status_after_r_8f65d1a8,
(int *)((ulonglong)uVar8 >> 0x20),puVar4,uVar6);
uVar1 = 1;
goto LAB_8f60d378;
}
iVar5 = iVar5 + -1;
FUN_8f6104fc(500);
if (iVar5 == 0) {
dprintf((byte *)s_Card_status_check_timed_out_afte_8f65d1dc,extraout_r1,puVar4,uVar6);
uVar1 = 1;
goto LAB_8f60d378;
}
uVar6 = local_7c;
} while (((local_7c & 0x100) == 0) || (uVar6 = (local_7c << 0x13) >> 0x1c, uVar6 == 7));
param_2 = param_2 + 0x12;
local_84 = local_84 + -1;
} while (local_84 != 0);
uVar1 = 0;
LAB_8f60d378:
uVar8 = FUN_8f60b244(param_1,(int *)0x0);
uVar3 = (undefined4)((ulonglong)uVar8 >> 0x20);
if ((int)uVar8 != 0) {
uVar1 = 1;
}
}
else {
uVar1 = 1;
}
if (local_2c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar1,uVar3,local_2c);
}
// WARNING: Removing unreachable block (ram,0x8f60d43c)
void FUN_8f60d408(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f60d474)
void FUN_8f60d440(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f60d4ac)
void FUN_8f60d478(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f60d4e4)
void FUN_8f60d4b0(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f60d520)
void FUN_8f60d4e8(void)
{
return;
}
void FUN_8f60d524(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
int iVar2;
undefined8 uVar3;
ulonglong uVar4;
piVar1 = DAT_8f69d118;
iVar2 = FUN_8f6263b8(param_1,param_2);
if (iVar2 == 0) {
uVar3 = FUN_8f600364();
uVar4 = FUN_8f60d4b0((int)uVar3,(int)((ulonglong)uVar3 >> 0x20));
}
else {
uVar4 = FUN_8f600364();
uVar4 = uVar4 & 0xffffffff00000000 | (ulonglong)*(uint *)((int)uVar4 + 0x90);
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)(uVar4 >> 0x20),piVar1);
}
void FUN_8f60d578(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
int iVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
iVar2 = FUN_8f6263b8(param_1,param_2);
if (iVar2 == 0) {
FUN_8f600364();
uVar3 = FUN_8f60d4e8();
}
else {
iVar2 = FUN_8f600364();
uVar3 = *(undefined8 *)(iVar2 + 0x48);
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),piVar1);
}
void FUN_8f60d5cc(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
int iVar2;
undefined8 uVar3;
ulonglong uVar4;
piVar1 = DAT_8f69d118;
iVar2 = FUN_8f6263b8(param_1,param_2);
if (iVar2 == 0) {
uVar3 = FUN_8f600364();
uVar4 = FUN_8f60d478((int)uVar3,(int)((ulonglong)uVar3 >> 0x20));
}
else {
uVar4 = FUN_8f600364();
uVar4 = uVar4 & 0xffffffff00000000 | (ulonglong)*(uint *)((int)uVar4 + 0x40);
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)(uVar4 >> 0x20),piVar1);
}
void FUN_8f60d620(uint param_1,uint param_2,uint param_3,uint param_4)
{
int *piVar1;
uint **ppuVar2;
uint uVar3;
undefined4 uVar4;
uint uVar5;
int *piVar6;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
int *piVar7;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
uint uVar8;
int iVar9;
int *in_lr;
bool bVar10;
undefined8 uVar11;
ulonglong uVar12;
undefined8 uVar13;
longlong lVar14;
piVar1 = DAT_8f69d118;
uVar11 = FUN_8f600364();
ppuVar2 = (uint **)uVar11;
uVar3 = FUN_8f60d5cc(ppuVar2,(int)((ulonglong)uVar11 >> 0x20));
uVar8 = 0;
uVar5 = uVar3;
FUN_8f658e24(param_1,param_2,uVar3,0);
if ((uVar5 | uVar8) != 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_mmc_wrapper__8f65d240,0x7a);
}
uVar12 = FUN_8f658354(param_3,uVar3);
if ((int)(uVar12 >> 0x20) != 0) {
param_3 = -uVar3 & (param_3 - 1) + uVar3;
}
uVar4 = FUN_8f625b24(param_4,param_3);
uVar11 = FUN_8f6263b8(uVar4,extraout_r1);
piVar7 = (int *)((ulonglong)uVar11 >> 0x20);
if ((int)uVar11 == 0) {
FUN_8f6582ac(param_3,uVar3);
uVar11 = FUN_8f60d408(ppuVar2,extraout_r1_01);
piVar7 = (int *)((ulonglong)uVar11 >> 0x20);
if ((int)uVar11 != 0) {
dprintf((byte *)s_Error__UFS_write_failed_writing_t_8f65d29c,piVar7,param_1,param_2);
lVar14 = CONCAT44(extraout_r1_02,1);
goto LAB_8f60d760;
}
}
else {
if (0x1fffe00 < param_3) {
uVar5 = FUN_8f6582ac(0x1fffe00,uVar3);
do {
uVar11 = FUN_8f658e24(param_1,param_2,uVar3,0);
piVar6 = (int *)uVar11;
uVar13 = FUN_8f60cdc4(ppuVar2,param_4,(int)piVar6,(int)((ulonglong)uVar11 >> 0x20),uVar5);
piVar7 = (int *)((ulonglong)uVar13 >> 0x20);
iVar9 = (int)uVar13;
if (iVar9 != 0) goto LAB_8f60d748;
bVar10 = 0xfe0001ff < param_1;
param_1 = param_1 + 0x1fffe00;
param_3 = param_3 + 0xfe000200;
param_2 = param_2 + bVar10;
param_4 = param_4 + 0x1fffe00;
} while (0x1fffe00 < param_3);
}
if (param_3 != 0) {
uVar11 = FUN_8f658e24(param_1,param_2,uVar3,0);
piVar6 = (int *)uVar11;
uVar5 = FUN_8f6582ac(param_3,uVar3);
lVar14 = FUN_8f60cdc4(ppuVar2,param_4,(int)piVar6,(int)((ulonglong)uVar11 >> 0x20),uVar5);
iVar9 = (int)lVar14;
if (iVar9 != 0) {
LAB_8f60d748:
dprintf((byte *)s_Failed_Writing_block____x_8f65d280,piVar6,(int)uVar11,
(int)((ulonglong)uVar11 >> 0x20));
lVar14 = CONCAT44(extraout_r1_00,iVar9);
}
goto LAB_8f60d760;
}
}
lVar14 = ZEXT48(piVar7) << 0x20;
LAB_8f60d760:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)lVar14,(int)((ulonglong)lVar14 >> 0x20),piVar1);
}
void FUN_8f60d85c(uint param_1,uint param_2,uint param_3,uint param_4)
{
int *piVar1;
uint **ppuVar2;
uint uVar3;
undefined4 uVar4;
uint uVar5;
int *piVar6;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
uint extraout_r1_02;
uint uVar7;
int iVar8;
int *in_lr;
bool bVar9;
undefined8 uVar10;
ulonglong uVar11;
undefined8 uVar12;
piVar1 = DAT_8f69d118;
uVar10 = FUN_8f600364();
ppuVar2 = (uint **)uVar10;
uVar3 = FUN_8f60d5cc(ppuVar2,(int)((ulonglong)uVar10 >> 0x20));
uVar7 = 0;
uVar5 = uVar3;
FUN_8f658e24(param_1,param_2,uVar3,0);
if ((uVar5 | uVar7) != 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_mmc_wrapper__8f65d240,0xbd);
}
uVar11 = FUN_8f658354(param_4,uVar3);
if ((int)(uVar11 >> 0x20) != 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_mmc_wrapper__8f65d240,0xbe);
}
uVar4 = FUN_8f625b24(param_3,param_4);
uVar10 = FUN_8f6263b8(uVar4,extraout_r1);
uVar4 = (undefined4)((ulonglong)uVar10 >> 0x20);
if ((int)uVar10 == 0) {
FUN_8f6582ac(param_4,uVar3);
uVar11 = FUN_8f60d440(ppuVar2,extraout_r1_01);
if ((int)uVar11 != 0) {
dprintf((byte *)s_Error__UFS_read_failed_writing_t_8f65d304,(int *)(uVar11 >> 0x20),param_1,
param_2);
}
FUN_8f625b4c(param_3,param_4);
uVar11 = uVar11 & 0xffffffff | (ulonglong)extraout_r1_02 << 0x20;
}
else {
if (0x1fffe00 < param_4) {
uVar5 = FUN_8f6582ac(0x1fffe00,uVar3);
do {
uVar10 = FUN_8f658e24(param_1,param_2,uVar3,0);
piVar6 = (int *)uVar10;
uVar12 = FUN_8f60ccc0(ppuVar2,param_3,(int)piVar6,(int)((ulonglong)uVar10 >> 0x20),uVar5);
uVar4 = (undefined4)((ulonglong)uVar12 >> 0x20);
iVar8 = (int)uVar12;
if (iVar8 != 0) goto LAB_8f60d978;
bVar9 = 0xfe0001ff < param_1;
param_1 = param_1 + 0x1fffe00;
param_4 = param_4 + 0xfe000200;
param_2 = param_2 + bVar9;
param_3 = param_3 + 0x1fffe00;
} while (0x1fffe00 < param_4);
}
uVar11 = CONCAT44(uVar4,param_4);
if (param_4 != 0) {
uVar10 = FUN_8f658e24(param_1,param_2,uVar3,0);
piVar6 = (int *)uVar10;
uVar5 = FUN_8f6582ac(param_4,uVar3);
uVar11 = FUN_8f60ccc0(ppuVar2,param_3,(int)piVar6,(int)((ulonglong)uVar10 >> 0x20),uVar5);
iVar8 = (int)uVar11;
if (iVar8 != 0) {
LAB_8f60d978:
dprintf((byte *)s_Failed_Reading_block____x_8f65d2e8,piVar6,(int)uVar10,
(int)((ulonglong)uVar10 >> 0x20));
uVar11 = CONCAT44(extraout_r1_00,iVar8);
}
}
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar11,(int)(uVar11 >> 0x20),piVar1);
}
void FUN_8f60dac8(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f6263b8(param_1,param_2);
if ((int)uVar2 == 0) {
uVar2 = FUN_8f600364();
uVar2 = FUN_8f60d478((int)uVar2,(int)((ulonglong)uVar2 >> 0x20));
}
else {
uVar2 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),0x800);
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
return;
}
void FUN_8f60db18(undefined param_1)
{
int *piVar1;
int *piVar2;
undefined8 uVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
uVar3 = FUN_8f600364();
uVar4 = FUN_8f6263b8((int)uVar3,(int)((ulonglong)uVar3 >> 0x20));
piVar2 = DAT_8f69d118;
if ((int)uVar4 == 0) {
*(undefined *)((int)uVar3 + 9) = param_1;
}
if (piVar1 == piVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
void FUN_8f60db64(void)
{
int *piVar1;
uint uVar2;
undefined8 uVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
uVar3 = FUN_8f600364();
uVar4 = FUN_8f6263b8((int)uVar3,(int)((ulonglong)uVar3 >> 0x20));
if ((int)uVar4 == 0) {
uVar2 = (uint)*(byte *)((int)uVar3 + 9);
}
else {
uVar2 = 0;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
return;
}
void FUN_8f60dbb0(byte *param_1,char param_2)
{
longlong lVar1;
int *piVar2;
uint **ppuVar3;
uint uVar4;
int iVar5;
uint uVar6;
int iVar7;
uint uVar8;
uint uVar9;
undefined8 uVar10;
ulonglong uVar11;
longlong lVar12;
ulonglong uVar13;
piVar2 = DAT_8f69d118;
uVar10 = FUN_8f600364();
ppuVar3 = (uint **)uVar10;
uVar11 = FUN_8f60d5cc(ppuVar3,(int)((ulonglong)uVar10 >> 0x20));
uVar4 = (uint)uVar11;
uVar10 = FUN_8f6263b8(uVar4,(int)(uVar11 >> 0x20));
if ((int)uVar10 != 0) {
uVar10 = FUN_8f606760(param_1);
iVar5 = (int)uVar10;
lVar12 = FUN_8f60688c(iVar5,(int)((ulonglong)uVar10 >> 0x20));
uVar6 = (uint)((ulonglong)lVar12 >> 0x20);
if (lVar12 == 0) {
uVar10 = CONCAT44(uVar6,1);
}
else {
uVar10 = FUN_8f606814(iVar5,uVar6);
uVar13 = FUN_8f658e24((uint)uVar10,(uint)((ulonglong)uVar10 >> 0x20),uVar4,0);
iVar7 = (int)(uVar13 >> 0x20);
iVar5 = FUN_8f6069cc(iVar5);
if ((iVar5 == 0) || (iVar7 != 0 || ppuVar3[0x11] <= (uint *)uVar13)) {
lVar1 = (uVar11 & 0xffffffff) * (uVar13 & 0xffffffff);
uVar8 = (uint)lVar1;
uVar9 = uVar4 * iVar7 + (int)((ulonglong)lVar1 >> 0x20);
}
else {
uVar8 = (int)ppuVar3[0x11] * uVar4;
uVar9 = 0;
}
uVar10 = FUN_8f658e24((uint)lVar12,uVar6,uVar4,0);
uVar10 = FUN_8f60cec8(ppuVar3,(int)uVar10,uVar8,uVar9,param_2);
}
}
if (piVar2 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar10,(int)((ulonglong)uVar10 >> 0x20),piVar2);
}
return;
}
void FUN_8f60dcc4(undefined4 param_1,undefined4 param_2)
{
int iVar1;
undefined8 uVar2;
uint *local_18;
int *local_14;
uVar2 = CONCAT44(param_2,DAT_8f6881c4);
local_18 = (uint *)&DAT_8f65d588;
local_14 = DAT_8f69d118;
if (DAT_8f6881c4 == 0) {
uVar2 = FUN_8f641304((uint **)0x0,&local_18,(char *)0x653,(uint *)&DAT_8f65e2ec);
iVar1 = (int)uVar2;
if (iVar1 != 0) {
DAT_8f6881c4 = iVar1;
DAT_8f6881c8 = iVar1;
}
}
if (local_14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),local_14);
}
void FUN_8f60dd44(int param_1,int *param_2)
{
uint uVar1;
byte *pbVar2;
byte bVar3;
int *piVar4;
int iVar5;
int *piVar6;
int *extraout_r1;
int *extraout_r1_00;
int *extraout_r1_01;
uint uVar7;
uint uVar8;
int *piVar9;
int *piVar10;
undefined8 uVar11;
piVar4 = DAT_8f69d118;
uVar11 = CONCAT44(param_2,param_1);
bVar3 = *(byte *)(param_1 + 1);
if ((bVar3 & 0x80) == 0) {
uVar8 = 1;
piVar9 = (int *)0x1;
}
else {
uVar8 = bVar3 & 0x7f;
piVar9 = (int *)0x2;
if ((bVar3 & 0x7f) == 0) {
LAB_8f60ddf4:
iVar5 = (int)piVar9 + uVar8;
goto LAB_8f60ddd0;
}
}
uVar7 = uVar8 - 1;
uVar8 = 0;
piVar10 = (int *)((int)piVar9 + (uVar7 & 0xff) + 1);
do {
uVar1 = uVar8 << 8;
uVar11 = FUN_8f60dac8((int)uVar11,(int)((ulonglong)uVar11 >> 0x20));
piVar6 = (int *)((ulonglong)uVar11 >> 0x20);
if (((int *)uVar11 <= piVar9) || (param_2 <= piVar9)) {
dprintf((byte *)s_Error__Pos_index_exceeding_the_i_8f65dc48,piVar6,uVar7,uVar8);
iVar5 = 0;
param_2 = extraout_r1;
goto LAB_8f60ddd0;
}
pbVar2 = (byte *)(param_1 + (int)piVar9);
piVar9 = (int *)((int)piVar9 + 1);
uVar8 = *pbVar2 | uVar1;
if (piVar9 == piVar10) {
param_2 = piVar6;
if (uVar8 < ~(uint)piVar9) goto LAB_8f60ddf4;
dprintf((byte *)s_Error__Len_overflows_UINT_MAX_va_8f65dc7c,piVar6,~(uint)piVar9,uVar8);
iVar5 = 0;
param_2 = extraout_r1_01;
goto LAB_8f60ddd0;
}
} while (uVar8 < 0x1000000);
dprintf((byte *)s_Error__Length_exceeding_max_size_8f65dc18,piVar6,uVar7,uVar8);
iVar5 = 0;
param_2 = extraout_r1_00;
LAB_8f60ddd0:
if (piVar4 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar5,param_2,piVar4);
}
// WARNING: Removing unreachable block (ram,0x8f60de7c)
void FUN_8f60de34(void)
{
if ((DAT_8f67ee50 & 0xfffffffd) == 0) {
DAT_8f67ee50 = 3;
}
return;
}
void FUN_8f60de80(int *param_1,uint param_2,undefined4 param_3,int param_4)
{
int *piVar1;
uint uVar2;
undefined4 extraout_r1;
undefined4 uVar3;
undefined4 uVar4;
undefined4 *puVar5;
int *piVar6;
int *piVar7;
undefined8 uVar8;
char local_60;
undefined local_5f;
undefined local_5e;
undefined local_5d;
undefined local_5c;
undefined local_5b;
undefined local_5a;
undefined local_59;
undefined local_58;
undefined local_57;
undefined local_56;
undefined local_55;
undefined local_54;
undefined local_53;
undefined local_52;
undefined local_51;
undefined local_50 [4];
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_40;
undefined4 local_3c;
undefined4 local_38;
undefined4 local_34;
undefined2 local_30;
undefined local_2e;
int *local_2c;
piVar6 = (int *)0x0;
local_57 = 1;
local_2c = DAT_8f69d118;
local_52 = 1;
local_60 = '0';
local_5e = 0x30;
local_5f = 0x31;
local_5d = 0xd;
local_5c = 6;
local_5b = 9;
uVar3 = 3;
local_5a = 0x60;
local_59 = 0x86;
local_56 = 0x65;
local_54 = 4;
uVar4 = 2;
local_4c = 0;
local_48 = 0;
local_44 = 0;
local_40 = 0;
local_3c = 0;
local_38 = 0;
local_34 = 0;
local_30 = 0;
local_2e = 0;
local_58 = 0x48;
local_55 = 3;
local_53 = 2;
local_51 = 5;
local_50 = (undefined [4])0x200400;
uVar8 = FUN_8f6366fc(1,0x100);
piVar7 = (int *)uVar8;
if (piVar7 == (int *)0x0) {
uVar8 = dprintf((byte *)s_boot_verifier__Calloc_failed_dur_8f65dca4,
(int *)((ulonglong)uVar8 >> 0x20),uVar3,uVar4);
}
else {
puVar5 = (undefined4 *)(local_50 + 3);
FUN_8f619974(param_1,param_2,(int *)0x2,puVar5);
piVar1 = (int *)FUN_8f61990c(param_3,piVar7,param_4);
if (piVar1 == (int *)0x33) {
uVar2 = FUN_8f636a7c((char *)piVar7,&local_60,0x33);
piVar6 = (int *)(1 - uVar2);
if (1 < uVar2) {
piVar6 = (int *)0x0;
}
}
else {
dprintf((byte *)s_boot_verifier__Signature_decrypt_8f65dcd8,piVar1,param_4,puVar5);
}
uVar8 = FUN_8f636758((int)piVar7);
piVar7 = piVar6;
}
FUN_8f64dc70((int)uVar8,(int)((ulonglong)uVar8 >> 0x20));
FUN_8f63bf3c();
FUN_8f64d3c8((undefined4 *)0x0);
if (local_2c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(piVar7,extraout_r1,local_2c);
}
return;
}
void FUN_8f60e010(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
piVar1 = DAT_8f69d118;
FUN_8f60dcc4(param_1,param_2);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(DAT_8f67ee50,piVar1,DAT_8f69d118);
}
void FUN_8f60e054(int param_1)
{
undefined4 *puVar1;
int iVar2;
int iVar3;
undefined4 *puVar4;
uint uVar5;
undefined4 extraout_r1;
int *piVar6;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
int *extraout_r1_02;
int *extraout_r1_03;
int *extraout_r1_04;
int *extraout_r1_05;
int *extraout_r1_06;
int *extraout_r1_07;
char *pcVar7;
char *pcVar8;
undefined4 uVar9;
int **ppiVar10;
char *pcVar11;
char *pcVar12;
int *piVar13;
int *in_lr;
undefined8 uVar14;
undefined8 uVar15;
int *local_90;
undefined4 local_8c;
int *local_88;
int *local_84;
int **local_80;
undefined4 local_70;
undefined4 local_6c;
undefined4 local_68;
undefined4 local_64;
undefined4 local_60;
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54;
int local_50;
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_40;
undefined4 local_3c;
undefined4 local_38;
undefined4 local_34;
int local_30;
int *local_2c;
ppiVar10 = DAT_8f67ee50;
local_50 = 0;
local_2c = DAT_8f69d118;
local_4c = 0;
local_48 = 0;
local_44 = 0;
local_40 = 0;
local_3c = 0;
local_38 = 0;
local_34 = 0;
local_30 = 0;
local_70 = 0;
local_6c = 0;
local_68 = 0;
local_64 = 0;
local_60 = 0;
local_5c = 0;
local_58 = 0;
local_54 = 0;
pcVar7 = (char *)DAT_8f69d118;
uVar14 = FUN_8f608478();
piVar13 = (int *)((ulonglong)uVar14 >> 0x20);
switch(ppiVar10) {
case (int **)0x0:
iVar2 = FUN_8f648b98(*(int **)(*(int *)(**(int **)(DAT_8f6881c4 + 4) + 4) + 0x10),piVar13);
iVar3 = iVar2 + 7;
if (iVar3 < 0) {
iVar3 = iVar2 + 0xe;
}
pcVar7 = (char *)(iVar3 >> 3);
iVar2 = *(int *)(**(int **)(DAT_8f6881c4 + 4) + 4);
uVar15 = FUN_8f648b98(*(int **)(iVar2 + 0x14),DAT_8f6881c4);
piVar13 = (int *)((ulonglong)uVar15 >> 0x20);
iVar3 = (int)uVar15 + 7;
if (iVar3 < 0) {
iVar3 = (int)uVar15 + 0xe;
}
pcVar8 = pcVar7;
if ((char *)0x400 < pcVar7) {
dprintf((byte *)s_Invalid_n_value_from_key_materia_8f65dd1c,piVar13,pcVar7,iVar2);
pcVar8 = s_platform_msm_shared_boot_verifie_8f65dd40;
iVar2 = 0x1df;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_verifie_8f65dd40,0x1df);
piVar13 = extraout_r1_04;
}
if (0x10 < (uint)(iVar3 >> 3)) {
dprintf((byte *)s_Invalid_e_value_from_key_materia_8f65dd64,piVar13,pcVar8,iVar2);
pcVar8 = s_platform_msm_shared_boot_verifie_8f65dd40;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_verifie_8f65dd40,0x1e5);
piVar13 = extraout_r1_03;
}
pcVar12 = pcVar7 + (iVar3 >> 3);
pcVar11 = pcVar7;
uVar15 = FUN_8f63666c((uint)pcVar12,piVar13);
piVar13 = (int *)uVar15;
if (piVar13 == (int *)0x0) {
dprintf((byte *)s_Failed_to_allocate_memory_for_RO_8f65dd88,(int *)((ulonglong)uVar15 >> 0x20)
,pcVar8,pcVar11);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_verifie_8f65dd40,0x1eb);
}
FUN_8f649214(*(int **)(*(int *)(**(int **)(DAT_8f6881c4 + 4) + 4) + 0x10),(undefined *)piVar13);
FUN_8f649214(*(int **)(*(int *)(**(int **)(DAT_8f6881c4 + 4) + 4) + 0x14),
(char *)((int)piVar13 + (int)pcVar7));
goto LAB_8f60e490;
case (int **)0x1:
piVar13 = (int *)0x0;
local_50 = param_1;
break;
case (int **)0x2:
case (int **)0x3:
if (DAT_8f6881c0 == 0) {
dprintf((byte *)s_RSA_is_null_from_the_embedded_ce_8f65ddb8,piVar13,pcVar7,0);
pcVar7 = s_platform_msm_shared_boot_verifie_8f65dd40;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_verifie_8f65dd40,0x1f8);
piVar13 = extraout_r1_07;
}
uVar15 = FUN_8f648b98(*(int **)(DAT_8f6881c0 + 0x10),piVar13);
iVar2 = (int)uVar15 + 7;
if (iVar2 < 0) {
iVar2 = (int)uVar15 + 0xe;
}
iVar3 = DAT_8f6881c0;
uVar15 = FUN_8f648b98(*(int **)(DAT_8f6881c0 + 0x14),(int)((ulonglong)uVar15 >> 0x20));
piVar13 = (int *)((ulonglong)uVar15 >> 0x20);
uVar5 = iVar2 >> 3;
iVar2 = (int)uVar15 + 7;
if (iVar2 < 0) {
iVar2 = (int)uVar15 + 0xe;
}
if (0x400 < uVar5) {
dprintf((byte *)s_Invalid_n_value_from_rsa_from_ce_8f65dde4,piVar13,pcVar7,iVar3);
pcVar7 = s_platform_msm_shared_boot_verifie_8f65dd40;
iVar3 = 0x201;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_verifie_8f65dd40,0x201);
piVar13 = extraout_r1_05;
}
if (0x10 < (uint)(iVar2 >> 3)) {
dprintf((byte *)s_Invalid_e_value_from_rsa_from_ce_8f65de08,piVar13,pcVar7,iVar3);
pcVar7 = s_platform_msm_shared_boot_verifie_8f65dd40;
iVar3 = 0x207;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_verifie_8f65dd40,0x207);
piVar13 = extraout_r1_02;
}
pcVar12 = (char *)(uVar5 + (iVar2 >> 3));
uVar15 = FUN_8f63666c((uint)pcVar12,piVar13);
piVar13 = (int *)uVar15;
if (piVar13 == (int *)0x0) {
dprintf((byte *)s_Failed_to_allocate_memory_for_RO_8f65dd88,(int *)((ulonglong)uVar15 >> 0x20)
,pcVar7,iVar3);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_verifie_8f65dd40,0x20d);
}
FUN_8f649214(*(int **)(DAT_8f6881c0 + 0x10),(undefined *)piVar13);
FUN_8f649214(*(int **)(DAT_8f6881c0 + 0x14),(undefined *)((int)piVar13 + uVar5));
LAB_8f60e490:
FUN_8f619cfc(piVar13,(uint)pcVar12,&local_50,(int *)0x2);
local_30 = param_1;
break;
default:
piVar13 = (int *)0x0;
}
uVar9 = 2;
puVar4 = &local_70;
FUN_8f619cfc(&local_50,0x24,puVar4,(int *)0x2);
uVar15 = FUN_8f63666c(0x2c,extraout_r1);
puVar1 = (undefined4 *)uVar15;
if (puVar1 == (undefined4 *)0x0) {
dprintf((byte *)s_Failed_to_allocate_memory_for_RO_8f65dd88,(int *)((ulonglong)uVar15 >> 0x20),
puVar4,uVar9);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_verifie_8f65dd40,0x224);
}
*(undefined *)(puVar1 + 2) = 0x20;
*(undefined *)((int)puVar1 + 2) = 0;
*(undefined *)((int)puVar1 + 3) = 0;
*(undefined *)((int)puVar1 + 5) = 0;
*(undefined *)((int)puVar1 + 6) = 0;
*(undefined *)((int)puVar1 + 7) = 0;
*(undefined *)((int)puVar1 + 9) = 0;
*(undefined *)((int)puVar1 + 10) = 0;
*(undefined *)((int)puVar1 + 0xb) = 0;
*(undefined *)puVar1 = 1;
*(undefined *)((int)puVar1 + 1) = 2;
*(undefined *)(puVar1 + 1) = 0xc;
FUN_8f63685c(puVar1 + 3,&local_70,0x20);
uVar9 = 0x2c;
ppiVar10 = &local_90;
iVar2 = FUN_8f617098((int)uVar14,puVar1,(int *)0x2c,ppiVar10,(int *)&DAT_00000004);
if ((iVar2 < 0) || ((int)local_90 < 0)) {
dprintf((byte *)s_QSEEcom_command_for_Sending_Root_8f65de2c,local_90,uVar9,ppiVar10);
if (piVar13 != (int *)0x0) {
FUN_8f636758((int)piVar13);
}
FUN_8f636758((int)puVar1);
FUN_8f636758(0);
iVar2 = 0;
uVar9 = extraout_r1_01;
goto LAB_8f60e3b0;
}
DAT_8f69d1bc = DAT_8f67ee50;
DAT_8f69d198 = param_1;
FUN_8f636b10((undefined4 *)&DAT_8f69d19c,0x20,&local_50,0x20);
iVar2 = FUN_8f608478();
local_8c = 0x200;
pcVar7 = (char *)0x4;
ppiVar10 = &local_84;
iVar3 = FUN_8f617098(iVar2,&local_8c,(int *)&DAT_00000004,ppiVar10,(int *)0x14);
if ((iVar3 < 0) || ((int)local_84 < 0)) {
dprintf((byte *)s_QSEEcom_command_for_getting_keym_8f65de6c,local_84,pcVar7,ppiVar10);
pcVar7 = s_platform_msm_shared_boot_verifie_8f65dd40;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_verifie_8f65dd40,0x1a5);
local_84 = extraout_r1_06;
}
if ((int **)0x1 < local_80) {
puVar4 = (undefined4 *)FUN_8f63666c(0x40,local_84);
if (puVar4 == (undefined4 *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_verifie_8f65dd40,0x1ab);
}
FUN_8f636b10(puVar4 + 4,0x30,&DAT_8f69d198,0x30);
*(undefined *)((int)puVar4 + 2) = 0;
*(undefined *)((int)puVar4 + 3) = 0;
*(undefined *)(puVar4 + 1) = 0;
*(undefined *)((int)puVar4 + 5) = 0;
*(undefined *)((int)puVar4 + 6) = 0;
*(undefined *)((int)puVar4 + 7) = 0;
*(undefined *)((int)puVar4 + 9) = 0;
*(undefined *)((int)puVar4 + 10) = 0;
*(undefined *)((int)puVar4 + 0xb) = 0;
*(undefined *)((int)puVar4 + 0xd) = 0;
*(undefined *)((int)puVar4 + 0xe) = 0;
*(undefined *)((int)puVar4 + 0xf) = 0;
pcVar7 = (char *)0x40;
*(undefined *)puVar4 = 8;
local_80 = &local_88;
*(undefined *)((int)puVar4 + 1) = 2;
*(undefined *)(puVar4 + 2) = 0x10;
*(undefined *)(puVar4 + 3) = 0x30;
iVar2 = FUN_8f617098(iVar2,puVar4,(int *)0x40,local_80,(int *)&DAT_00000004);
if ((iVar2 < 0) || ((int)local_88 < 0)) {
dprintf((byte *)s_QSEEcom_command_for_Sending_boot_8f65deb8,local_88,pcVar7,local_80);
FUN_8f636758((int)puVar4);
local_80 = (int **)0x1bb;
pcVar7 = s_platform_msm_shared_boot_verifie_8f65dd40;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_verifie_8f65dd40,0x1bb);
}
FUN_8f636758((int)puVar4);
}
uVar14 = FUN_8f615da0();
piVar6 = (int *)((ulonglong)uVar14 >> 0x20);
if (((int)uVar14 == 0) || (local_80 = DAT_8f67ee50, DAT_8f67ee50 == (int **)0x0)) {
LAB_8f60e37c:
dprintf((byte *)s_Sending_Root_of_Trust_to_trustzo_8f65dfa0,piVar6,pcVar7,local_80);
iVar2 = 1;
}
else {
uVar14 = FUN_8f6178c4();
uVar5 = (uint)uVar14;
iVar2 = FUN_8f6161c8(uVar5,(int)((ulonglong)uVar14 >> 0x20));
if (iVar2 == 0) {
dprintf((byte *)s_send_rot_command__TZ_didn_t_supp_8f65df40,(int *)(uVar5 >> 0x16),
(uVar5 << 10) >> 0x16,uVar5 & 0x3ff);
}
else {
iVar2 = FUN_8f615698(0);
if (iVar2 == 0) {
uVar14 = FUN_8f615698(0xc);
piVar6 = (int *)((ulonglong)uVar14 >> 0x20);
if ((int)uVar14 == 0) goto LAB_8f60e37c;
dprintf((byte *)s_send_rot_command__set_tamper_fus_8f65def4,piVar6,pcVar7,local_80);
}
else {
iVar2 = 0;
}
}
}
if (piVar13 != (int *)0x0) {
FUN_8f636758((int)piVar13);
}
FUN_8f636758((int)puVar1);
FUN_8f636758(0);
uVar9 = extraout_r1_00;
LAB_8f60e3b0:
if (local_2c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,uVar9,local_2c);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f60e800)
void FUN_8f60e7b8(undefined4 *param_1)
{
*param_1 = DAT_8f69d194;
return;
}
// WARNING: Removing unreachable block (ram,0x8f60e8d4)
void FUN_8f60e804(undefined4 param_1,uint param_2)
{
switch(param_1) {
case 0:
case 3:
DAT_8f67ee50 = 0;
break;
case 1:
DAT_8f67ee50 = 1;
break;
case 2:
if (DAT_8f67ee50 == 0) {
DAT_8f67ee50 = 2;
}
break;
case 4:
FUN_8f60de34();
return;
case 5:
if (DAT_8f67ee50 - 1U < 2) {
DAT_8f67ee50 = 3;
}
}
return;
}
void FUN_8f60e8d8(int *param_1,int *param_2,byte *param_3)
{
int iVar1;
undefined4 *puVar2;
undefined4 *puVar3;
int *piVar4;
undefined4 extraout_r1;
int *extraout_r1_00;
int *piVar5;
int *piVar6;
int **ppiVar7;
int **ppiVar8;
uint uVar9;
undefined *puVar10;
int **ppiVar11;
int iVar12;
uint *puVar13;
int iVar14;
char *pcVar15;
uint *puVar16;
int **ppiVar17;
int *in_lr;
undefined8 uVar18;
uint *local_34;
uint *local_30;
int *local_2c;
puVar13 = (uint *)((int)param_1 + (int)param_2);
local_2c = DAT_8f69d118;
local_34 = puVar13;
if (DAT_8f67ee50 == 1) {
iVar1 = 0;
goto LAB_8f60ea98;
}
uVar9 = DAT_8f67ee50;
uVar18 = FUN_8f60dac8(DAT_8f69d118,param_2);
uVar18 = FUN_8f63666c((uint)uVar18,(int)((ulonglong)uVar18 >> 0x20));
puVar2 = (undefined4 *)uVar18;
if (puVar2 == (undefined4 *)0x0) {
uVar9 = 0x27d;
uVar18 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_verifie_8f65dd40,0x27d);
}
puVar16 = local_34;
iVar1 = FUN_8f60dac8((int)uVar18,(int)((ulonglong)uVar18 >> 0x20));
puVar3 = FUN_8f63685c(puVar2,puVar16,iVar1);
uVar18 = FUN_8f60dac8(puVar3,extraout_r1);
piVar5 = (int *)((ulonglong)uVar18 >> 0x20);
if (((int *)uVar18 < (int *)0x3) || (uVar9 = (uint)*(byte *)puVar2, uVar9 != 0x30)) {
LAB_8f60e960:
dprintf((byte *)s_boot_verifier__Error_while_readi_8f65dfd8,piVar5,iVar1,uVar9);
uVar18 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_verifie_8f65dd40,0x286);
pcVar15 = (char *)0x0;
uVar18 = FUN_8f60dac8((int)uVar18,(int)((ulonglong)uVar18 >> 0x20));
FUN_8f60dac8((int)uVar18,(int)((ulonglong)uVar18 >> 0x20));
LAB_8f60e9a0:
puVar10 = &DAT_8f65d544;
uVar18 = FUN_8f641304((uint **)0x0,&local_34,pcVar15,(uint *)&DAT_8f65d544);
piVar5 = (int *)uVar18;
if (piVar5 == (int *)0x0) {
dprintf((byte *)s_boot_verifier__verification_fail_8f65e050,(int *)((ulonglong)uVar18 >> 0x20)
,pcVar15,puVar10);
uVar18 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_verifie_8f65dd40,0x299);
}
puVar16 = (uint *)piVar5[1];
iVar1 = FUN_8f64dbf8((int)uVar18,(int)((ulonglong)uVar18 >> 0x20));
FUN_8f653e18(puVar16,iVar1,&DAT_8f69d1c8,&DAT_8f69d194);
iVar14 = DAT_8f6881c8;
piVar4 = (int *)FUN_8f636bdc((int)param_3,(byte *)s_keystore_8f65e094);
ppiVar17 = (int **)piVar5[3];
ppiVar11 = (int **)*ppiVar17;
ppiVar7 = (int **)*ppiVar11;
ppiVar8 = ppiVar7;
uVar18 = FUN_8f636e98((byte *)ppiVar11[2],param_3,(int *)ppiVar7);
piVar6 = (int *)((ulonglong)uVar18 >> 0x20);
if ((int)uVar18 == 0) {
uVar18 = FUN_8f636de0(param_3);
piVar6 = (int *)((ulonglong)uVar18 >> 0x20);
ppiVar11 = ppiVar7;
if (ppiVar7 != (int **)(int *)uVar18) goto LAB_8f60ea4c;
iVar1 = 4 - *ppiVar17[1];
uVar9 = *(uint *)ppiVar17[1][2];
if (0 < iVar1) {
uVar9 = uVar9 << (iVar1 * 8 & 0xffU);
}
piVar6 = (int *)(uVar9 << 0x18 | (uVar9 >> 8 & 0xff) << 0x10 | (uVar9 >> 0x10 & 0xff) << 8 |
uVar9 >> 0x18);
if (param_2 != piVar6) {
dprintf((byte *)s_boot_verifier__image_length_is_d_8f65e0a0,piVar6,param_2,uVar9);
goto LAB_8f60ea58;
}
if (piVar4 != (int *)0x0) {
puVar10 = &DAT_8f65d50c;
local_30 = puVar13;
uVar18 = FUN_8f63f6c4((uint *)ppiVar17,(byte **)&local_30,(int *)&DAT_8f65d50c);
piVar4 = (int *)~(uint)uVar18;
if (piVar4 < param_2) {
dprintf((byte *)s_Interger_overflow_detected_8f65e0d8,(int *)((ulonglong)uVar18 >> 0x20),
puVar10,piVar4);
piVar4 = (int *)0x11c;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_verifie_8f65dd40,0x11c);
}
else {
param_2 = (int *)((int)param_2 + (uint)uVar18);
}
}
if (iVar14 == 0) {
dprintf((byte *)s__s__d__Keystore_is_null_8f65e0f4,(int *)s_verify_image_with_sig_8f65d438,
0x129,piVar4);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_verifie_8f65dd40,0x12a);
}
else {
iVar14 = *(int *)(**(int **)(iVar14 + 4) + 4);
}
iVar12 = iVar14;
uVar18 = FUN_8f60de80(param_1,(uint)param_2,*(undefined4 *)(piVar5[4] + 8),iVar14);
iVar1 = (int)uVar18;
if (iVar1 == 0) {
piVar4 = piVar5;
uVar18 = FUN_8f6539ac((int **)piVar5[1],(int *)((ulonglong)uVar18 >> 0x20));
if ((int *)uVar18 == (int *)0x0) {
dprintf((byte *)s_Unable_to_extract_public_key_fro_8f65e110,
(int *)((ulonglong)uVar18 >> 0x20),piVar4,iVar12);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_boot_verifie_8f65dd40,0x144);
}
else {
iVar14 = FUN_8f64df3c((int *)uVar18);
DAT_8f6881c0 = iVar14;
}
uVar18 = FUN_8f60de80(param_1,(uint)param_2,*(undefined4 *)(piVar5[4] + 8),iVar14);
iVar1 = (int)uVar18;
if (iVar1 == 0) {
FUN_8f60de34();
}
else {
FUN_8f60e804(2,(uint)((ulonglong)uVar18 >> 0x20));
}
}
else {
DAT_8f67ee50 = 0;
}
}
else {
LAB_8f60ea4c:
dprintf((byte *)s_boot_verifier__verification_fail_8f65e050,piVar6,ppiVar8,ppiVar11);
LAB_8f60ea58:
FUN_8f60de34();
iVar1 = 0;
}
DAT_8f69d1c0 = (uint)(param_1[0xb] << 8) >> 0x13;
DAT_8f69d1c4 = param_1[0xb] & 0x7ff;
FUN_8f641cec(piVar5,(uint *)&DAT_8f65d544);
}
else {
uVar18 = FUN_8f60dd44((int)puVar2,(int *)uVar18);
piVar5 = (int *)((ulonglong)uVar18 >> 0x20);
pcVar15 = (char *)uVar18;
if (pcVar15 == (char *)0x0) goto LAB_8f60e960;
uVar18 = FUN_8f60dac8(pcVar15,piVar5);
piVar5 = (int *)((ulonglong)uVar18 >> 0x20);
if (pcVar15 <= (char *)uVar18) {
uVar18 = FUN_8f60dac8((char *)uVar18,piVar5);
piVar5 = (int *)((ulonglong)uVar18 >> 0x20);
if ((char *)uVar18 < pcVar15) goto LAB_8f60eb08;
goto LAB_8f60e9a0;
}
LAB_8f60eb08:
dprintf((byte *)s_boot_verifier__Signature_length_e_8f65e010,piVar5,iVar1,uVar9);
iVar1 = 0;
}
FUN_8f636758((int)puVar2);
param_2 = extraout_r1_00;
LAB_8f60ea98:
if (local_2c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar1,param_2,local_2c);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f60ed68)
void FUN_8f60ed2c(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f60edcc)
// WARNING: Removing unreachable block (ram,0x8f604524)
void FUN_8f60ed6c(undefined4 param_1)
{
if (DAT_8f67ee50 != 3) {
return;
}
return;
}
void FUN_8f60f298(int param_1)
{
int *piVar1;
undefined4 extraout_r1;
undefined4 uVar2;
int iVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
uVar4 = (*(code *)(&PTR_FUN_8f67ee58)[param_1 * 2])();
if ((int)uVar4 != 0) {
iVar3 = 10;
do {
uVar4 = (*(code *)(&PTR_FUN_8f67ee58)[param_1 * 2])();
uVar2 = (undefined4)((ulonglong)uVar4 >> 0x20);
if ((int)uVar4 == 0) break;
FUN_8f627cfc(100);
iVar3 = iVar3 + -1;
uVar2 = extraout_r1;
} while (iVar3 != 0);
uVar4 = CONCAT44(uVar2,1);
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
return;
}
void FUN_8f60f310(void)
{
int *piVar1;
int iVar2;
piVar1 = DAT_8f69d118;
while (((iVar2 = (*(code *)PTR_FUN_8f67ee58)(), iVar2 != 0 ||
(iVar2 = (*(code *)PTR_FUN_8f67ee60)(), iVar2 != 0)) ||
(iVar2 = (*(code *)PTR_FUN_8f67ee68)(), iVar2 != 0))) {
FUN_8f627cfc(0x32);
}
DAT_8f6881cc = FUN_8f610438();
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(DAT_8f6881cc,piVar1,DAT_8f69d118);
}
void FUN_8f60f39c(int param_1)
{
int *piVar1;
int iVar2;
undefined4 extraout_r1;
int iVar3;
piVar1 = DAT_8f69d118;
iVar3 = param_1 + 0x58;
FUN_8f60ffb8(param_1);
FUN_8f60f310();
while( true ) {
iVar2 = FUN_8f60f298(0);
if (iVar2 == 0) {
iVar2 = FUN_8f60f298(1);
if (iVar2 == 0) {
iVar2 = FUN_8f60f298(2);
if (iVar2 != 0) {
FUN_8f627334(iVar3);
(*(code *)(&PTR_LAB_8f65e338)[*(int *)(param_1 + 0x44) * 3])(param_1);
FUN_8f627418(iVar3);
}
}
else {
FUN_8f627334(iVar3);
(*(code *)(&PTR_LAB_8f65e334)[*(int *)(param_1 + 0x44) * 3])(param_1);
FUN_8f627418(iVar3);
}
}
else {
FUN_8f627334(iVar3);
(*(code *)(&PTR_LAB_8f65e330)[*(int *)(param_1 + 0x44) * 3])(param_1);
FUN_8f627418(iVar3);
}
FUN_8f627334(iVar3);
if ((*(int *)(param_1 + 0x48) != 0) &&
(iVar2 = FUN_8f610438(), *(uint *)(param_1 + 0x48) < (uint)(iVar2 - DAT_8f6881cc))) break;
if (*(int *)(param_1 + 0x4c) != 0) goto LAB_8f60f498;
FUN_8f627418(iVar3);
FUN_8f627cfc(0x32);
}
*(undefined4 *)(param_1 + 0x4c) = 1;
LAB_8f60f498:
*(undefined4 *)(param_1 + 0x50) = 1;
FUN_8f627418(iVar3);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,extraout_r1,piVar1);
}
void FUN_8f60f504(uint *param_1,uint param_2)
{
int *piVar1;
byte *pbVar2;
uint *puVar3;
uint uVar4;
uint uVar5;
undefined4 uVar6;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
int iVar7;
int iVar8;
undefined8 uVar9;
piVar1 = DAT_8f69d118;
uVar9 = FUN_8f62f988();
uVar6 = (undefined4)((ulonglong)uVar9 >> 0x20);
pbVar2 = (byte *)uVar9;
if (pbVar2 != (byte *)0x0) {
uVar9 = FUN_8f63666c((uint)pbVar2,uVar6);
uVar6 = (undefined4)((ulonglong)uVar9 >> 0x20);
puVar3 = (uint *)uVar9;
if (puVar3 != (uint *)0x0) {
FUN_8f636968(puVar3,0,(int)pbVar2);
uVar4 = FUN_8f6582ac((uint)pbVar2,param_2);
uVar5 = FUN_8f636de0((byte *)param_1);
if (uVar5 < uVar4) {
if (param_2 == 1) {
iVar8 = (uVar4 - 1) - uVar5;
}
else {
iVar8 = uVar4 - uVar5;
}
if (0 < iVar8) {
iVar7 = 0;
do {
iVar7 = iVar7 + 1;
FUN_8f636c40((byte *)puVar3,&DAT_8f661410,pbVar2);
} while (iVar7 != iVar8);
}
FUN_8f636c40((byte *)puVar3,(byte *)param_1,pbVar2);
param_1 = puVar3;
uVar6 = extraout_r1;
}
else {
FUN_8f636758((int)puVar3);
uVar6 = extraout_r1_00;
}
}
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1,uVar6,piVar1);
}
void FUN_8f60f5e8(void)
{
int iVar1;
iVar1 = DAT_8f69d118;
FUN_8f6272e4((undefined4 *)PTR_DAT_8f60f634);
DAT_8f6881d0 = 1;
if (iVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar1,DAT_8f69d118,(int *)0x1);
}
void FUN_8f60f6d4(void)
{
int iVar1;
iVar1 = DAT_8f69d118;
FUN_8f627334((int)&DAT_8f688230);
while (DAT_8f688228 == 0) {
FUN_8f627418((int)PTR_DAT_8f60f760);
FUN_8f627cfc(10);
FUN_8f627334((int)PTR_DAT_8f60f760);
}
FUN_8f627418((int)PTR_DAT_8f60f760);
DAT_8f6881d4 = 0;
if (iVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar1,DAT_8f69d118,(int *)0x0);
}
return;
}
// WARNING: Type propagation algorithm not settling
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f60f764(uint *param_1,uint param_2)
{
byte bVar1;
uint uVar2;
byte *pbVar3;
int *piVar4;
undefined4 extraout_r1;
undefined4 uVar5;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
byte *pbVar6;
char *pcVar7;
int *piVar8;
uint uVar9;
uint local_108;
byte abStack_104 [8];
uint local_fc;
undefined4 uStack_f8;
uint local_f4;
undefined4 uStack_f0;
undefined4 uStack_ec;
undefined2 local_e8;
uint auStack_e4 [16];
undefined4 local_a4;
int *local_24;
local_24 = DAT_8f69d118;
FUN_8f636968(auStack_e4,0,0x40);
FUN_8f636968(&local_a4,0,0x80);
local_108 = 0;
local_fc = s_Start___8f65e770._0_4_;
uStack_f8 = s_Start___8f65e770._4_4_;
local_f4 = s_Continue_boot_8f65e778._0_4_;
uStack_f0 = s_Continue_boot_8f65e778._4_4_;
uStack_ec = s_Continue_boot_8f65e778._8_4_;
local_e8 = (undefined2)ram0x8f65e784;
FUN_8f62f508();
FUN_8f636968(param_1,0,0x54);
pbVar3 = (byte *)FUN_8f60f504(&local_fc,DAT_8f67ee6c);
uVar9 = DAT_8f67ee6c;
if (pbVar3 != (byte *)0x0) {
bVar1 = *pbVar3;
pbVar6 = pbVar3;
while ((int *)(uint)bVar1 != (int *)0x0) {
FUN_8f62f5e0((int *)(uint)bVar1,(int *)0x2,uVar9);
pbVar6 = pbVar6 + 1;
bVar1 = *pbVar6;
}
FUN_8f636758((int)pbVar3);
}
pbVar3 = (byte *)FUN_8f60f504(&local_f4,DAT_8f67ee70);
uVar9 = DAT_8f67ee70;
if (pbVar3 != (byte *)0x0) {
bVar1 = *pbVar3;
pbVar6 = pbVar3;
while ((int *)(uint)bVar1 != (int *)0x0) {
FUN_8f62f5e0((int *)(uint)bVar1,(int *)0x2,uVar9);
pbVar6 = pbVar6 + 1;
bVar1 = *pbVar6;
}
FUN_8f636758((int)pbVar3);
}
uVar9 = DAT_8f67ee70;
pcVar7 = s____More_options_8f65e730;
piVar4 = (int *)0xa;
do {
FUN_8f62f5e0(piVar4,(int *)0x0,uVar9);
uVar2 = DAT_8f67ee70;
pcVar7 = (char *)((byte *)pcVar7 + 1);
piVar4 = (int *)(uint)(byte)*pcVar7;
} while (piVar4 != (int *)0x0);
pcVar7 = s_press_VOLUME_keys_8f65e744;
piVar4 = (int *)0x70;
do {
FUN_8f62f5e0(piVar4,(int *)0x3,uVar2);
uVar9 = DAT_8f67ee70;
pcVar7 = (char *)((byte *)pcVar7 + 1);
piVar4 = (int *)(uint)(byte)*pcVar7;
} while (piVar4 != (int *)0x0);
pbVar3 = (&PTR_s_Your_device_has_loaded_a_differe_8f67ee78)[param_2 * 2];
if (pbVar3 != (byte *)0x0) {
bVar1 = *pbVar3;
while ((int *)(uint)bVar1 != (int *)0x0) {
FUN_8f62f5e0((int *)(uint)bVar1,(int *)0x0,uVar9);
pbVar3 = pbVar3 + 1;
bVar1 = *pbVar3;
}
}
uVar9 = DAT_8f67ee70;
piVar8 = *(int **)(&DAT_8f67ee74 + param_2 * 8);
pcVar7 = s_g_co_placeholder_8f65e758;
piVar4 = (int *)0x67;
do {
FUN_8f62f5e0(piVar4,piVar8,uVar9);
pcVar7 = (char *)((byte *)pcVar7 + 1);
piVar4 = (int *)(uint)(byte)*pcVar7;
} while (piVar4 != (int *)0x0);
if (param_2 == 0) {
pbVar3 = (byte *)FUN_8f60e7b8(&local_108);
if ((pbVar3 != (byte *)0x0) &&
(FUN_8f636d18((int)auStack_e4,pbVar3,local_108), uVar9 = param_2, local_108 != 0)) {
do {
if (local_108 - 1 == uVar9) {
FUN_8f636618(abStack_104,8,&DAT_8f65e720,(int *)(uint)*(byte *)((int)auStack_e4 + uVar9));
}
else {
FUN_8f636618(abStack_104,8,(byte *)s__02x__8f65e728,
(int *)(uint)*(byte *)((int)auStack_e4 + uVar9));
}
uVar9 = uVar9 + 1;
FUN_8f636c40((byte *)&local_a4,abStack_104,(byte *)0x80);
} while (uVar9 < local_108);
}
uVar9 = DAT_8f67ee70;
pbVar3 = (byte *)0x8f65e76c;
piVar4 = (int *)0x49;
do {
FUN_8f62f5e0(piVar4,(int *)0x0,uVar9);
uVar2 = DAT_8f67ee70;
pbVar3 = pbVar3 + 1;
piVar4 = (int *)(uint)*pbVar3;
} while (piVar4 != (int *)0x0);
piVar4 = (int *)(uint)(byte)local_a4;
uVar5 = extraout_r1_01;
if (piVar4 != (int *)0x0) {
pbVar3 = (byte *)&local_a4;
do {
FUN_8f62f5e0(piVar4,(int *)0x0,uVar2);
pbVar3 = pbVar3 + 1;
piVar4 = (int *)(uint)*pbVar3;
uVar5 = extraout_r1_02;
} while (piVar4 != (int *)0x0);
}
}
else {
uVar5 = extraout_r1;
if (param_2 == 8) {
uVar9 = 30000;
pcVar7 = s__If_power_key_is_not_pressed__Yo_8f65e6d4;
goto LAB_8f60f968;
}
}
pcVar7 = s__If_no_key_pressed__Your_device_w_8f65e698;
uVar9 = 5000;
LAB_8f60f968:
uVar2 = DAT_8f67ee70;
bVar1 = *pcVar7;
piVar4 = DAT_8f69d118;
while (DAT_8f69d118 = piVar4, (int *)(uint)bVar1 != (int *)0x0) {
FUN_8f62f5e0((int *)(uint)bVar1,(int *)0x0,uVar2);
pcVar7 = (char *)((byte *)pcVar7 + 1);
uVar5 = extraout_r1_00;
piVar4 = DAT_8f69d118;
bVar1 = *pcVar7;
}
param_1[0x11] = param_2;
param_1[0x12] = uVar9;
if (local_24 == piVar4) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,uVar5,local_24);
}
void FUN_8f60fab8(uint *param_1)
{
byte bVar1;
uint uVar2;
int *piVar3;
int *piVar4;
undefined4 uVar5;
uint uVar6;
char *pcVar7;
uint *puVar8;
byte *pbVar9;
piVar3 = DAT_8f69d118;
pcVar7 = s_Options_menu__8f65e788;
FUN_8f62f508();
FUN_8f636968(param_1,0,0x54);
uVar6 = DAT_8f67ee6c;
piVar4 = (int *)0x4f;
do {
FUN_8f62f5e0(piVar4,(int *)0x0,uVar6);
uVar2 = DAT_8f67ee70;
pcVar7 = (char *)((byte *)pcVar7 + 1);
piVar4 = (int *)(uint)(byte)*pcVar7;
} while (piVar4 != (int *)0x0);
pcVar7 = s_Press_volume_key_to_select__and_p_8f65e798;
piVar4 = (int *)0x50;
do {
FUN_8f62f5e0(piVar4,(int *)0x0,uVar2);
pcVar7 = (char *)((byte *)pcVar7 + 1);
piVar4 = (int *)(uint)(byte)*pcVar7;
puVar8 = param_1;
} while (piVar4 != (int *)0x0);
do {
FUN_8f62f3d8(0);
uVar5 = FUN_8f62f948();
uVar6 = DAT_8f67ee70;
pbVar9 = (byte *)piVar4[-0x1c268709];
*(undefined4 *)((int)param_1 + (int)piVar4) = uVar5;
bVar1 = *pbVar9;
while ((int *)(uint)bVar1 != (int *)0x0) {
FUN_8f62f5e0((int *)(uint)bVar1,(int *)0x0,uVar6);
pbVar9 = pbVar9 + 1;
bVar1 = *pbVar9;
}
uVar6 = FUN_8f62f9c8();
piVar4 = piVar4 + 1;
puVar8[10] = uVar6;
uVar6 = FUN_8f62f948();
puVar8[5] = uVar6;
puVar8 = puVar8 + 1;
} while (piVar4 != (int *)0x14);
FUN_8f62f3d8(0);
piVar4 = DAT_8f69d118;
param_1[0xf] = 5;
param_1[0x11] = 3;
param_1[0x10] = 5;
if (piVar3 == piVar4) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(3,piVar3,piVar4);
}
void FUN_8f60fbec(uint *param_1)
{
byte bVar1;
uint uVar2;
uint uVar3;
int *piVar4;
int iVar5;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 uVar6;
byte *pbVar7;
uint uVar8;
char *pcVar9;
int *piVar10;
undefined8 uVar11;
uint auStack_e4 [16];
byte local_a4;
byte abStack_a3 [127];
int *local_24;
uVar8 = param_1[0x10];
local_24 = DAT_8f69d118;
FUN_8f62f508();
FUN_8f636968(param_1,0,0x54);
if (uVar8 == 0) {
piVar10 = (int *)0x7;
}
else if (uVar8 < 3) {
piVar10 = (int *)&DAT_00000006;
}
else {
piVar10 = (int *)0x0;
}
FUN_8f62f3d8((int)piVar10);
uVar2 = DAT_8f67ee6c;
pbVar7 = (&PTR_s_START_8f65eba0)[uVar8];
bVar1 = *pbVar7;
while ((int *)(uint)bVar1 != (int *)0x0) {
FUN_8f62f5e0((int *)(uint)bVar1,piVar10,uVar2);
pbVar7 = pbVar7 + 1;
bVar1 = *pbVar7;
}
FUN_8f62f3d8((int)piVar10);
uVar2 = DAT_8f67ee70;
pcVar9 = s__Press_volume_key_to_select__and_8f65e8a0;
piVar10 = (int *)0xa;
do {
FUN_8f62f5e0(piVar10,(int *)0x0,uVar2);
uVar3 = DAT_8f67ee70;
pcVar9 = (char *)((byte *)pcVar9 + 1);
piVar10 = (int *)(uint)(byte)*pcVar9;
} while (piVar10 != (int *)0x0);
pcVar9 = s_FASTBOOT_MODE_8f65e8e0;
piVar10 = (int *)0x46;
do {
FUN_8f62f5e0(piVar10,(int *)&DAT_00000006,uVar3);
pcVar9 = (char *)((byte *)pcVar9 + 1);
piVar10 = (int *)(uint)(byte)*pcVar9;
} while (piVar10 != (int *)0x0);
FUN_8f62c660((byte *)auStack_e4,extraout_r1);
FUN_8f636618(&local_a4,0x80,(byte *)s_PRODUCT_NAME____s_8f65e808,(int *)auStack_e4);
uVar2 = DAT_8f67ee70;
piVar10 = (int *)(uint)local_a4;
if (piVar10 != (int *)0x0) {
pbVar7 = &local_a4;
do {
FUN_8f62f5e0(piVar10,(int *)0x0,uVar2);
pbVar7 = pbVar7 + 1;
piVar10 = (int *)(uint)*pbVar7;
} while (piVar10 != (int *)0x0);
}
uVar6 = 0x40;
FUN_8f636968(auStack_e4,0,0x40);
uVar11 = FUN_8f604814((byte *)auStack_e4,(int *)0x40,uVar6);
FUN_8f626460((int)uVar11,(int)((ulonglong)uVar11 >> 0x20));
FUN_8f636618(&local_a4,0x80,(byte *)s_VARIANT____s__s_8f65e81c,(int *)auStack_e4);
uVar2 = DAT_8f67ee70;
piVar10 = (int *)(uint)local_a4;
if (piVar10 != (int *)0x0) {
pbVar7 = &local_a4;
do {
FUN_8f62f5e0(piVar10,(int *)0x0,uVar2);
pbVar7 = pbVar7 + 1;
piVar10 = (int *)(uint)*pbVar7;
} while (piVar10 != (int *)0x0);
}
FUN_8f636968(auStack_e4,0,0x40);
FUN_8f62c6ac((byte *)auStack_e4,extraout_r1_00);
FUN_8f636618(&local_a4,0x80,(byte *)s_BOOTLOADER_VERSION____s_8f65e830,(int *)auStack_e4);
uVar2 = DAT_8f67ee70;
piVar10 = (int *)(uint)local_a4;
if (piVar10 != (int *)0x0) {
pbVar7 = &local_a4;
do {
FUN_8f62f5e0(piVar10,(int *)0x0,uVar2);
pbVar7 = pbVar7 + 1;
piVar10 = (int *)(uint)*pbVar7;
} while (piVar10 != (int *)0x0);
}
FUN_8f636968(auStack_e4,0,0x40);
FUN_8f62c6f8((byte *)auStack_e4,extraout_r1_01);
FUN_8f636618(&local_a4,0x80,(byte *)s_BASEBAND_VERSION____s_8f65e84c,(int *)auStack_e4);
uVar2 = DAT_8f67ee70;
piVar10 = (int *)(uint)local_a4;
if (piVar10 != (int *)0x0) {
pbVar7 = &local_a4;
do {
FUN_8f62f5e0(piVar10,(int *)0x0,uVar2);
pbVar7 = pbVar7 + 1;
piVar10 = (int *)(uint)*pbVar7;
} while (piVar10 != (int *)0x0);
}
FUN_8f636968(auStack_e4,0,0x40);
FUN_8f600550((byte *)auStack_e4,extraout_r1_02);
FUN_8f636618(&local_a4,0x80,(byte *)s_SERIAL_NUMBER____s_8f65e864,(int *)auStack_e4);
uVar2 = DAT_8f67ee70;
piVar10 = (int *)(uint)local_a4;
if (piVar10 != (int *)0x0) {
pbVar7 = &local_a4;
do {
FUN_8f62f5e0(piVar10,(int *)0x0,uVar2);
pbVar7 = pbVar7 + 1;
piVar10 = (int *)(uint)*pbVar7;
} while (piVar10 != (int *)0x0);
}
iVar5 = FUN_8f615da0();
piVar10 = (int *)s_disabled_8f65e7e8;
if (iVar5 != 0) {
piVar10 = (int *)s_enabled_8f65e7e0;
}
FUN_8f636618(&local_a4,0x80,(byte *)s_SECURE_BOOT____s_8f65e878,piVar10);
uVar2 = DAT_8f67ee70;
piVar10 = (int *)(uint)local_a4;
if (piVar10 != (int *)0x0) {
pbVar7 = &local_a4;
do {
FUN_8f62f5e0(piVar10,(int *)0x0,uVar2);
pbVar7 = pbVar7 + 1;
piVar10 = (int *)(uint)*pbVar7;
} while (piVar10 != (int *)0x0);
}
iVar5 = FUN_8f62c744();
piVar10 = (int *)s_unlocked_8f65e7fc;
if (iVar5 != 0) {
piVar10 = (int *)s_locked_8f65e7f4;
}
FUN_8f636618(&local_a4,0x80,(byte *)s_DEVICE_STATE____s_8f65e88c,piVar10);
uVar2 = DAT_8f67ee70;
piVar10 = (int *)(uint)local_a4;
if (piVar10 != (int *)0x0) {
pbVar7 = &local_a4;
do {
FUN_8f62f5e0(piVar10,(int *)&DAT_00000006,uVar2);
pbVar7 = pbVar7 + 1;
piVar10 = (int *)(uint)*pbVar7;
} while (piVar10 != (int *)0x0);
}
piVar4 = DAT_8f69d118;
param_1[0x10] = uVar8;
param_1[0x11] = 5;
param_1[0xf] = 5;
if (local_24 == piVar4) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(piVar10,local_24,piVar4);
}
// WARNING: Removing unreachable block (ram,0x8f610010)
void FUN_8f60ffb8(undefined4 param_1)
{
if (DAT_8f6881d0 != 0) {
return;
}
FUN_8f60f5e8();
return;
}
void FUN_8f610014(undefined4 param_1)
{
int *piVar1;
int *piVar2;
bool bVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
if (DAT_8f6881d0 == 0) {
FUN_8f60f5e8();
}
FUN_8f627334((int)&DAT_8f688230);
DAT_8f68822c = DAT_8f68821c;
FUN_8f636968((uint *)&DAT_8f6881d8,0,0x54);
DAT_8f688220 = 0;
DAT_8f68821c = param_1;
uVar4 = FUN_8f627418((int)&DAT_8f688230);
piVar2 = DAT_8f69d118;
if (DAT_8f6881d4 == 0) {
if (piVar1 == DAT_8f69d118) {
uVar4 = FUN_8f627744((byte *)s_selectkeydetect_8f65e3f0,(uint)FUN_8f60f39c,(uint)&DAT_8f6881d8
,0x10,0x2000);
piVar1 = (int *)((ulonglong)uVar4 >> 0x20);
if ((int)uVar4 == 0) {
if (piVar2 == DAT_8f69d118) {
dprintf((byte *)s_ERROR__creat_device_status_detec_8f65e400,piVar1,piVar2,DAT_8f69d118);
return;
}
}
else {
FUN_8f6279f4((int)uVar4,piVar1);
uVar4 = CONCAT44(DAT_8f69d118,piVar2);
bVar3 = piVar2 == DAT_8f69d118;
DAT_8f6881d4 = 1;
piVar2 = (int *)0x1;
if (bVar3) {
return;
}
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar2);
}
}
else if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
void FUN_8f6100cc(undefined4 param_1)
{
int *piVar1;
uint *puVar2;
piVar1 = DAT_8f69d118;
if (DAT_8f6881d0 == 0) {
FUN_8f60f5e8();
}
FUN_8f627334((int)&DAT_8f688230);
DAT_8f68822c = DAT_8f68821c;
puVar2 = FUN_8f636968((uint *)&DAT_8f6881d8,0,0x54);
DAT_8f688220 = 0;
DAT_8f68821c = param_1;
if (piVar1 == DAT_8f69d118) {
FUN_8f627418((int)&DAT_8f688230);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(puVar2,piVar1,DAT_8f69d118);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f610158(void)
{
uint uVar1;
int *piVar2;
int iVar3;
uint *puVar4;
uint uVar5;
uint uVar6;
uint uVar7;
undefined8 uVar8;
piVar2 = DAT_8f69d118;
puVar4 = (uint *)&DAT_0b000800;
do {
uVar6 = *puVar4 | *puVar4 >> 0x10;
uVar6 = uVar6 | uVar6 >> 8;
if (uVar6 != 0) {
uVar6 = uVar6 & 0xff | (uVar6 & 0xff) << 8;
uVar6 = uVar6 | uVar6 << 0x10;
break;
}
puVar4 = puVar4 + 1;
} while (puVar4 != (uint *)0xb000820);
_DAT_0b000000 = 0;
iVar3 = (_DAT_0b000004 & 0x1f) + 1;
uVar1 = iVar3 * 0x20;
if (iVar3 != 1) {
uVar7 = 0x20;
do {
uVar5 = uVar7 & 0x3fffffff;
uVar7 = uVar7 + 4;
*(uint *)(&DAT_0b000800 + uVar5) = uVar6;
} while (uVar7 <= uVar1 && uVar1 - uVar7 != 0);
}
uVar8 = FUN_8f608048(uVar1,uVar6);
_DAT_0b000000 = 1;
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar8,(int)((ulonglong)uVar8 >> 0x20),piVar2);
}
// WARNING: Removing unreachable block (ram,0x8f6102a4)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f610268(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6102e4)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f6102a8(undefined4 param_1)
{
_DAT_0b002010 = param_1;
return;
}
// WARNING: Removing unreachable block (ram,0x8f610898)
// WARNING: Removing unreachable block (ram,0x8f61046c)
void FUN_8f610438(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6104f8)
void FUN_8f6104a8(uint param_1)
{
ulonglong uVar1;
int *piVar2;
uint uVar3;
uint uVar4;
uint uVar5;
uint uVar6;
uint uVar7;
bool bVar8;
longlong lVar9;
longlong lVar10;
uint local_30;
uint uStack_2c;
lVar10 = FUN_8f658e24((uint)((ulonglong)DAT_8f68824c * (ulonglong)param_1),
(uint)((ulonglong)DAT_8f68824c * (ulonglong)param_1 >> 0x20),1000,0);
piVar2 = DAT_8f69d118;
lVar9 = FUN_8f610800();
uVar4 = (uint)((ulonglong)lVar9 >> 0x20);
uVar3 = (uint)lVar9;
uVar1 = lVar10 + lVar9 & 0xffffffffffffff;
uVar6 = (uint)uVar1;
uVar7 = (uint)(uVar1 >> 0x20);
bVar8 = uVar4 <= uVar7;
if (uVar7 == uVar4) {
bVar8 = uVar3 <= uVar6;
}
while (!bVar8) {
uVar5 = (uint)((ulonglong)lVar9 >> 0x20);
bVar8 = uVar5 <= uVar4;
if (uVar4 == uVar5) {
bVar8 = (uint)lVar9 <= uVar3;
}
if (bVar8 && (uVar4 != uVar5 || uVar3 != (uint)lVar9)) break;
lVar9 = FUN_8f610800();
uVar5 = (uint)((ulonglong)lVar9 >> 0x20);
bVar8 = uVar5 <= uVar7;
if (uVar7 == uVar5) {
bVar8 = (uint)lVar9 <= uVar6;
}
}
while( true ) {
uStack_2c = (uint)((ulonglong)lVar9 >> 0x20);
local_30 = (uint)lVar9;
bVar8 = uStack_2c <= uVar7;
if (uVar7 == uStack_2c) {
bVar8 = local_30 <= uVar6;
}
if (!bVar8 || uVar7 == uStack_2c && uVar6 == local_30) break;
lVar9 = FUN_8f610800();
}
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(local_30,uStack_2c,piVar2);
}
// WARNING: Removing unreachable block (ram,0x8f610550)
void FUN_8f6104fc(uint param_1)
{
ulonglong uVar1;
int *piVar2;
uint uVar3;
uint uVar4;
uint uVar5;
uint uVar6;
uint uVar7;
bool bVar8;
longlong lVar9;
longlong lVar10;
uint uStack_30;
uint uStack_2c;
lVar10 = FUN_8f658e24((uint)((ulonglong)DAT_8f68824c * (ulonglong)param_1),
(uint)((ulonglong)DAT_8f68824c * (ulonglong)param_1 >> 0x20),1000000,0);
piVar2 = DAT_8f69d118;
lVar9 = FUN_8f610800();
uVar4 = (uint)((ulonglong)lVar9 >> 0x20);
uVar3 = (uint)lVar9;
uVar1 = lVar10 + lVar9 & 0xffffffffffffff;
uVar6 = (uint)uVar1;
uVar7 = (uint)(uVar1 >> 0x20);
bVar8 = uVar4 <= uVar7;
if (uVar7 == uVar4) {
bVar8 = uVar3 <= uVar6;
}
while (!bVar8) {
uVar5 = (uint)((ulonglong)lVar9 >> 0x20);
bVar8 = uVar5 <= uVar4;
if (uVar4 == uVar5) {
bVar8 = (uint)lVar9 <= uVar3;
}
if (bVar8 && (uVar4 != uVar5 || uVar3 != (uint)lVar9)) break;
lVar9 = FUN_8f610800();
uVar5 = (uint)((ulonglong)lVar9 >> 0x20);
bVar8 = uVar5 <= uVar7;
if (uVar7 == uVar5) {
bVar8 = (uint)lVar9 <= uVar6;
}
}
while( true ) {
uStack_2c = (uint)((ulonglong)lVar9 >> 0x20);
uStack_30 = (uint)lVar9;
bVar8 = uStack_2c <= uVar7;
if (uVar7 == uStack_2c) {
bVar8 = uStack_30 <= uVar6;
}
if (!bVar8 || uVar7 == uStack_2c && uVar6 == uStack_30) break;
lVar9 = FUN_8f610800();
}
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uStack_30,uStack_2c,piVar2);
}
void FUN_8f610554(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
piVar1 = DAT_8f69d118;
DAT_8f68824c = FUN_8f61076c(param_1,param_2);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(DAT_8f68824c,piVar1,DAT_8f69d118);
}
// WARNING: Removing unreachable block (ram,0x8f6105d4)
void FUN_8f610598(void)
{
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f610678(int param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
int iVar2;
undefined4 extraout_r1;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
_DAT_0b02102c = _DAT_0b02102c & 0xfffffffe | 2;
DataSynchronizationBarrier(0xf);
iVar2 = FUN_8f610598();
_DAT_0b021028 = (uint)(param_1 * iVar2) / 1000;
DataSynchronizationBarrier(0xf);
DAT_8f688254 = param_1;
DAT_8f688258 = param_3;
DAT_8f68825c = param_2;
DAT_8f688260 = _DAT_0b021028;
FUN_8f61097c(0x121,&LAB_8f6105d8,(int *)0x0);
uVar3 = FUN_8f610944(0x121,extraout_r1);
_DAT_0b02102c = _DAT_0b02102c & 0xfffffffd | 1;
DataSynchronizationBarrier(0xf);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f6107a4)
void FUN_8f61076c(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f610858)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f610800(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6108d0)
void FUN_8f61089c(undefined4 param_1,undefined4 param_2)
{
FUN_8f608154();
return;
}
// WARNING: Removing unreachable block (ram,0x8f610940)
void FUN_8f61090c(uint param_1,undefined4 param_2)
{
int iVar1;
int *piVar2;
piVar2 = DAT_8f69d118;
iVar1 = 1 << (param_1 & 0x1f);
*(int *)(((param_1 >> 5) + 0x2c00060) * 4) = iVar1;
if (piVar2 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(0,iVar1,piVar2);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f610978)
void FUN_8f610944(uint param_1,undefined4 param_2)
{
int iVar1;
int *piVar2;
piVar2 = DAT_8f69d118;
iVar1 = 1 << (param_1 & 0x1f);
*(int *)(((param_1 >> 5) + 0x2c00040) * 4) = iVar1;
if (piVar2 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(0,iVar1,piVar2);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f6109b0)
void FUN_8f61097c(uint param_1,undefined4 param_2,int *param_3)
{
int *piVar1;
int iVar2;
undefined4 uVar3;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
int *in_lr;
piVar1 = DAT_8f69d118;
uVar3 = param_2;
if (0x1ac < param_1) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_qgic_common__8f65b81c,0x80);
uVar3 = extraout_r1_00;
}
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
uVar3 = extraout_r1;
}
iVar2 = DAT_8f67f324 + -1;
DAT_8f67f324 = iVar2;
*(undefined4 *)(&DAT_8f687330 + param_1 * 8) = param_2;
*(int **)(&DAT_8f687334 + param_1 * 8) = param_3;
if (iVar2 == 0) {
if (piVar1 == DAT_8f69d118) {
FUN_8f625b8c();
return;
}
}
else if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,uVar3,piVar1);
}
void FUN_8f6109b4(undefined *param_1,undefined4 param_2)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
if ((param_1 != (undefined *)0x0) &&
(param_1 = *(code **)(*(int *)(param_1 + 8) + 0xc), (code *)param_1 != (code *)0x0)) {
uVar2 = (*(code *)param_1)();
param_2 = (undefined4)((ulonglong)uVar2 >> 0x20);
param_1 = (undefined *)uVar2;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(param_1,param_2,piVar1);
}
return;
}
void FUN_8f610a0c(int param_1,undefined4 param_2)
{
int *piVar1;
undefined4 extraout_r1;
int iVar2;
code *pcVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
uVar4 = CONCAT44(param_2,param_1);
if ((param_1 != 0) && (iVar2 = *(int *)(param_1 + 0x10), iVar2 != 0)) {
if (iVar2 == 1) {
iVar2 = *(int *)(param_1 + 8);
if (*(code **)(iVar2 + 4) != (code *)0x0) {
(**(code **)(iVar2 + 4))();
iVar2 = *(int *)(param_1 + 8);
param_2 = extraout_r1;
}
pcVar3 = *(code **)(iVar2 + 0x34);
uVar4 = CONCAT44(param_2,pcVar3);
if (pcVar3 != (code *)0x0) {
uVar4 = (*pcVar3)(param_1);
}
uVar4 = FUN_8f610a0c((int)uVar4,(int)((ulonglong)uVar4 >> 0x20));
iVar2 = *(int *)(param_1 + 0x10);
}
*(int *)(param_1 + 0x10) = iVar2 + -1;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
void FUN_8f610aa0(int param_1,uint param_2)
{
int *piVar1;
uint extraout_r1;
int iVar2;
code *pcVar3;
undefined8 uVar4;
ulonglong uVar5;
piVar1 = DAT_8f69d118;
uVar5 = CONCAT44(param_2,param_1);
if (param_1 != 0) {
iVar2 = *(int *)(param_1 + 0x10);
if (iVar2 == 0) {
pcVar3 = *(code **)(*(int *)(param_1 + 8) + 0x34);
if (pcVar3 != (code *)0x0) {
uVar4 = (*pcVar3)();
param_2 = (uint)((ulonglong)uVar4 >> 0x20);
pcVar3 = (code *)uVar4;
}
uVar5 = FUN_8f610aa0((int)pcVar3,param_2);
param_2 = (uint)(uVar5 >> 0x20);
if ((int)uVar5 != 0) goto LAB_8f610b28;
if (**(code ***)(param_1 + 8) != (code *)0x0) {
uVar5 = (***(code ***)(param_1 + 8))(param_1);
param_2 = (uint)(uVar5 >> 0x20);
if ((int)uVar5 != 0) {
FUN_8f610a0c((int)pcVar3,param_2);
uVar5 = uVar5 & 0xffffffff | (ulonglong)extraout_r1 << 0x20;
goto LAB_8f610b28;
}
}
iVar2 = *(int *)(param_1 + 0x10);
}
uVar5 = (ulonglong)param_2 << 0x20;
*(int *)(param_1 + 0x10) = iVar2 + 1;
}
LAB_8f610b28:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)(uVar5 >> 0x20),piVar1);
}
void FUN_8f610bf4(int *param_1,int *param_2,undefined4 param_3)
{
int *piVar1;
int iVar2;
undefined4 uVar3;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
int *piVar4;
int *piVar5;
int iVar6;
undefined8 uVar7;
piVar1 = DAT_8f69d118;
iVar2 = DAT_8f688268;
if (DAT_8f688264 == (int *)0x0 || DAT_8f688268 == 0) {
dprintf((byte *)s_Alert___clock_list_not_defined__8f65ebb4,param_2,param_3,DAT_8f69d118);
iVar2 = 0;
uVar3 = extraout_r1_00;
}
else {
iVar6 = 0;
piVar4 = DAT_8f69d118;
piVar5 = DAT_8f688264;
do {
uVar7 = FUN_8f636bdc(*piVar5,(byte *)param_1);
uVar3 = (undefined4)((ulonglong)uVar7 >> 0x20);
if ((int)uVar7 == 0) {
iVar2 = piVar5[1];
goto LAB_8f610c60;
}
iVar6 = iVar6 + 1;
piVar5 = piVar5 + 2;
} while (iVar6 != iVar2);
dprintf((byte *)s_Alert___Requested_clock___s__is_n_8f65ebd8,param_1,param_3,piVar4);
iVar2 = 0;
uVar3 = extraout_r1;
}
LAB_8f610c60:
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,uVar3,piVar1);
}
return;
}
void FUN_8f610ca8(int *param_1,int *param_2,int param_3)
{
int *piVar1;
int iVar2;
int *piVar3;
int *extraout_r1;
int *extraout_r1_00;
int *extraout_r1_01;
int iVar4;
int *piVar5;
undefined8 uVar6;
piVar1 = DAT_8f69d118;
iVar4 = param_3;
piVar5 = DAT_8f69d118;
uVar6 = FUN_8f610bf4(param_1,param_2,param_3);
piVar3 = (int *)((ulonglong)uVar6 >> 0x20);
iVar2 = (int)uVar6;
if (iVar2 == 0) {
param_3 = -7;
dprintf((byte *)s_Can_t_find_clock_with_id___s_8f65ec08,param_1,iVar4,piVar5);
piVar3 = extraout_r1_01;
goto LAB_8f610cec;
}
if (param_2 == (int *)0x0) {
joined_r0x8f610d2c:
if (param_3 != 0) {
uVar6 = FUN_8f610aa0(iVar2,(uint)piVar3);
piVar3 = (int *)((ulonglong)uVar6 >> 0x20);
param_3 = (int)uVar6;
if (param_3 != 0) {
dprintf((byte *)s_Clock_enable_failed__8f65ec40,piVar3,iVar4,piVar5);
piVar3 = extraout_r1;
}
}
}
else {
piVar5 = *(int **)(*(int *)(iVar2 + 8) + 0x10);
if (piVar5 == (int *)0x0) {
uVar6 = CONCAT44(piVar3,0xfffffff9);
}
else {
uVar6 = (*(code *)piVar5)(iVar2,param_2);
piVar3 = (int *)((ulonglong)uVar6 >> 0x20);
if ((int)uVar6 == 0) goto joined_r0x8f610d2c;
}
param_3 = (int)uVar6;
dprintf((byte *)s_Clock_set_rate_failed__8f65ec28,(int *)((ulonglong)uVar6 >> 0x20),iVar4,piVar5
);
piVar3 = extraout_r1_00;
}
LAB_8f610cec:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_3,piVar3,piVar1);
}
void FUN_8f610ee8(int param_1,undefined4 param_2)
{
int *piVar1;
undefined4 uVar2;
undefined4 extraout_r1;
uint *puVar3;
int iVar4;
piVar1 = DAT_8f69d118;
puVar3 = *(uint **)(param_1 + -0xc);
*puVar3 = *puVar3 | 1;
if ((*(int *)(param_1 + 0x20) == 0) || (-1 < (int)*puVar3)) {
LAB_8f610f54:
uVar2 = 0;
}
else {
iVar4 = 100;
do {
FUN_8f6104a8(1);
param_2 = extraout_r1;
if (-1 < **(int **)(param_1 + -0xc)) goto LAB_8f610f54;
iVar4 = iVar4 + -1;
} while (iVar4 != 0);
uVar2 = 1;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,param_2,piVar1);
}
void FUN_8f611074(int param_1,uint param_2)
{
int *piVar1;
undefined4 uVar2;
uint extraout_r1;
uint uVar3;
code *pcVar4;
uint *puVar5;
int *in_lr;
piVar1 = DAT_8f69d118;
puVar5 = *(uint **)(param_1 + -8);
uVar3 = *puVar5;
do {
if (uVar3 == 0xfffffffe) {
uVar2 = 0xfffffff8;
LAB_8f6110f8:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,param_2,piVar1);
}
if (uVar3 == param_2) {
if (*(uint **)(param_1 + -4) == puVar5) {
uVar2 = 0;
}
else {
FUN_8f610aa0(puVar5[1],param_2);
pcVar4 = *(code **)(param_1 + -0xc);
if (pcVar4 == (code *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_clock_lib2_c_8f65ec58,0x9b);
pcVar4 = *(code **)(param_1 + -0xc);
}
(*pcVar4)(param_1 + -0x20,puVar5);
*(uint **)(param_1 + -4) = puVar5;
uVar2 = 0;
param_2 = extraout_r1;
}
goto LAB_8f6110f8;
}
puVar5 = puVar5 + 6;
uVar3 = *puVar5;
} while( true );
}
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f611378(int param_1,byte *param_2,int param_3)
{
int *piVar1;
byte *pbVar2;
uint uVar3;
int *extraout_r1;
uint uVar4;
uint uVar5;
byte *pbVar6;
uint uVar7;
uint uVar8;
uint *puVar9;
int iVar10;
uint uVar11;
uint uVar12;
uint uVar13;
bool bVar14;
uint local_3c;
int *local_34;
piVar1 = DAT_8f69d118;
if (param_3 == 0 || param_2 == (byte *)0x0) {
iVar10 = 3;
}
else {
uVar11 = 0;
pbVar2 = param_2;
do {
pbVar6 = pbVar2 + 1;
uVar4 = (uint)*pbVar2;
uVar12 = uVar11;
if (uVar4 == 10) {
uVar12 = uVar11 + 1;
}
uVar11 = uVar12 + 1;
pbVar2 = pbVar6;
} while (pbVar6 != param_2 + param_3);
local_3c = uVar11 >> 2;
if ((*(uint *)(param_1 + 0xa4) & 8) == 0) {
uVar8 = *(uint *)(param_1 + 0xb4);
while ((uVar8 & 0x80) == 0) {
FUN_8f6104fc(1);
uVar8 = *(uint *)(param_1 + 0xb4);
}
}
local_34 = &DAT_8f67f324;
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
}
bVar14 = (uVar11 & 3) != 0;
*(uint *)(param_1 + 0x40) = uVar11;
if (bVar14) {
uVar4 = local_3c;
}
*(undefined4 *)(param_1 + 0xa8) = 0x300;
if (bVar14) {
local_3c = uVar4 + 1;
}
if (0 < (int)local_3c) {
if (3 < uVar11) {
uVar11 = 4;
}
uVar4 = 0;
uVar12 = uVar12 - 3;
while( true ) {
uVar8 = uVar12;
pbVar2 = param_2;
uVar12 = uVar11;
if (uVar11 != 0) {
uVar7 = 0;
uVar12 = 0;
uVar3 = 0;
uVar13 = 0;
puVar9 = (uint *)(param_1 + 0xa4);
do {
uVar5 = (uint)*pbVar2;
if (uVar5 == 10) {
*pbVar2 = 0x80;
uVar5 = 0xd << (uVar7 & 0xff);
}
else {
bVar14 = uVar5 == 0x80;
if (bVar14) {
uVar5 = 10;
}
uVar13 = uVar13 + 1 & 0xff;
if (bVar14) {
puVar9 = (uint *)0xa;
}
uVar5 = uVar5 << (uVar7 & 0xff);
if (bVar14) {
*pbVar2 = (byte)puVar9;
}
pbVar2 = param_2 + uVar13;
}
uVar12 = uVar12 | uVar5;
uVar3 = uVar3 + 1;
uVar7 = uVar7 + 8;
} while (uVar3 != uVar11);
}
while ((*(uint *)(param_1 + 0xa4) & 4) == 0) {
FUN_8f6104fc(1);
}
uVar4 = uVar4 + 1;
*(uint *)(param_1 + 0x100) = uVar12;
if (uVar4 == local_3c) break;
uVar12 = uVar8 - 4;
param_2 = pbVar2;
uVar11 = uVar8;
if (3 < uVar8) {
uVar11 = 4;
}
}
}
iVar10 = DAT_8f67f324 + -1;
DAT_8f67f324 = iVar10;
if (iVar10 == 0) {
FUN_8f625b8c();
param_2 = (byte *)extraout_r1;
}
else {
iVar10 = 0;
param_2 = (byte *)local_34;
}
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar10,param_2,piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f6117b4)
void FUN_8f611778(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6117f4)
void FUN_8f6117b8(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f611874)
void FUN_8f611838(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6118b4)
void FUN_8f611878(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6118f4)
void FUN_8f6118b8(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f611934)
void FUN_8f6118f8(void)
{
return;
}
void FUN_8f611938(uint param_1,uint param_2)
{
int *piVar1;
uint uVar2;
piVar1 = DAT_8f69d118;
if ((DAT_8f688284 == 0) && (param_1 < 4)) {
if ((DAT_8f688286 < 0xb) && (param_1 != 3)) {
uVar2 = (&DAT_8f67eee4)[param_1 * 3];
param_2 = param_2 | uVar2 & 0xffffff00;
(&DAT_8f67eee4)[param_1 * 3] = param_2;
param_1 = uVar2 & 0xffffff00;
}
else if (param_1 < DAT_8f67ef10) {
param_1 = DAT_8f67ef18 + param_1 * 0xc;
param_2 = param_2 | *(uint *)(param_1 + 8) & 0xffffff00;
*(uint *)(param_1 + 8) = param_2;
}
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1,param_2,piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f611aa8)
void FUN_8f6119f8(uint param_1)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f611ae8)
void FUN_8f611aac(void)
{
return;
}
void FUN_8f611aec(void)
{
int iVar1;
undefined4 uVar2;
undefined4 extraout_r1;
undefined4 uVar3;
int iVar4;
int iVar5;
int *in_lr;
undefined8 uVar6;
undefined4 auStack_64 [6];
int iStack_4c;
int local_40;
int local_38;
int *local_1c;
local_1c = DAT_8f69d118;
iVar1 = FUN_8f604aa4();
if (iVar1 == 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_board_c_8f65ed28,0x1d0);
}
uVar6 = FUN_8f604c04();
uVar3 = (undefined4)((ulonglong)uVar6 >> 0x20);
iVar1 = (int)uVar6;
if (iVar1 != 0) {
iVar5 = 0;
iVar4 = 0;
do {
while (FUN_8f604bb4(auStack_64,iVar4), local_40 != 0xe) {
iVar4 = iVar4 + 1;
if (iVar4 == iVar1) goto LAB_8f611b6c;
}
iVar4 = iVar4 + 1;
if (local_38 == 1) {
iVar5 = iVar5 + iStack_4c;
}
} while (iVar4 != iVar1);
LAB_8f611b6c:
uVar3 = extraout_r1;
if (iVar5 == 0x20000000) {
uVar2 = 1;
goto LAB_8f611b7c;
}
}
uVar2 = 0;
LAB_8f611b7c:
if (local_1c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,uVar3,local_1c);
}
return;
}
void FUN_8f611bc4(void)
{
uint uVar1;
uint uVar2;
undefined *puVar3;
undefined *puVar4;
undefined4 *puVar5;
int *in_lr;
bool bVar6;
ulonglong uVar7;
undefined8 uVar8;
undefined8 uVar9;
uint local_24c;
undefined auStack_248 [4];
undefined4 local_244;
undefined4 local_240;
uint local_214;
int local_208;
undefined auStack_200 [4];
undefined4 local_1fc;
undefined4 local_1f8;
uint local_1cc;
int local_1c0;
undefined4 uStack_1bc;
undefined4 uStack_1b8;
undefined auStack_1b0 [4];
undefined4 local_1ac;
undefined4 local_1a8;
undefined auStack_198 [28];
uint local_17c;
uint local_178;
int local_170;
uint local_16c [6];
undefined auStack_154 [4];
undefined4 local_150;
undefined4 local_14c;
undefined auStack_13c [28];
uint local_120;
uint local_11c;
int local_114;
uint local_110 [7];
undefined auStack_f4 [4];
undefined4 local_f0;
undefined4 local_ec;
undefined auStack_dc [28];
uint local_c0;
uint local_bc;
int local_b4;
uint local_b0 [7];
undefined4 local_94;
undefined auStack_90 [4];
undefined4 local_8c;
undefined4 local_88;
uint local_5c;
uint local_58;
int local_50;
undefined4 local_34;
undefined4 local_30;
undefined4 local_2c;
undefined4 local_28;
int *local_24;
local_24c = 0;
local_24 = DAT_8f69d118;
uVar7 = FUN_8f604754(0x89,(uint)&local_24c,4,0);
if ((int)uVar7 == 0) {
uVar2 = local_24c & 0xffff;
DAT_8f688286 = (undefined2)uVar2;
DAT_8f688284 = (undefined2)(local_24c >> 0x10);
if ((int *)(local_24c >> 0x10) == (int *)0x0) {
if (uVar2 == 6) {
uVar7 = FUN_8f6045dc(0x89,(uint)auStack_248,0x48);
if ((int)uVar7 != 0) goto LAB_8f611c88;
DAT_8f67eebc = local_244;
DAT_8f67eec8 = local_240;
DAT_8f67eecc = local_214;
DAT_8f67eed0 = local_208;
}
else if (uVar2 == 7) {
uVar7 = FUN_8f6045dc(0x89,(uint)auStack_200,0x50);
if ((int)uVar7 != 0) goto LAB_8f611c88;
DAT_8f67eedc = uStack_1bc;
DAT_8f67eee0 = uStack_1b8;
DAT_8f67eebc = local_1fc;
DAT_8f67eec8 = local_1f8;
DAT_8f67eecc = local_1cc;
DAT_8f67eed0 = local_1c0;
}
else if (uVar2 == 8) {
uVar7 = FUN_8f6045dc(0x89,(uint)auStack_1b0,0x5c);
if ((int)uVar7 != 0) goto LAB_8f611c88;
DAT_8f67eed4 = local_178 & 0xff0000 | local_170 << 0x18 | local_17c & 0xff |
(local_178 & 0xff) << 8;
DAT_8f67eecc = local_17c;
DAT_8f67eed0 = local_170;
DAT_8f67eebc = local_1ac;
DAT_8f67eec8 = local_1a8;
puVar3 = auStack_1b0;
puVar5 = &DAT_8f67eebc;
do {
uVar1 = *(uint *)(puVar3 + 0x48);
puVar4 = puVar3 + 8;
uVar2 = *(uint *)(puVar3 + 0x44);
bVar6 = uVar2 != 0x7fffffff;
puVar5[8] = uVar2;
if (bVar6) {
uVar2 = uVar2 & 0xff;
}
puVar5[9] = uVar1;
if (!bVar6) {
uVar2 = 0;
}
puVar5[10] = (uVar1 & 0xff) << 8 | uVar1 & 0xff0000 | uVar2;
puVar3 = puVar4;
puVar5 = puVar5 + 3;
} while (puVar4 != auStack_198);
}
else if (uVar2 == 9) {
uVar7 = FUN_8f6045dc(0x89,(uint)auStack_154,0x60);
if ((int)uVar7 != 0) goto LAB_8f611c88;
DAT_8f67eed4 = local_11c & 0xff0000 | local_114 << 0x18 | local_120 & 0xff |
(local_11c & 0xff) << 8;
DAT_8f67eecc = local_120;
DAT_8f67eed0 = local_114;
DAT_8f67eebc = local_150;
DAT_8f67eec8 = local_14c;
puVar3 = auStack_154;
puVar5 = &DAT_8f67eebc;
do {
uVar1 = *(uint *)(puVar3 + 0x48);
puVar4 = puVar3 + 8;
uVar2 = *(uint *)(puVar3 + 0x44);
bVar6 = uVar2 != 0x7fffffff;
puVar5[8] = uVar2;
if (bVar6) {
uVar2 = uVar2 & 0xff;
}
puVar5[9] = uVar1;
if (!bVar6) {
uVar2 = 0;
}
puVar5[10] = (uVar1 & 0xff) << 8 | uVar1 & 0xff0000 | uVar2;
puVar3 = puVar4;
puVar5 = puVar5 + 3;
} while (puVar4 != auStack_13c);
DAT_8f67eec0 = local_110[6];
}
else if (uVar2 == 10) {
uVar7 = FUN_8f6045dc(0x89,(uint)auStack_f4,100);
if ((int)uVar7 != 0) goto LAB_8f611c88;
DAT_8f67eed4 = local_bc & 0xff0000 | local_b4 << 0x18 | local_c0 & 0xff |
(local_bc & 0xff) << 8;
DAT_8f67eecc = local_c0;
DAT_8f67eed0 = local_b4;
DAT_8f67eebc = local_f0;
DAT_8f67eec8 = local_ec;
puVar3 = auStack_f4;
puVar5 = &DAT_8f67eebc;
do {
uVar1 = *(uint *)(puVar3 + 0x48);
puVar4 = puVar3 + 8;
uVar2 = *(uint *)(puVar3 + 0x44);
bVar6 = uVar2 != 0x7fffffff;
puVar5[8] = uVar2;
if (bVar6) {
uVar2 = uVar2 & 0xff;
}
puVar5[9] = uVar1;
if (!bVar6) {
uVar2 = 0;
}
puVar5[10] = (uVar1 & 0xff) << 8 | uVar1 & 0xff0000 | uVar2;
puVar3 = puVar4;
puVar5 = puVar5 + 3;
} while (puVar4 != auStack_dc);
DAT_8f67eec0 = local_b0[6];
DAT_8f67eec4 = local_94;
}
else if (10 < uVar2) {
uVar7 = FUN_8f6045dc(0x89,(uint)auStack_90,0x6c);
if ((int)uVar7 != 0) goto LAB_8f611c88;
DAT_8f67eed0 = local_50;
DAT_8f67eecc = local_5c;
DAT_8f67eebc = local_8c;
DAT_8f67eec8 = local_88;
DAT_8f67eec0 = local_34;
DAT_8f67eec4 = local_30;
DAT_8f67ef10 = local_2c;
DAT_8f67ef14 = local_28;
DAT_8f67eed4 = local_58 & 0xff0000 | local_50 << 0x18 | local_5c & 0xff |
(local_58 & 0xff) << 8;
}
uVar8 = FUN_8f611aec();
uVar9 = FUN_8f6263f0((int)uVar8,(int)((ulonglong)uVar8 >> 0x20));
uVar7 = FUN_8f626428((int)uVar9,(int)((ulonglong)uVar9 >> 0x20));
DAT_8f67ef0c = (int)uVar8 << 8 | (int)uVar9 << 0x10 | (int)uVar7 << 0xb;
uVar7 = uVar7 & 0xffffffff00000000 | (ulonglong)DAT_8f67ef0c;
}
else {
dprintf((byte *)s_Unsupported_board_info_format__u_8f65ed90,(int *)(local_24c >> 0x10),uVar2,
&DAT_8f688284);
uVar7 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_board_c_8f65ed28,0x11e);
}
}
LAB_8f611c88:
if (local_24 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar7,(int)(uVar7 >> 0x20),local_24);
}
return;
}
void FUN_8f61203c(void)
{
int *piVar1;
int *piVar2;
undefined4 extraout_r1;
undefined4 uVar3;
int *in_lr;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
FUN_8f611bc4();
uVar4 = FUN_8f600600(&DAT_8f67eebc,extraout_r1);
piVar2 = DAT_8f69d118;
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
uVar4 = CONCAT44(DAT_8f67eebc,0x8f67eebc);
if (DAT_8f67eebc == (int *)0x130) {
LAB_8f6006dc:
DAT_8f67eed8 = 1;
uVar4 = CONCAT44(DAT_8f67eebc,0x8f67eebc);
goto LAB_8f6006ac;
}
if (DAT_8f67eebc < (int *)0x131) {
uVar3 = 0x125;
if (DAT_8f67eebc == (int *)0x125) goto LAB_8f6006d0;
}
else {
if (DAT_8f67eebc == (int *)0x152) {
LAB_8f6006d0:
DAT_8f67eed8 = 0;
goto LAB_8f6006ac;
}
uVar3 = 0x15f;
if (DAT_8f67eebc == (int *)0x15f) goto LAB_8f6006dc;
}
dprintf((byte *)s_Platform_type___u_is_not_support_8f65985c,DAT_8f67eebc,piVar1,uVar3);
uVar4 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_target_msm8953_init_c_8f659840,0x1e0);
LAB_8f6006ac:
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar2);
}
void FUN_8f61208c(int param_1,int param_2,uint param_3,byte *param_4)
{
byte bVar1;
int *piVar2;
uint *puVar3;
uint uVar4;
uint uVar5;
uint *puVar6;
uint uVar7;
uint uVar8;
uint uStack_38;
uint *local_34;
uint uStack_30;
undefined4 uStack_2c;
uint uStack_28;
int *local_24;
piVar2 = DAT_8f69d118;
uVar8 = (uint)*param_4;
puVar6 = &uStack_38;
local_34 = DAT_8f65edb8;
uStack_30 = DAT_8f65edbc;
uStack_2c = DAT_8f65edc0;
uStack_28 = DAT_8f65edc4;
local_24 = DAT_8f69d118;
if (uVar8 < param_3) {
uVar7 = 0;
do {
uVar4 = uVar8 + 1;
bVar1 = *(byte *)(param_1 + uVar8);
puVar6 = puVar6 + 1;
uVar5 = *puVar6;
uVar8 = uVar4 & 0xff;
*param_4 = (byte)uVar8;
uVar7 = uVar7 | (uint)bVar1 << (uVar5 & 0xff);
puVar3 = &uStack_28;
if (param_3 <= uVar8) break;
} while (puVar6 != &uStack_28);
}
else {
uVar7 = 0;
puVar3 = DAT_8f65edb8;
uVar4 = DAT_8f65edbc;
}
*(uint *)(DAT_8f688290 * 0x8000 + 0x2400010 + param_2 * 4) = uVar7;
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(puVar3,uVar4,piVar2);
}
void FUN_8f61214c(int param_1,int param_2,uint param_3,byte *param_4)
{
uint *puVar1;
int *piVar2;
uint uVar3;
uint uVar4;
uint uVar5;
int iVar6;
uint local_40 [4];
undefined4 local_30;
int *local_2c;
piVar2 = DAT_8f69d118;
uVar3 = *(uint *)(PTR_DAT_8f61220c + 4);
local_40[0] = *(uint *)PTR_DAT_8f61220c;
local_40[1] = uVar3;
local_40[2] = *(undefined4 *)(PTR_DAT_8f61220c + 8);
local_40[3] = *(undefined4 *)(PTR_DAT_8f61220c + 0xc);
local_30 = *(undefined4 *)(PTR_DAT_8f61220c + 0x10);
iVar6 = 0;
local_2c = DAT_8f69d118;
uVar5 = (uint)*param_4;
uVar4 = *(uint *)(DAT_8f688290 * 0x8000 + 0x2c00018 + param_2 * 4);
do {
if (param_3 <= uVar5) break;
puVar1 = local_40 + iVar6;
uVar3 = (uint)*(byte *)((int)&local_30 + iVar6);
iVar6 = iVar6 + 1;
*(char *)(param_1 + uVar5) = (char)((uVar4 & *puVar1) >> uVar3);
uVar5 = *param_4 + 1 & 0xff;
*param_4 = (byte)uVar5;
} while (iVar6 != 4);
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(local_30,uVar3,piVar2);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f612210(undefined4 param_1,undefined4 param_2)
{
int iVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
undefined4 uVar5;
int *piVar6;
int iVar7;
int *in_lr;
undefined8 uVar8;
iVar3 = DAT_8f69d118;
DAT_8f688288 = _DAT_0200f000;
uVar8 = FUN_8f602f6c(param_1,param_2);
DAT_8f688298 = (int)uVar8;
uVar4 = param_2;
uVar5 = param_1;
if (0x2000ffff < DAT_8f688288) {
DAT_8f68829c = FUN_8f63666c(0x1000,(int)((ulonglong)uVar8 >> 0x20));
if (DAT_8f68829c == 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_spmi_c_8f65eddc,0x3d);
}
iVar2 = DAT_8f68829c;
iVar1 = DAT_8f688298;
uVar4 = DAT_8f68828c;
uVar5 = DAT_8f688290;
if (DAT_8f688298 != 0) {
iVar7 = 0;
piVar6 = (int *)&DAT_0200f800;
do {
*(char *)(iVar2 + ((uint)(*piVar6 << 0x10) >> 0x18 | ((uint)(*piVar6 << 0xc) >> 0x1c) << 8))
= (char)iVar7;
iVar7 = iVar7 + 1;
piVar6 = piVar6 + 1;
uVar4 = DAT_8f68828c;
uVar5 = DAT_8f688290;
} while (iVar7 != iVar1);
}
}
DAT_8f688290 = uVar5;
DAT_8f68828c = uVar4;
DAT_8f688294 = 1;
if (iVar3 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar3,DAT_8f69d118,(int *)0x1);
}
return;
}
void FUN_8f612340(byte *param_1,int *param_2)
{
int iVar1;
uint *puVar2;
uint *extraout_r1;
uint *extraout_r1_00;
uint uVar3;
uint uVar4;
uint local_20;
int *local_1c;
uVar4 = DAT_8f688290;
local_1c = DAT_8f69d118;
local_20 = 0;
if (DAT_8f688288 < 0x20010000) {
iVar1 = DAT_8f688290 * 0x8000;
*(undefined4 *)(iVar1 + 0x2400004) = 0;
if (param_1 == (byte *)0x0) {
dprintf((byte *)s_PMIC_arbiter_error__no_command_p_8f65ee04,param_2,&DAT_8f688290,0);
uVar4 = 1;
puVar2 = extraout_r1_00;
goto LAB_8f612444;
}
}
else {
uVar4 = (uint)*(byte *)(DAT_8f68829c + (uint)CONCAT11(param_1[2],param_1[3]));
iVar1 = uVar4 * 0x8000;
DAT_8f688290 = uVar4;
*(undefined4 *)(iVar1 + 0x2400004) = 0;
}
FUN_8f61208c(*param_2,0,(uint)*(byte *)(param_2 + 1),(byte *)&local_20);
uVar3 = (uint)*(byte *)(param_2 + 1);
if (local_20 < uVar3) {
FUN_8f61208c(*param_2,1,uVar3,(byte *)&local_20);
uVar3 = (uint)*(byte *)(param_2 + 1);
}
puVar2 = (uint *)(iVar1 + 0x2400008);
uVar3 = uVar3 - 1 & 0xff;
param_1[5] = (byte)uVar3;
*param_1 = 0;
*(uint *)((uVar4 + 0x480) * 0x8000) = (uint)param_1[1] << 0x1a | (uint)param_1[4] << 4 | uVar3;
do {
uVar3 = *puVar2;
} while (uVar3 == 0);
uVar4 = uVar3 ^ 1;
if (uVar4 != 0) {
dprintf((byte *)s_SPMI_write_command_failure__cmd__8f65ee30,(int *)(uint)*param_1,uVar4,uVar3);
puVar2 = extraout_r1;
}
LAB_8f612444:
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar4,puVar2,local_1c);
}
void FUN_8f6124ac(byte *param_1,int *param_2)
{
int iVar1;
byte bVar2;
undefined4 extraout_r1;
undefined4 uVar3;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
uint uVar4;
uint uVar5;
byte local_15;
int *local_14;
local_15 = 0;
local_14 = DAT_8f69d118;
if (0x2000ffff < DAT_8f688288) {
DAT_8f688290 = (uint)*(byte *)(DAT_8f68829c + (uint)CONCAT11(param_1[2],param_1[3]));
}
iVar1 = DAT_8f688290 * 0x8000;
*(undefined4 *)(iVar1 + 0x2c00004) = 0;
bVar2 = *(byte *)(param_2 + 1);
*param_1 = 1;
uVar4 = bVar2 - 1 & 0xff;
param_1[5] = (byte)uVar4;
*(uint *)(iVar1 + 0x2c00000) =
(uint)param_1[4] << 4 | (uint)param_1[1] << 0x1a | 0x8000000 | uVar4;
do {
uVar4 = *(uint *)(iVar1 + 0x2c00008);
} while (uVar4 == 0);
uVar5 = uVar4 ^ 1;
if (uVar5 == 0) {
FUN_8f61214c(*param_2,0,(uint)*(byte *)(param_2 + 1),&local_15);
uVar3 = extraout_r1;
if ((uint)local_15 < (uint)*(byte *)(param_2 + 1)) {
FUN_8f61214c(*param_2,1,(uint)*(byte *)(param_2 + 1),&local_15);
uVar3 = extraout_r1_01;
if ((uint)local_15 < (uint)*(byte *)(param_2 + 1)) {
FUN_8f61214c(*param_2,2,(uint)*(byte *)(param_2 + 1),&local_15);
uVar3 = extraout_r1_02;
goto LAB_8f612578;
}
}
uVar5 = 0;
}
else {
dprintf((byte *)s_SPMI_read_command_failure__cmd_i_8f65ee68,(int *)(uint)*param_1,uVar5,uVar4);
uVar3 = extraout_r1_00;
}
LAB_8f612578:
if (local_14 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar5,uVar3,local_14);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f612654)
void FUN_8f612618(void)
{
return;
}
void FUN_8f612690(int *param_1,int param_2)
{
int *piVar1;
uint uVar2;
piVar1 = DAT_8f69d118;
*(undefined4 *)
(*param_1 + 0x13004 + (uint)*(byte *)((int)param_1 + param_2 * 0x18 + 0x1a) * 0x1000) = 1;
uVar2 = (uint)*(byte *)((int)param_1 + param_2 * 0x18 + 0x1a);
*(undefined4 *)(*param_1 + 0x13004 + uVar2 * 0x1000) = 0;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1,uVar2,piVar1);
}
void FUN_8f6126fc(int *param_1,int param_2,uint param_3)
{
int *piVar1;
uint uVar2;
uint uVar3;
int *piVar4;
int *extraout_r1;
int iVar5;
uint uVar6;
piVar1 = DAT_8f69d118;
uVar3 = (uint)*(byte *)((int)param_1 + (param_2 + 1) * 0x18 + 2);
iVar5 = *param_1 + uVar3 * 0x1000;
while( true ) {
do {
uVar6 = *(uint *)(*param_1 + (param_1[0x15] + 3) * 0x1000);
} while ((uVar6 & 1 << uVar3 & 0x7fffU) == 0);
piVar4 = *(int **)(iVar5 + 0x13010);
uVar2 = (uint)piVar4 & 0x10;
if (uVar2 != 0) break;
if (((uint)piVar4 & param_3) != 0) {
*(undefined4 *)(iVar5 + 0x13014) = 0x29;
LAB_8f612774:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,piVar4,piVar1);
}
}
dprintf((byte *)s_Unexpected_interrupt___val__u_8f65eea0,piVar4,param_3,uVar6);
uVar2 = 1;
piVar4 = extraout_r1;
goto LAB_8f612774;
}
void FUN_8f6127a4(int *param_1,int param_2)
{
int *piVar1;
uint uVar2;
uint uVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
*(undefined4 *)
(*param_1 + 0x13018 + (uint)*(byte *)((int)param_1 + param_2 * 0x18 + 0x1a) * 0x1000) = 0x19;
uVar2 = *(uint *)(*param_1 + 0x3004 + param_1[0x15] * 0x1000);
uVar3 = uVar2 | 1 << *(sbyte *)((int)param_1 + param_2 * 0x18 + 0x1a);
uVar4 = CONCAT44(uVar3,uVar2);
*(uint *)(*param_1 + 0x3004 + param_1[0x15] * 0x1000) = uVar3;
if (*(char *)(param_1 + param_2 * 6 + 7) == '\0') {
if (piVar1 == DAT_8f69d118) {
return;
}
}
else {
uVar4 = FUN_8f61097c((uint)*(byte *)((int)param_1 + param_2 * 0x18 + 0x1b),&LAB_8f612658,
(int *)0x0);
if (piVar1 == DAT_8f69d118) {
FUN_8f610944((uint)*(byte *)((int)param_1 + param_2 * 0x18 + 0x1b),
(int)((ulonglong)uVar4 >> 0x20));
return;
}
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f61288c)
void FUN_8f61285c(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f612890(int *param_1,int param_2)
{
byte bVar1;
int *piVar2;
int iVar3;
undefined4 uVar4;
uint uVar5;
undefined4 uVar6;
undefined4 extraout_r1;
int iVar7;
int *piVar8;
uint uVar9;
int *in_lr;
piVar2 = DAT_8f69d118;
piVar8 = param_1 + param_2 * 6;
if (*(short *)(piVar8 + 5) < 0) {
dprintf((byte *)s_Size_exceeds_max_size_for_a_desc_8f65eec0,DAT_8f69d118,
(int)*(short *)(piVar8 + 5),piVar8);
uVar4 = 1;
uVar6 = extraout_r1;
}
else {
iVar3 = FUN_8f602f04(piVar8[3] & 7,DAT_8f69d118);
if (iVar3 != 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_bam_c_8f65eef0,0xa1);
}
uVar9 = (uint)*(ushort *)(param_1 + param_2 * 6 + 5);
if ((uVar9 - 1 & uVar9) != 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_bam_c_8f65eef0,0xa6);
uVar9 = (uint)*(ushort *)(param_1 + param_2 * 6 + 5);
}
iVar7 = *param_1;
iVar3 = param_1[param_2 * 6 + 3];
param_1[param_2 * 6 + 4] = iVar3;
uVar5 = (uint)*(byte *)((int)param_1 + param_2 * 0x18 + 0x1a);
*(uint *)(iVar7 + 0x13820 + uVar5 * 0x1000) = uVar9 << 3;
iVar7 = *param_1;
bVar1 = *(byte *)((int)param_1 + param_2 * 0x18 + 0x1a);
uVar4 = FUN_8f602f04(iVar3,uVar5);
uVar6 = 1;
*(undefined4 *)(iVar7 + 0x1381c + (uint)bVar1 * 0x1000) = uVar4;
uVar4 = 0;
*(undefined2 *)((int)param_1 + param_2 * 0x18 + 0x16) = 8;
iVar3 = *(byte *)((int)param_1 + param_2 * 0x18 + 0x1a) + 0x13;
*(uint *)(*param_1 + iVar3 * 0x1000) = *(uint *)(*param_1 + iVar3 * 0x1000) | 2;
*(undefined *)((int)param_1 + param_2 * 0x18 + 0x1d) = 1;
}
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar4,uVar6,piVar2);
}
void FUN_8f612a00(int *param_1,int param_2)
{
int *piVar1;
int *piVar2;
uint uVar3;
uint uVar4;
piVar1 = DAT_8f69d118;
*(undefined4 *)
(*param_1 + 0x13004 + (uint)*(byte *)((int)param_1 + param_2 * 0x18 + 0x1a) * 0x1000) = 1;
*(undefined4 *)
(*param_1 + 0x13004 + (uint)*(byte *)((int)param_1 + param_2 * 0x18 + 0x1a) * 0x1000) = 0;
FUN_8f6127a4(param_1,param_2);
uVar3 = (uint)*(byte *)((int)param_1 + param_2 * 0x18 + 0x1e);
uVar4 = (uint)*(byte *)((int)param_1 + param_2 * 0x18 + 9) << 3 | uVar3 << 0x10 | 0x20;
*(uint *)(*param_1 + (*(byte *)((int)param_1 + param_2 * 0x18 + 0x1a) + 0x13) * 0x1000) = uVar4;
piVar2 = DAT_8f69d118;
*(undefined *)((int)param_1 + param_2 * 0x18 + 0x1d) = 0;
if (piVar1 == piVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,uVar4,piVar1);
}
void FUN_8f612a9c(int *param_1,int *param_2,uint param_3)
{
int *piVar1;
int iVar2;
uint uVar3;
piVar1 = DAT_8f69d118;
if (*(ushort *)(param_1 + (int)param_2 * 6 + 5) <= param_3) {
dprintf((byte *)s_Max_allowed_desc_is_one_less_tha_8f65ef74,param_2,DAT_8f69d118,DAT_8f69d118);
return;
}
uVar3 = (uint)*(byte *)((int)param_1 + ((int)param_2 + 1) * 0x18 + 2);
iVar2 = *(int *)(*param_1 + 0x13818 + uVar3 * 0x1000);
*(uint *)(*param_1 + 0x13818 + uVar3 * 0x1000) =
iVar2 + param_3 * 8 & (uint)*(ushort *)(param_1 + (int)param_2 * 6 + 5) * 8 - 1;
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,uVar3,piVar1);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f612b88)
void FUN_8f612b3c(int param_1,int param_2)
{
return;
}
void FUN_8f612b8c(int param_1,int param_2,int param_3,int *param_4,byte param_5)
{
int *piVar1;
undefined4 uVar2;
int *piVar3;
uint uVar4;
uint extraout_r1;
uint extraout_r1_00;
uint extraout_r1_01;
uint extraout_r1_02;
uint extraout_r1_03;
int *piVar5;
int iVar6;
piVar1 = DAT_8f69d118;
piVar3 = (int *)(param_1 + param_2 * 0x18);
piVar5 = (int *)piVar3[4];
if (param_4 == (int *)0x0 || param_3 == 0) {
dprintf((byte *)s_Wrong_params_for_BAM_transfer_8f65efa8,piVar3,param_3,param_4);
uVar2 = 1;
uVar4 = extraout_r1_00;
}
else if (*(char *)((int)piVar3 + 0x1d) == '\0') {
dprintf((byte *)s_Please_allocate_the_FIFO_for_the_8f65efc8,
(int *)(uint)*(byte *)((int)piVar3 + 0x1a),param_3,param_4);
uVar2 = 1;
uVar4 = extraout_r1_01;
}
else if ((param_5 & 6) == 6) {
dprintf((byte *)s_Can_t_lock_and_unlock_in_the_sam_8f65eff8,(int *)&DAT_00000006,param_3,param_4
);
uVar2 = 1;
uVar4 = extraout_r1_02;
}
else if ((param_5 & 0x48) == 0x48) {
dprintf((byte *)s_EOT_flag_set_on_the_CMD_desc_8f65f020,(int *)0x48,param_3,param_4);
uVar2 = 1;
uVar4 = extraout_r1_03;
}
else if ((int *)(uint)*(ushort *)(param_1 + 0x58) < param_4) {
dprintf((byte *)s_len_of_the_desc_exceeds_max_leng_8f65f040,param_4,
(int *)(uint)*(ushort *)(param_1 + 0x58),param_4);
uVar2 = 1;
uVar4 = extraout_r1;
}
else {
*(byte *)((int)piVar5 + 7) = param_5;
iVar6 = param_1 + param_2 * 0x18 + 8;
*piVar5 = param_3;
*(short *)(piVar5 + 1) = (short)param_4;
*(bool *)((int)piVar5 + 6) = param_4 == (int *)0x0 || param_3 == 0;
FUN_8f625b24((uint)piVar5,8);
piVar3 = *(int **)(iVar6 + 4);
uVar2 = 0;
uVar4 = (uint)(((int)piVar5 - (int)piVar3) * 0x2000) >> 0x10;
if (uVar4 != *(ushort *)(iVar6 + 0xc) - 1) {
piVar3 = piVar5 + 2;
}
*(int **)(param_1 + param_2 * 0x18 + 0x10) = piVar3;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,uVar4,piVar1);
}
return;
}
void FUN_8f612ce4(int *param_1,int *param_2,int param_3,int *param_4,byte param_5)
{
bool bVar1;
int *piVar2;
undefined4 uVar3;
undefined4 extraout_r1;
undefined4 uVar4;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
int *piVar5;
uint uVar6;
piVar2 = DAT_8f69d118;
bVar1 = param_3 == 0 || param_4 == (int *)0x0;
uVar6 = (uint)bVar1;
if (param_3 == 0 || param_4 == (int *)0x0) {
dprintf((byte *)s_Wrong_params_for_BAM_transfer_8f65efa8,param_2,param_3,DAT_8f69d118);
uVar3 = 1;
uVar4 = extraout_r1_00;
}
else {
piVar5 = (int *)(uint)*(ushort *)(param_1 + 0x16);
if ((int *)((uint)*(ushort *)(param_1 + (int)param_2 * 6 + 5) * (int)piVar5) < param_4) {
dprintf((byte *)s_Data_transfer_exceeds_desc_fifo_l_8f65f06c,param_2,
(int *)((uint)*(ushort *)(param_1 + (int)param_2 * 6 + 5) * (int)piVar5),piVar5);
uVar3 = 1;
uVar4 = extraout_r1_01;
}
else {
if (piVar5 < param_4) {
do {
param_4 = (int *)((int)param_4 - (int)piVar5);
uVar6 = uVar6 + 1;
FUN_8f612b8c((int)param_1,(int)param_2,param_3,piVar5,bVar1);
piVar5 = (int *)(uint)*(ushort *)(param_1 + 0x16);
param_3 = param_3 + (int)piVar5;
if (param_4 == (int *)0x0) goto LAB_8f612da0;
} while (piVar5 < param_4);
}
uVar6 = uVar6 + 1;
FUN_8f612b8c((int)param_1,(int)param_2,param_3,param_4,param_5);
LAB_8f612da0:
FUN_8f612a9c(param_1,(int *)((uint)param_2 & 0xff),uVar6);
uVar3 = 0;
uVar4 = extraout_r1;
}
}
if (piVar2 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,uVar4,piVar2);
}
return;
}
void FUN_8f612df8(uint *param_1,uint param_2,uint param_3,int param_4)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f69d118;
*param_1 = param_2 & 0xffffff | param_4 << 0x18;
param_1[1] = param_3;
iVar2 = DAT_8f69d118;
*(undefined *)(param_1 + 2) = 0xff;
*(undefined *)((int)param_1 + 9) = 0xff;
*(undefined *)((int)param_1 + 10) = 0xff;
*(undefined *)((int)param_1 + 0xb) = 0xff;
if (iVar1 == iVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1 + 4,iVar1,(int *)0xffffffff);
}
void FUN_8f612e58(uint *param_1,uint *param_2)
{
int *piVar1;
undefined4 extraout_r1;
piVar1 = DAT_8f69d118;
FUN_8f612df8(param_2,DAT_8f6882f4 + 4,*param_1,0);
FUN_8f612df8(param_2 + 4,DAT_8f6882f4 + 8,param_1[1],0);
FUN_8f612df8(param_2 + 8,DAT_8f6882f4 + 0x20,param_1[2],0);
FUN_8f612df8(param_2 + 0xc,DAT_8f6882f4 + 0x24,param_1[3],0);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_2 + 0x10,extraout_r1,piVar1);
}
void FUN_8f612f00(uint param_1)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
FUN_8f612a9c((int *)&DAT_8f688310,(int *)0x2,param_1);
uVar2 = FUN_8f6126fc((int *)&DAT_8f688310,2,1);
if (piVar1 == DAT_8f69d118) {
FUN_8f612b3c((int)&DAT_8f688310,2);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
void FUN_8f612f6c(uint param_1)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f6126fc((int *)&DAT_8f688310,param_1 & 0xff,1);
if (piVar1 == DAT_8f69d118) {
FUN_8f612b3c((int)&DAT_8f688310,param_1);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
void FUN_8f612fc8(uint param_1,undefined4 param_2)
{
uint uVar1;
int iVar2;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 local_18;
int *local_14;
local_14 = DAT_8f69d118;
uVar1 = FUN_8f602f04(&local_18,param_2);
FUN_8f612df8((uint *)&DAT_8f69d850,param_1,uVar1,1);
iVar2 = FUN_8f602f04(&DAT_8f69d850,extraout_r1);
FUN_8f612b8c((int)&DAT_8f688310,2,iVar2,(int *)0x10,(byte)param_2 | 0x88);
FUN_8f612f00(1);
if (local_14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(local_18,extraout_r1_00,local_14);
}
void FUN_8f61305c(uint *param_1,byte param_2)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
FUN_8f612df8(param_1,DAT_8f6882f4 + 0xe8,1,0);
FUN_8f612b8c((int)&DAT_8f688310,2,(int)param_1,(int *)0x10,param_2 | 0x88);
FUN_8f612f00(1);
FUN_8f612df8(param_1,DAT_8f6882f4 + 0xe8,2,0);
uVar2 = FUN_8f612b8c((int)&DAT_8f688310,2,(int)param_1,(int *)0x10,0x88);
if (piVar1 == DAT_8f69d118) {
FUN_8f612f00(1);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
void FUN_8f61311c(int *param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
uint uVar2;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
int *piVar3;
ulonglong uVar4;
piVar1 = DAT_8f69d118;
piVar3 = DAT_8f69d118;
if (((uint)param_1 & 0x10) != 0) {
piVar3 = &DAT_8f6882f4;
uVar4 = FUN_8f612fc8(DAT_8f6882f4 + 0xec,0);
param_2 = (undefined4)(uVar4 >> 0x20);
if ((uVar4 & 0x80) != 0) {
param_1 = (int *)((uint)param_1 & 0xffffffef);
FUN_8f61305c((uint *)&DAT_8f69d210,0);
param_2 = extraout_r1_00;
}
}
uVar2 = (uint)param_1 & 0x150;
if (uVar2 != 0) {
dprintf((byte *)s_Nand_Flash_error__Status____d_8f65f098,param_1,param_3,piVar3);
param_2 = extraout_r1;
if (((uint)param_1 & 0x40) == 0) {
uVar2 = 1;
}
else {
uVar2 = 2;
}
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,param_2,piVar1);
}
return;
}
void FUN_8f6131b8(uint *param_1,uint *param_2)
{
int *piVar1;
uint *puVar2;
undefined4 extraout_r1;
piVar1 = DAT_8f69d118;
puVar2 = (uint *)FUN_8f612e58(param_1,param_2);
FUN_8f612df8(puVar2,DAT_8f6882f4,param_1[4],0);
FUN_8f612df8(puVar2 + 4,DAT_8f6882f4 + 0x10,param_1[7],0);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(puVar2 + 8,extraout_r1,piVar1);
}
void FUN_8f61322c(uint *param_1,undefined4 param_2)
{
int iVar1;
int *piVar2;
uint uVar3;
undefined4 extraout_r1;
piVar2 = DAT_8f69d118;
iVar1 = DAT_8f6882f4;
uVar3 = FUN_8f602f04(param_2,param_2);
FUN_8f612df8(param_1,iVar1 + 0x14,uVar3,1);
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1 + 4,extraout_r1,piVar2);
}
void FUN_8f613294(uint *param_1,int param_2)
{
int *piVar1;
uint *puVar2;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 uVar3;
piVar1 = DAT_8f69d118;
FUN_8f612df8(param_1,DAT_8f6882f4 + 0x14,0x20,0);
puVar2 = param_1 + 4;
uVar3 = extraout_r1;
if (param_2 != 0) {
FUN_8f612df8(puVar2,DAT_8f6882f4 + 0x44,0xc0,0);
puVar2 = param_1 + 8;
uVar3 = extraout_r1_00;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(puVar2,uVar3,piVar1);
}
void FUN_8f613310(uint *param_1,uint *param_2)
{
int *piVar1;
undefined4 uVar2;
piVar1 = DAT_8f69d118;
FUN_8f612df8(param_2,DAT_8f6882f4 + 0x28,param_1[5],0);
uVar2 = FUN_8f612df8(param_2 + 4,DAT_8f6882f4 + 0xf20,param_1[6],0);
if (piVar1 == DAT_8f69d118) {
FUN_8f6131b8(param_1,param_2 + 8);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,param_2 + 8,piVar1);
}
void FUN_8f613390(uint param_1)
{
uint uVar1;
int iVar2;
int *piVar3;
int iVar4;
int iVar5;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
int *extraout_r1_02;
undefined4 extraout_r1_03;
undefined uVar6;
undefined4 uVar7;
undefined8 uVar8;
ulonglong uVar9;
uint local_48;
uint local_44;
uint local_40;
undefined4 local_3c;
undefined4 local_38;
uint local_34;
undefined4 local_30;
undefined4 local_2c;
char local_28;
char local_27;
int *local_24;
local_24 = DAT_8f69d118;
uVar1 = FUN_8f6582ac(param_1,DAT_8f6882c8);
uVar7 = extraout_r1;
if (*(char *)(DAT_8f68830c + uVar1) != '\x02') {
if (*(char *)(DAT_8f68830c + uVar1) == '\x01') {
iVar2 = 6;
goto LAB_8f6133e4;
}
local_40 = DAT_8f688308 & 0xfffffe3f;
local_3c = DAT_8f6882ec;
local_48 = DAT_8f6882dc << 9 | param_1 << 0x10;
iVar2 = 1;
local_34 = DAT_8f688374 | 1;
local_44 = (param_1 << 8) >> 0x18;
local_38 = 0x33;
local_30 = 0x80040000;
local_2c = 1;
uVar8 = FUN_8f613310(&local_48,(uint *)&DAT_8f69d210);
piVar3 = (int *)FUN_8f602f04((int)uVar8 + 0x70962df0,(int)((ulonglong)uVar8 >> 0x20));
FUN_8f612b8c((int)&DAT_8f688310,2,(int)&DAT_8f69d210,piVar3,0x9c);
iVar4 = FUN_8f602f04(&local_28,extraout_r1_00);
uVar7 = 4;
FUN_8f612ce4((int *)&DAT_8f688310,(int *)0x1,iVar4,(int *)&DAT_00000004,0x80);
FUN_8f612f00(1);
uVar9 = FUN_8f612fc8(DAT_8f6882f4 + 0x14,0);
if ((uVar9 & 0x150) == 0) {
FUN_8f612fc8(DAT_8f6882f4 + 0x14,2);
}
else {
iVar5 = FUN_8f61311c((int *)uVar9,(int)(uVar9 >> 0x20),iVar4);
FUN_8f612fc8(DAT_8f6882f4 + 0x14,2);
if (iVar5 != 0) {
dprintf((byte *)s_Could_not_read_bad_block_value_8f65f0b8,extraout_r1_02,iVar4,uVar7);
uVar7 = extraout_r1_03;
goto LAB_8f6133e4;
}
}
FUN_8f612f6c(1);
uVar7 = extraout_r1_01;
if (DAT_8f6882d0 == 0) {
if (local_28 == -1) {
uVar6 = 2;
iVar2 = DAT_8f6882d0;
}
else {
uVar6 = 1;
iVar2 = 6;
}
*(undefined *)(DAT_8f68830c + uVar1) = uVar6;
goto LAB_8f6133e4;
}
if ((local_28 != -1) && (local_27 != -1)) {
iVar2 = 6;
*(undefined *)(DAT_8f68830c + uVar1) = 1;
goto LAB_8f6133e4;
}
}
iVar2 = 0;
LAB_8f6133e4:
if (local_24 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,uVar7,local_24);
}
return;
}
void FUN_8f6135a0(uint param_1,int param_2,undefined4 param_3)
{
int iVar1;
int *piVar2;
uint *puVar3;
uint *puVar4;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
uint uVar5;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 extraout_r1_03;
undefined4 extraout_r1_04;
uint uVar6;
undefined4 uVar7;
uint *puVar8;
undefined4 extraout_r1_05;
int *piVar9;
uint uVar10;
int *piVar11;
uint uVar12;
uint uVar13;
uint uVar14;
uint *puVar15;
undefined *puVar16;
undefined *puVar17;
undefined4 *puVar18;
byte bVar19;
uint *puVar20;
int *in_lr;
bool bVar21;
longlong lVar22;
undefined8 uVar23;
uint *local_170;
uint *local_16c;
uint *local_168;
uint local_164;
uint local_134;
uint local_130;
undefined4 local_12c;
undefined4 local_128;
uint local_124;
uint local_118;
uint local_114;
uint local_110;
undefined4 local_10c;
undefined4 local_108;
uint local_104;
uint local_f8;
uint local_f4 [4];
undefined4 local_e4;
undefined4 local_e0;
undefined4 local_dc;
undefined4 local_d8;
undefined4 local_d4;
undefined4 local_d0;
undefined4 local_cc;
undefined4 local_c8;
undefined4 local_c4;
undefined4 local_c0;
undefined4 local_bc;
undefined4 local_b8;
undefined4 local_b4;
undefined4 local_b0;
undefined4 local_ac;
undefined4 local_a8;
uint local_a4 [4];
undefined4 local_94;
undefined4 local_90;
undefined4 local_8c;
undefined4 local_88;
undefined4 local_84;
undefined4 local_80;
undefined auStack_7c [40];
undefined auStack_54 [40];
int *local_2c;
uVar6 = DAT_8f688374;
uVar10 = DAT_8f6882dc;
uVar13 = param_1 << 0x10;
uVar14 = (param_1 << 8) >> 0x18;
local_2c = DAT_8f69d118;
local_f4[0] = 0;
local_f4[1] = 0;
local_f4[2] = 0;
local_f4[3] = 0;
local_e4 = 0;
local_e0 = 0;
local_dc = 0;
local_d8 = 0;
local_d4 = 0;
local_d0 = 0;
local_cc = 0;
local_c8 = 0;
local_c4 = 0;
local_c0 = 0;
local_bc = 0;
local_b8 = 0;
local_b4 = 0;
local_b0 = 0;
local_ac = 0;
local_a8 = 0;
local_a4[0] = 0;
local_a4[1] = 0;
local_a4[2] = 0;
local_a4[3] = 0;
local_94 = 0;
local_90 = 0;
local_8c = 0;
local_88 = 0;
local_84 = 0;
local_80 = 0;
local_12c = DAT_8f688378;
local_128 = DAT_8f688304;
local_124 = 0x33;
local_118 = 1;
local_134 = uVar13;
local_130 = uVar14;
lVar22 = FUN_8f613390(param_1);
uVar12 = (uint)lVar22;
if (uVar12 == 0) {
FUN_8f61305c((uint *)&DAT_8f69d210,4);
if (DAT_8f6882dc != 0) {
local_168 = (uint *)&DAT_8f69d210;
uVar10 = (uVar10 - 1) * 4 & 0xffff;
piVar11 = (int *)(uVar10 + 4 & 0xffff);
piVar9 = (int *)(0x200 - uVar10 & 0xffff);
local_164 = 0x82040000;
puVar15 = (uint *)&DAT_8f69d210;
puVar18 = &local_cc;
local_170 = local_a4;
local_16c = local_f4;
do {
puVar3 = puVar15;
if (uVar12 == 0) {
puVar3 = (uint *)FUN_8f612e58(&local_134,puVar15);
puVar15 = puVar3 + 4;
FUN_8f612df8(puVar3,DAT_8f6882f4 + 0x28,uVar6,0);
puVar3 = local_168;
}
local_168 = puVar3;
FUN_8f612df8(puVar15,DAT_8f6882f4,local_124,0);
if (DAT_8f6882dc - 1 == uVar12) {
puVar3 = puVar15 + 8;
FUN_8f612df8(puVar15 + 4,DAT_8f6882f4 + 0xf24,
(uint)piVar9 | 0x80000000 | (int)piVar11 << 0x10,0);
iVar1 = FUN_8f602f04(param_2,extraout_r1_02);
FUN_8f612b8c((int)&DAT_8f688310,1,iVar1,piVar9,0);
iVar1 = FUN_8f602f04(param_3,extraout_r1_03);
FUN_8f612b8c((int)&DAT_8f688310,1,iVar1,piVar11,0x80);
FUN_8f612a9c((int *)&DAT_8f688310,(int *)0x1,2);
local_164 = (int)piVar9 << 0x10;
}
else {
iVar1 = FUN_8f602f04(param_2,extraout_r1);
FUN_8f612b8c((int)&DAT_8f688310,1,iVar1,(int *)0x204,0);
FUN_8f612a9c((int *)&DAT_8f688310,(int *)0x1,1);
puVar3 = puVar15 + 4;
}
puVar4 = puVar3 + 8;
FUN_8f612df8(puVar3,DAT_8f6882f4 + 0xf20,local_164,0);
FUN_8f612df8(puVar3 + 4,DAT_8f6882f4 + 0x10,local_118,0);
puVar15 = puVar3 + 0x14;
param_2 = param_2 + 0x204;
piVar2 = (int *)FUN_8f602f04((int)puVar4 - (int)local_168,extraout_r1_00);
FUN_8f612b8c((int)&DAT_8f688310,2,(int)local_168,piVar2,0x18);
uVar5 = DAT_8f6882f4 + 0x14;
uVar10 = FUN_8f602f04(local_16c,uVar5);
FUN_8f612df8(puVar4,uVar5,uVar10,1);
uVar5 = DAT_8f6882f4 + 0x18;
uVar10 = FUN_8f602f04(puVar18,uVar5);
FUN_8f612df8(puVar3 + 0xc,uVar5,uVar10,1);
uVar5 = DAT_8f6882f4 + 0xec;
uVar10 = FUN_8f602f04(local_170,uVar5);
FUN_8f612df8(puVar3 + 0x10,uVar5,uVar10,1);
bVar21 = DAT_8f6882dc - 1 == uVar12;
uVar12 = uVar12 + 1;
if (bVar21) {
bVar19 = 10;
}
else {
bVar19 = 8;
}
uVar23 = FUN_8f602f04(puVar4,extraout_r1_01);
piVar2 = (int *)FUN_8f602f04((int)puVar15 - (int)puVar4,(int)((ulonglong)uVar23 >> 0x20));
FUN_8f612b8c((int)&DAT_8f688310,2,(int)uVar23,piVar2,bVar19);
FUN_8f612a9c((int *)&DAT_8f688310,(int *)0x2,2);
puVar18 = puVar18 + 1;
local_170 = local_170 + 1;
local_16c = local_16c + 1;
} while (uVar12 < DAT_8f6882dc);
}
FUN_8f612f6c(1);
lVar22 = CONCAT44(extraout_r1_04,DAT_8f6882dc);
if (DAT_8f6882dc != 0) {
iVar1 = 0;
uVar10 = 0;
do {
uVar6 = *(uint *)((int)local_f4 + iVar1);
if (((uVar6 & 0x110) != 0) &&
(uVar6 = *(uint *)((int)local_a4 + iVar1) & 0x50, uVar6 != 0x50)) {
uVar10 = (int)DAT_8f6882f0 * DAT_8f6882dc;
puVar15 = (uint *)FUN_8f6366a8((int *)0x10,uVar10);
if (puVar15 == (uint *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_qpic_nand_c_8f65f0d8,0x5b5);
}
FUN_8f636968(puVar15,0,uVar10);
uVar6 = DAT_8f6882fc;
uVar10 = (int)DAT_8f6882f0 << 0x10;
local_10c = DAT_8f688308;
local_108 = DAT_8f6882ec;
local_104 = 0x32;
local_f8 = 1;
local_114 = uVar13;
local_110 = uVar14;
if (DAT_8f6882dc != 0) {
puVar3 = (uint *)&DAT_8f69d210;
local_16c = (uint *)&DAT_8f69d210;
uVar13 = 0;
puVar16 = auStack_54;
puVar17 = auStack_7c;
local_170 = puVar15;
do {
if (uVar13 == 0) {
puVar4 = (uint *)FUN_8f612e58(&local_114,puVar3);
puVar3 = puVar4 + 0xc;
FUN_8f612df8(puVar4,DAT_8f6882f4 + 0x28,uVar6,0);
FUN_8f612df8(puVar4 + 4,DAT_8f6882f4,local_104,0);
FUN_8f612df8(puVar4 + 8,DAT_8f6882f4 + 0xf20,uVar10 | 0x80000205,0);
uVar7 = 4;
}
else {
uVar7 = 0;
local_16c = puVar3;
}
puVar4 = puVar3 + 4;
if (uVar13 == DAT_8f6882dc - 1) {
bVar19 = 0x98;
uVar7 = 0x80;
}
else {
bVar19 = (byte)uVar7 | 0x18;
}
iVar1 = FUN_8f602f04(local_170,uVar7);
FUN_8f612b8c((int)&DAT_8f688310,1,iVar1,DAT_8f6882f0,(byte)uVar7);
FUN_8f612a9c((int *)&DAT_8f688310,(int *)0x1,1);
FUN_8f612df8(puVar3,DAT_8f6882f4 + 0x10,local_f8,0);
piVar9 = (int *)FUN_8f602f04((int)puVar4 - (int)local_16c,local_16c);
FUN_8f612b8c((int)&DAT_8f688310,2,(int)local_16c,piVar9,bVar19);
uVar14 = DAT_8f6882f4 + 0x14;
uVar12 = FUN_8f602f04(puVar17,uVar14);
FUN_8f612df8(puVar4,uVar14,uVar12,1);
uVar14 = DAT_8f6882f4 + 0x18;
uVar12 = FUN_8f602f04(puVar16,uVar14);
FUN_8f612df8(puVar3 + 8,uVar14,uVar12,1);
puVar3 = puVar3 + 0xc;
bVar21 = uVar13 == DAT_8f6882dc - 1;
uVar13 = uVar13 + 1;
if (bVar21) {
uVar7 = 10;
}
else {
uVar7 = 8;
}
uVar23 = FUN_8f602f04(puVar4,uVar7);
piVar9 = (int *)FUN_8f602f04((int)puVar3 - (int)puVar4,
(int)((ulonglong)uVar23 >> 0x20));
FUN_8f612b8c((int)&DAT_8f688310,2,(int)uVar23,piVar9,(byte)uVar7);
local_170 = (uint *)((int)local_170 + (int)DAT_8f6882f0);
FUN_8f612a9c((int *)&DAT_8f688310,(int *)0x2,2);
puVar16 = puVar16 + 4;
puVar17 = puVar17 + 4;
} while (uVar13 < DAT_8f6882dc);
}
FUN_8f612f6c(1);
uVar13 = DAT_8f6882dc;
if (DAT_8f6882dc != 0) {
uVar13 = 0;
puVar3 = puVar15;
do {
if (DAT_8f6882f0 != (int *)0x0) {
puVar20 = (uint *)((int)puVar3 + (int)DAT_8f6882f0);
iVar1 = 0;
puVar4 = puVar3;
do {
puVar8 = (uint *)((int)puVar4 + 1);
for (uVar10 = (uint)*(byte *)puVar4; uVar10 != 0; uVar10 = uVar10 >> 1) {
if ((uVar10 & 1) == 0) {
iVar1 = iVar1 + 1;
}
if (4 < iVar1) {
uVar13 = 5;
goto LAB_8f613d84;
}
}
puVar4 = puVar8;
puVar3 = puVar20;
} while (puVar8 != puVar20);
}
uVar13 = uVar13 + 1;
} while (uVar13 != DAT_8f6882dc);
uVar13 = 0;
}
LAB_8f613d84:
FUN_8f636758((int)puVar15);
lVar22 = CONCAT44(extraout_r1_05,uVar13);
goto LAB_8f6136bc;
}
uVar10 = uVar10 + 1;
iVar1 = iVar1 + 4;
} while (uVar10 != DAT_8f6882dc);
lVar22 = (ulonglong)uVar6 << 0x20;
}
}
LAB_8f6136bc:
if (local_2c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)lVar22,(int)((ulonglong)lVar22 >> 0x20),local_2c);
}
return;
}
void FUN_8f613de4(int param_1,int param_2,undefined4 param_3)
{
int *piVar1;
int iVar2;
int iVar3;
int extraout_r1;
int extraout_r1_00;
int extraout_r1_01;
int *piVar4;
uint uVar5;
int *piVar6;
uint uVar7;
byte bVar8;
int iVar9;
iVar2 = DAT_8f69d118;
piVar4 = DAT_8f6882dc;
if (DAT_8f6882dc == (int *)0x0) {
LAB_8f613ef4:
if (iVar2 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(&DAT_8f69d118,iVar2,piVar4);
}
FUN_8f612a9c((int *)&DAT_8f688310,(int *)0x0,(uint)piVar4);
return;
}
uVar5 = 0;
iVar3 = param_2;
piVar6 = (int *)0x0;
iVar9 = param_1;
do {
piVar4 = DAT_8f6882d8;
uVar7 = (int)DAT_8f6882dc - 1;
if (uVar7 == uVar5) {
bVar8 = 0x80;
}
else {
bVar8 = 0;
}
if (param_2 == 0) {
iVar3 = FUN_8f602f04(param_1,iVar3);
FUN_8f612b8c((int)&DAT_8f688310,0,iVar3,piVar4,bVar8 | 0x40);
piVar4 = (int *)((int)piVar6 + 1);
iVar3 = extraout_r1_00;
if (DAT_8f6882dc <= (int *)(uVar5 + 1)) goto LAB_8f613ef4;
}
else {
if (uVar5 < uVar7) {
bVar8 = bVar8 | 0x40;
piVar4 = (int *)0x204;
}
else {
piVar4 = (int *)(uVar7 * -4 + 0x200);
bVar8 = 0;
}
iVar3 = FUN_8f602f04(iVar9,iVar3);
FUN_8f612b8c((int)&DAT_8f688310,0,iVar3,piVar4,bVar8);
piVar1 = DAT_8f6882dc;
piVar4 = (int *)((int)piVar6 + 1);
iVar3 = extraout_r1;
if (((int)DAT_8f6882dc - 1U == uVar5) && (param_2 == 1)) {
iVar3 = FUN_8f602f04(param_3,extraout_r1);
FUN_8f612b8c((int)&DAT_8f688310,0,iVar3,(int *)((int)piVar1 << 2),0xc0);
piVar4 = (int *)((int)piVar6 + 2);
iVar3 = extraout_r1_01;
}
if (DAT_8f6882dc <= (int *)(uVar5 + 1)) goto LAB_8f613ef4;
}
iVar9 = iVar9 + 0x204;
uVar5 = uVar5 + 1;
piVar6 = piVar4;
} while( true );
}
void FUN_8f613f70(int param_1,int param_2,int param_3,undefined4 param_4)
{
uint *puVar1;
int *piVar2;
int *piVar3;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 uVar4;
undefined4 extraout_r1_02;
uint uVar5;
uint *puVar6;
uint uVar7;
int **ppiVar8;
uint *puVar9;
undefined8 uVar10;
undefined8 uVar11;
ulonglong uVar12;
int local_84;
uint local_74;
uint local_70;
undefined4 local_6c;
undefined4 local_68;
uint local_64;
int *local_58;
int *local_54 [10];
int *local_2c;
local_2c = DAT_8f69d118;
if (param_2 == 0) {
local_74 = param_1 << 0x10;
local_64 = 0x36;
local_6c = DAT_8f688308;
local_70 = (uint)(param_1 << 8) >> 0x18;
local_68 = DAT_8f6882ec;
local_58 = (int *)0x1;
FUN_8f613de4(param_3,0,param_4);
}
else {
local_64 = 0x36;
local_68 = DAT_8f688304;
local_6c = DAT_8f688378;
local_70 = (uint)(param_1 << 8) >> 0x18;
local_74 = param_1 << 0x10;
local_58 = (int *)0x1;
FUN_8f613de4(param_3,param_2,param_4);
uVar5 = DAT_8f688374;
if (param_2 == 1) goto LAB_8f613ff8;
}
uVar5 = DAT_8f688374 | 1;
LAB_8f613ff8:
FUN_8f612df8((uint *)&DAT_8f69d210,DAT_8f6882f4 + 0x28,uVar5,0);
puVar1 = (uint *)FUN_8f612e58(&local_74,(uint *)&DAT_8f69d220);
puVar9 = puVar1 + 4;
FUN_8f612df8(puVar1,DAT_8f6882f4,local_64,0);
piVar2 = (int *)FUN_8f602f04(puVar1 + 0x1c258b80,extraout_r1);
FUN_8f612b8c((int)&DAT_8f688310,2,(int)&DAT_8f69d210,piVar2,0xc);
if (DAT_8f6882dc != (int *)0x0) {
local_84 = 1;
piVar2 = (int *)0x0;
puVar1 = (uint *)&DAT_8f69d850;
ppiVar8 = local_54;
while( true ) {
puVar6 = puVar9 + 4;
FUN_8f612df8(puVar9,DAT_8f6882f4 + 0x10,(uint)local_58,0);
piVar3 = (int *)FUN_8f602f04(0x10,extraout_r1_00);
FUN_8f612b8c((int)&DAT_8f688310,2,(int)puVar9,piVar3,0x18);
uVar10 = FUN_8f61322c(puVar1,ppiVar8);
piVar3 = (int *)FUN_8f602f04((int)(uint *)uVar10 - (int)puVar1,
(int)((ulonglong)uVar10 >> 0x20));
FUN_8f612b8c((int)&DAT_8f688310,2,(int)puVar1,piVar3,8);
uVar11 = FUN_8f613294(puVar6,(uint)(piVar2 == (int *)((int)DAT_8f6882dc - 1U)));
puVar9 = (uint *)uVar11;
piVar3 = (int *)FUN_8f602f04((int)puVar9 - (int)puVar6,(int)((ulonglong)uVar11 >> 0x20));
FUN_8f612b8c((int)&DAT_8f688310,2,(int)puVar6,piVar3,0x88);
FUN_8f612f00(local_84 + 3);
piVar3 = *ppiVar8;
uVar12 = CONCAT44(extraout_r1_01,piVar3) & 0xffffffff00000150;
if (((uint)piVar3 & 0x150) != 0) {
uVar12 = FUN_8f61311c(piVar3,extraout_r1_01,puVar6);
}
uVar4 = (undefined4)(uVar12 >> 0x20);
piVar2 = (int *)((int)piVar2 + 1);
*ppiVar8 = (int *)uVar12;
if (DAT_8f6882dc <= piVar2) break;
local_84 = 0;
puVar1 = (uint *)uVar10;
ppiVar8 = ppiVar8 + 1;
}
if (DAT_8f6882dc != (int *)0x0) {
ppiVar8 = &local_58;
piVar2 = (int *)0x0;
do {
ppiVar8 = ppiVar8 + 1;
if (((uint)*ppiVar8 & 0x150) != 0) {
uVar10 = FUN_8f61311c(*ppiVar8,uVar4,puVar6);
uVar4 = (undefined4)((ulonglong)uVar10 >> 0x20);
uVar5 = (uint)uVar10;
if (uVar5 != 0) {
uVar7 = uVar5 & 0xff;
dprintf((byte *)s_Failed_to_write_CW__d_for_page____8f65f100,piVar2,param_1,uVar5);
goto LAB_8f6141fc;
}
}
piVar2 = (int *)((int)piVar2 + 1);
} while (piVar2 < DAT_8f6882dc);
}
}
uVar7 = 0;
LAB_8f6141fc:
FUN_8f612f6c(0);
if (local_2c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar7,extraout_r1_02,local_2c);
}
return;
}
void FUN_8f614290(uint param_1)
{
undefined8 uVar1;
uint auStack_228 [133];
int *local_14;
local_14 = DAT_8f69d118;
FUN_8f636968(auStack_228,0,0x214);
if ((param_1 & DAT_8f6882cc) != 0) {
param_1 = param_1 & ~DAT_8f6882cc;
}
uVar1 = FUN_8f613f70(param_1,0,(int)auStack_228,0);
if (local_14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar1,(int)((ulonglong)uVar1 >> 0x20),local_14);
}
void FUN_8f614300(uint param_1)
{
int *piVar1;
int iVar2;
int *piVar3;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 uVar4;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
uint *puVar5;
undefined *puVar6;
undefined8 uVar7;
int *local_50;
uint local_4c;
int local_48;
uint local_44;
undefined4 local_40;
undefined4 local_3c;
undefined4 local_30;
int *local_2c;
puVar6 = &DAT_8f6882a0;
local_2c = DAT_8f69d118;
piVar3 = DAT_8f69d118;
piVar1 = (int *)FUN_8f6582ac(param_1,DAT_8f6882c8);
iVar2 = FUN_8f613390(param_1);
if (iVar2 == 0) {
local_40 = DAT_8f688304;
local_44 = DAT_8f688378 & 0xfffffe3f;
local_3c = 0x3a;
local_30 = 1;
local_4c = param_1;
local_48 = iVar2;
uVar7 = FUN_8f6131b8(&local_4c,(uint *)&DAT_8f69d210);
puVar5 = (uint *)uVar7;
piVar3 = (int *)FUN_8f602f04(puVar5 + 0x1c258b7c,(int)((ulonglong)uVar7 >> 0x20));
FUN_8f612b8c((int)&DAT_8f688310,2,(int)&DAT_8f69d210,piVar3,0x9c);
FUN_8f612f00(1);
local_50 = (int *)FUN_8f612fc8(DAT_8f6882f4 + 0x14,0);
uVar7 = FUN_8f61322c((uint *)&DAT_8f69d850,&local_50);
piVar3 = (int *)FUN_8f602f04((int)uVar7 + 0x709627b0,(int)((ulonglong)uVar7 >> 0x20));
FUN_8f612b8c((int)&DAT_8f688310,2,(int)&DAT_8f69d850,piVar3,8);
uVar7 = FUN_8f613294(puVar5,1);
piVar3 = (int *)FUN_8f602f04((int)uVar7 - (int)puVar5,(int)((ulonglong)uVar7 >> 0x20));
FUN_8f612b8c((int)&DAT_8f688310,2,(int)puVar5,piVar3,0x88);
FUN_8f612f00(2);
piVar3 = (int *)((uint)local_50 & 0x150);
if (piVar3 != (int *)0x0) {
piVar3 = (int *)FUN_8f61311c(local_50,extraout_r1,puVar5);
}
iVar2 = DAT_8f6882f4;
local_50 = piVar3;
FUN_8f612fc8(DAT_8f6882f4 + 0x14,2);
piVar3 = local_50;
uVar4 = extraout_r1_00;
if (local_50 != (int *)0x0) {
dprintf((byte *)s_NAND_Erase_error__Block_address_b_8f65f124,piVar1,puVar5,iVar2);
FUN_8f614290(param_1);
piVar3 = (int *)0x1;
uVar4 = extraout_r1_02;
}
}
else {
dprintf((byte *)s_NAND_Erase_error__Block_address_b_8f65f124,piVar1,piVar3,puVar6);
piVar3 = (int *)0x1;
uVar4 = extraout_r1_01;
}
if (local_2c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(piVar3,uVar4,local_2c);
}
// WARNING: Removing unreachable block (ram,0x8f614520)
void FUN_8f6144e4(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f614560)
void FUN_8f614524(void)
{
return;
}
void FUN_8f614564(int param_1,undefined4 *param_2,int *param_3,undefined4 *param_4,
undefined4 *param_5)
{
bool bVar1;
bool bVar2;
uint uVar3;
undefined4 *puVar4;
int *piVar5;
uint uVar6;
uint uVar7;
int iVar8;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 uVar9;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 extraout_r1_03;
uint uVar10;
uint uVar11;
undefined4 *puVar12;
uint uVar13;
int *piVar14;
int iVar15;
uint uVar16;
undefined8 uVar17;
piVar5 = DAT_8f69d118;
puVar4 = DAT_8f688300;
uVar7 = DAT_8f6882cc;
uVar3 = DAT_8f6882c8;
puVar12 = DAT_8f6882b4;
uVar10 = (int)DAT_8f6882b4 - 1;
uVar11 = *(uint *)(param_1 + 0x10);
iVar15 = *(int *)(param_1 + 0x14);
if (((uint)param_3 & uVar10) == 0) {
uVar6 = FUN_8f6582ac((uint)param_3,(uint)DAT_8f6882b4);
uVar16 = iVar15 + uVar11;
uVar13 = uVar11 * uVar3;
uVar6 = uVar6 + uVar13;
uVar7 = FUN_8f6582ac(uVar6 & ~uVar7,uVar3);
if ((uVar11 < uVar7) && (iVar15 = uVar7 - uVar11, iVar15 != 0)) {
if (uVar11 < uVar16) {
do {
uVar11 = uVar11 + 1;
iVar8 = FUN_8f613390(uVar13);
uVar13 = uVar13 + DAT_8f6882c8;
if (iVar8 == 0) {
iVar15 = iVar15 + -1;
}
else {
uVar6 = uVar6 + DAT_8f6882c8;
}
if (iVar15 == 0) goto LAB_8f61460c;
} while (uVar11 < (uint)(*(int *)(param_1 + 0x14) + *(int *)(param_1 + 0x10)));
}
bVar2 = false;
}
else {
LAB_8f61460c:
bVar2 = true;
}
piVar14 = (int *)0x0;
uVar7 = FUN_8f6582ac((int)param_2 + uVar10 + (int)param_5,(int)param_2 + (int)puVar12);
uVar9 = extraout_r1;
while( true ) {
bVar1 = bVar2;
if (uVar3 * uVar16 <= uVar6) {
bVar1 = false;
}
if (!bVar1) break;
if (uVar7 == 0) goto LAB_8f614750;
param_5 = puVar4;
uVar17 = FUN_8f6135a0(uVar6,(int)DAT_8f6882f8,puVar4);
uVar9 = (undefined4)((ulonglong)uVar17 >> 0x20);
if ((int)uVar17 == 5) {
uVar6 = uVar6 + 1;
piVar14 = (int *)((int)piVar14 + 1);
}
else if ((int)uVar17 == 6) {
piVar14 = (int *)((int)piVar14 + 1);
uVar6 = uVar6 + DAT_8f6882c8;
}
else {
uVar6 = uVar6 + 1;
param_5 = DAT_8f6882b4;
FUN_8f63685c(param_4,DAT_8f6882f8,(int)DAT_8f6882b4);
puVar12 = (undefined4 *)((int)param_4 + (int)DAT_8f6882b4);
uVar9 = extraout_r1_00;
param_4 = puVar12;
if (param_2 != (undefined4 *)0x0) {
param_4 = (undefined4 *)((int)puVar12 + (int)param_2);
param_5 = param_2;
FUN_8f63685c(puVar12,puVar4,(int)param_2);
uVar9 = extraout_r1_01;
}
uVar7 = uVar7 - 1;
}
}
dprintf((byte *)s_flash_read_image__failed___d_err_8f65f424,piVar14,param_5,0);
uVar7 = 1;
uVar9 = extraout_r1_03;
}
else {
dprintf((byte *)s_Read_request_start_not_at_page_b_8f65f3f4,param_3,param_3,DAT_8f6882c8);
uVar7 = 3;
uVar9 = extraout_r1_02;
}
LAB_8f614750:
if (piVar5 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar7,uVar9,piVar5);
}
void FUN_8f614798(int param_1,int param_2,undefined4 *param_3,uint *param_4)
{
uint *puVar1;
int *piVar2;
undefined4 *puVar3;
undefined4 uVar4;
int *extraout_r1;
int *piVar5;
int *extraout_r1_00;
int *extraout_r1_01;
int *extraout_r1_02;
int *extraout_r1_03;
undefined4 *puVar6;
uint *puVar7;
int iVar8;
uint uVar9;
uint uVar10;
uint *puVar11;
uint uVar12;
uint uVar13;
undefined8 uVar14;
piVar2 = DAT_8f69d118;
puVar1 = DAT_8f688300;
uVar13 = (int)(uint *)(DAT_8f6882d8 * DAT_8f6882dc) - (int)DAT_8f6882b4;
puVar11 = DAT_8f6882b4;
if (param_2 != 0) {
puVar11 = (uint *)(DAT_8f6882d8 * DAT_8f6882dc);
}
uVar9 = *(int *)(param_1 + 0x10) * (int)DAT_8f6882c8;
uVar12 = (int)DAT_8f6882c8 * (*(int *)(param_1 + 0x10) + *(int *)(param_1 + 0x14));
puVar7 = param_4;
puVar3 = (undefined4 *)FUN_8f6582ac(uVar13,DAT_8f6882dc);
FUN_8f636968(puVar1,0xff,(int)puVar3);
piVar5 = extraout_r1;
if (param_4 == (uint *)0x0) {
LAB_8f6148fc:
uVar13 = uVar9 + (int)DAT_8f6882cc & ~(uint)DAT_8f6882cc;
if (uVar13 <= uVar12 && uVar12 - uVar13 != 0) {
do {
FUN_8f614300(uVar13);
uVar13 = uVar13 + (int)DAT_8f6882c8;
piVar5 = extraout_r1_00;
} while (uVar13 <= uVar12 && uVar12 - uVar13 != 0);
}
uVar4 = 0;
}
else if (param_4 < puVar11) {
LAB_8f614998:
dprintf((byte *)s_flash_write_image__image_undersi_8f65f494,(int *)param_4,puVar11,puVar7);
uVar4 = 0xffffffff;
piVar5 = extraout_r1_02;
}
else {
if (uVar9 < uVar12) {
do {
if ((uVar9 & (uint)DAT_8f6882cc) == 0) {
uVar14 = FUN_8f614300(uVar9);
piVar5 = (int *)((ulonglong)uVar14 >> 0x20);
if ((int)uVar14 == 0) goto LAB_8f614894;
uVar9 = uVar9 + (int)DAT_8f6882c8;
puVar7 = DAT_8f6882c8;
}
else {
LAB_8f614894:
FUN_8f63685c(DAT_8f6882f8,param_3,(int)DAT_8f6882b4);
if (param_2 == 0) {
puVar3 = DAT_8f6882f8;
puVar7 = puVar1;
uVar14 = FUN_8f613f70(uVar9,1,(int)DAT_8f6882f8,puVar1);
puVar6 = DAT_8f6882cc;
}
else {
FUN_8f63685c((undefined4 *)((int)DAT_8f6882f8 + (int)DAT_8f6882b4),
(undefined4 *)((int)param_3 + (int)DAT_8f6882b4),uVar13);
puVar7 = (uint *)((int)DAT_8f6882f8 + (int)DAT_8f6882b4);
puVar3 = DAT_8f6882f8;
uVar14 = FUN_8f613f70(uVar9,1,(int)DAT_8f6882f8,puVar7);
puVar6 = DAT_8f6882cc;
}
piVar5 = (int *)((ulonglong)uVar14 >> 0x20);
DAT_8f6882cc = puVar6;
if ((int)uVar14 == 0) {
param_4 = (uint *)((int)param_4 - (int)puVar11);
uVar9 = uVar9 + 1;
param_3 = (undefined4 *)((int)param_3 + (int)puVar11);
}
else {
uVar10 = uVar9 & ~(uint)puVar6;
iVar8 = (int)puVar11 * (uVar9 & (uint)puVar6);
param_3 = (undefined4 *)((int)param_3 - iVar8);
param_4 = (uint *)((int)param_4 + iVar8);
FUN_8f614300(uVar10);
FUN_8f614290(uVar10);
uVar9 = uVar10 + (int)DAT_8f6882c8;
piVar5 = extraout_r1_01;
puVar3 = puVar6;
puVar7 = DAT_8f6882c8;
}
}
if (param_4 == (uint *)0x0) goto LAB_8f6148fc;
if (param_4 < puVar11) goto LAB_8f614998;
} while (uVar9 <= uVar12 && uVar12 - uVar9 != 0);
}
dprintf((byte *)s_flash_write_image__out_of_space_8f65f470,piVar5,puVar3,puVar7);
uVar4 = 0xffffffff;
piVar5 = extraout_r1_03;
}
if (piVar2 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar4,piVar5,piVar2);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f614a18)
void FUN_8f6149cc(int param_1)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f614a68)
void FUN_8f614a24(int param_1)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f614ac0)
void FUN_8f614a74(int param_1)
{
return;
}
void FUN_8f614acc(int param_1)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f636758(param_1);
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
return;
}
void FUN_8f614b18(int param_1,int param_2)
{
int *piVar1;
uint *puVar2;
undefined4 extraout_r1;
undefined4 uVar3;
uint uVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
uVar4 = param_1 + param_2 + 0x1c;
uVar5 = FUN_8f6366a8((int *)0x40,param_1 + param_2 + 0x5bU & 0xffffffc0);
uVar3 = (undefined4)((ulonglong)uVar5 >> 0x20);
puVar2 = (uint *)uVar5;
if (puVar2 != (uint *)0x0) {
FUN_8f636968(puVar2,0,uVar4);
*puVar2 = uVar4;
puVar2[1] = 0x10;
puVar2[2] = puVar2[1] + param_1;
uVar3 = extraout_r1;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(puVar2,uVar3,piVar1);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f614c24)
// WARNING: Removing unreachable block (ram,0x8f614c44)
// WARNING: Removing unreachable block (ram,0x8f614c48)
void FUN_8f614be8(void)
{
do {
software_smc(0);
} while( true );
}
// WARNING: Removing unreachable block (ram,0x8f614cd0)
void FUN_8f614c50(uint param_1,uint param_2)
{
software_smc(0);
return;
}
// WARNING: Removing unreachable block (ram,0x8f614d64)
void FUN_8f614cdc(uint param_1,uint param_2,undefined4 param_3,undefined4 param_4)
{
software_smc(0);
return;
}
void FUN_8f614d70(int param_1,uint param_2,undefined4 *param_3,int param_4,undefined4 *param_5,
int param_6)
{
int *piVar1;
int *piVar2;
undefined4 *puVar3;
uint uVar4;
undefined4 extraout_r1;
undefined4 uVar5;
int iVar6;
undefined8 uVar7;
piVar1 = DAT_8f69d118;
uVar7 = FUN_8f614b18(param_4,param_6);
uVar5 = (undefined4)((ulonglong)uVar7 >> 0x20);
piVar2 = (int *)uVar7;
if (piVar2 == (int *)0x0) {
iVar6 = -5;
}
else {
piVar2[3] = param_1 << 10 | param_2;
if (param_3 != (undefined4 *)0x0) {
puVar3 = (undefined4 *)FUN_8f614a24((int)piVar2);
FUN_8f63685c(puVar3,param_3,param_4);
}
FUN_8f625b24((uint)piVar2,*piVar2);
iVar6 = FUN_8f614be8();
if ((iVar6 == 0) && (param_6 != 0)) {
uVar4 = FUN_8f6149cc((int)piVar2);
do {
FUN_8f625b4c(uVar4,0xc);
} while (*(int *)(uVar4 + 8) == 0);
puVar3 = (undefined4 *)FUN_8f614a74(uVar4);
FUN_8f625b4c((uint)puVar3,param_6);
if (param_5 != (undefined4 *)0x0) {
FUN_8f63685c(param_5,puVar3,param_6);
}
}
FUN_8f614acc((int)piVar2);
uVar5 = extraout_r1;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar6,uVar5,piVar1);
}
void FUN_8f614ef0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
undefined4 param_5,undefined4 param_6,undefined4 *param_7)
{
int *piVar1;
piVar1 = DAT_8f69d118;
do {
software_smc(0);
} while (param_1 == 1);
if (param_7 != (undefined4 *)0x0) {
*param_7 = param_2;
param_7[1] = param_3;
param_7[2] = param_4;
param_2 = param_3;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(param_1,param_2,piVar1);
}
return;
}
void FUN_8f614fbc(int **param_1,undefined4 *param_2)
{
int *piVar1;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 uVar2;
int *piVar3;
int iVar4;
int *in_lr;
undefined8 uVar5;
int *local_24;
int *local_20;
int local_1c;
piVar1 = DAT_8f69d118;
local_24 = (int *)0x0;
if (param_1[0xf] == (int *)0x0) {
piVar3 = *param_1;
}
else {
piVar3 = (int *)((uint)*param_1 | 0x80000000);
}
*param_1 = piVar3;
local_20 = param_1[5];
if (4 < ((uint)param_1[1] & 0xf)) {
local_24 = (int *)FUN_8f6366a8((int *)0x40,0x40);
if (local_24 == (int *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f65f4c4,
(int *)s_platform_msm_shared_scm_c_8f65f4e4,0x4c6);
}
for (local_1c = 0; local_1c < 10; local_1c = local_1c + 1) {
local_24[local_1c] = (int)param_1[local_1c + 5];
}
FUN_8f625b24((uint)local_24,0x40);
local_20 = local_24;
}
uVar5 = FUN_8f614ef0((int)*param_1,param_1[1],param_1[2],param_1[3],param_1[4],local_20,param_2);
uVar2 = (undefined4)((ulonglong)uVar5 >> 0x20);
iVar4 = (int)uVar5;
if (iVar4 == 0) {
if (local_24 != (int *)0x0) {
FUN_8f636758((int)local_24);
uVar2 = extraout_r1_00;
}
iVar4 = 0;
}
else {
dprintf((byte *)s_SCM_call__0x_x_failed_with___x_8f65f50c,*param_1,iVar4,*param_1);
uVar2 = extraout_r1;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar4,uVar2,piVar1);
}
void FUN_8f6151bc(int param_1,uint param_2)
{
int iVar1;
undefined8 uVar2;
int local_58;
undefined4 local_54;
undefined4 local_50;
int *local_4c;
undefined4 local_48;
uint local_44;
int *local_c;
local_c = DAT_8f69d118;
FUN_8f636968((uint *)&local_4c,0,0x40);
local_58 = 0;
local_54 = 0;
local_50 = 0;
local_4c = (int *)0x2000601;
local_48 = 1;
local_44 = (param_1 << 8 | param_2) & 0xffff | 0x2000000;
uVar2 = FUN_8f614fbc(&local_4c,&local_58);
iVar1 = (int)uVar2;
if (iVar1 == 0) {
iVar1 = local_58;
}
if (local_c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar1,(int)((ulonglong)uVar2 >> 0x20),local_c);
}
void FUN_8f6152ac(void)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f6151bc(6,1);
if (0 < (int)uVar2) {
DAT_8f69d990 = 1;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
return;
}
void FUN_8f615328(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = CONCAT44(param_2,param_1);
if (DAT_8f68a000 == 0) {
uVar2 = FUN_8f6152ac();
if ((int)uVar2 < 0) {
uVar2 = dprintf((byte *)s_Failed_to_initialize_SCM_8f65f52c,(int *)((ulonglong)uVar2 >> 0x20),
param_3,(int)uVar2);
}
DAT_8f68a000 = 1;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
void FUN_8f6153b8(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
undefined4 extraout_r1;
piVar1 = DAT_8f69d118;
if (DAT_8f68a000 == 0) {
FUN_8f615328(param_1,param_2,param_3);
param_2 = extraout_r1;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(DAT_8f69d990,param_2,piVar1);
}
return;
}
void FUN_8f615420(undefined4 param_1)
{
uint *puVar1;
int iVar2;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 *puVar3;
undefined8 uVar4;
int local_58;
undefined4 local_54;
undefined4 local_50;
int *local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_40;
int *local_c;
local_c = DAT_8f69d118;
local_50 = 0;
puVar3 = (undefined4 *)0x40;
local_54 = param_1;
puVar1 = FUN_8f636968((uint *)&local_4c,0,0x40);
iVar2 = FUN_8f6153b8(puVar1,extraout_r1,puVar3);
if (iVar2 == 0) {
puVar3 = &local_54;
uVar4 = FUN_8f614d70(0xc,2,puVar3,8,(undefined4 *)0x0,0);
}
else {
local_4c = (int *)0x2000c02;
local_48 = 2;
local_40 = 0;
local_44 = param_1;
uVar4 = FUN_8f614fbc(&local_4c,(undefined4 *)0x0);
}
local_58 = (int)uVar4;
if (local_58 != 0) {
dprintf((byte *)s_Secure_Config_failed_8f65f548,(int *)((ulonglong)uVar4 >> 0x20),puVar3,
local_58);
uVar4 = CONCAT44(extraout_r1_00,1);
}
local_58 = (int)uVar4;
if (local_c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(local_58,(int)((ulonglong)uVar4 >> 0x20),local_c);
}
return;
}
void FUN_8f615538(uint param_1,int param_2)
{
undefined4 uVar1;
int iVar2;
undefined4 extraout_r1;
undefined4 uVar3;
undefined8 uVar4;
int local_68;
int local_64;
uint local_60;
int local_5c;
int local_58;
undefined4 local_54;
undefined4 local_50;
int *local_4c;
undefined4 local_48;
uint local_44;
int local_40;
int *local_c;
local_c = DAT_8f69d118;
local_64 = 0;
FUN_8f636968((uint *)&local_4c,0,0x40);
local_58 = 0;
local_54 = 0;
uVar3 = 0;
local_50 = 0;
local_60 = param_1;
local_5c = param_2;
uVar1 = FUN_8f625b24(param_1,param_2);
iVar2 = FUN_8f6153b8(uVar1,extraout_r1,uVar3);
if (iVar2 == 0) {
uVar4 = FUN_8f614d70(7,5,&local_60,8,&local_68,4);
}
else {
local_4c = (int *)0x2000705;
local_48 = 0x22;
local_44 = local_60;
local_40 = local_5c;
uVar4 = FUN_8f614fbc(&local_4c,&local_58);
local_68 = local_58;
}
local_64 = (int)uVar4;
if ((local_64 == 0) && (local_68 != 0)) {
local_64 = local_68;
}
if (local_c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(local_64,(int)((ulonglong)uVar4 >> 0x20),local_c);
}
return;
}
void FUN_8f615698(undefined4 param_1)
{
uint *puVar1;
int iVar2;
undefined4 extraout_r1;
undefined4 uVar3;
undefined8 uVar4;
undefined4 local_6c;
undefined4 local_68;
undefined4 local_64;
undefined4 local_60;
undefined4 *local_5c;
int local_58;
undefined4 local_54;
undefined4 local_50;
int *local_4c;
undefined4 local_48;
undefined4 local_44;
int local_40;
int *local_c;
local_c = DAT_8f69d118;
local_64 = 0;
local_60 = 0;
uVar3 = 0x40;
local_6c = param_1;
puVar1 = FUN_8f636968((uint *)&local_4c,0,0x40);
local_5c = &local_6c;
local_58 = 4;
iVar2 = FUN_8f6153b8(puVar1,extraout_r1,uVar3);
if (iVar2 == 0) {
local_64 = 0;
local_60 = 0;
local_54 = 8;
local_50 = 1;
uVar4 = FUN_8f614d70(8,1,local_5c,local_58,(undefined4 *)0x0,0);
}
else {
local_4c = (int *)0x2000801;
local_48 = 1;
local_44 = local_6c;
local_40 = local_58;
uVar4 = FUN_8f614fbc(&local_4c,(undefined4 *)0x0);
}
local_68 = (undefined4)uVar4;
if (local_c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(local_68,(int)((ulonglong)uVar4 >> 0x20),local_c);
}
return;
}
void FUN_8f6157b4(void)
{
uint *puVar1;
int iVar2;
undefined4 extraout_r1;
undefined4 uVar3;
undefined8 uVar4;
undefined4 local_50;
int *local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_10;
int *local_c;
local_c = DAT_8f69d118;
uVar3 = 0x40;
puVar1 = FUN_8f636968((uint *)&local_4c,0,0x40);
iVar2 = FUN_8f6153b8(puVar1,extraout_r1,uVar3);
if (iVar2 == 0) {
uVar3 = 0;
uVar4 = FUN_8f614c50(9,1);
}
else {
local_4c = (int *)0x2000901;
local_48 = 1;
local_44 = 0;
local_10 = 1;
uVar4 = FUN_8f614fbc(&local_4c,(undefined4 *)0x0);
}
if ((int)uVar4 != 0) {
iVar2 = FUN_8f6153b8((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),uVar3);
if (iVar2 == 0) {
uVar4 = FUN_8f614c50(9,2);
}
else {
local_4c = (int *)0x2000902;
local_48 = 1;
local_44 = 0;
local_10 = 1;
uVar4 = FUN_8f614fbc(&local_4c,(undefined4 *)0x0);
}
}
local_50 = (undefined4)uVar4;
if (local_c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(local_50,(int)((ulonglong)uVar4 >> 0x20),local_c);
}
return;
}
void FUN_8f6158f0(undefined4 param_1,undefined4 param_2)
{
int iVar1;
int *extraout_r1;
int *extraout_r1_00;
int *piVar2;
undefined4 *puVar3;
int **ppiVar4;
int *in_lr;
undefined8 uVar5;
int *local_54;
undefined4 local_50;
undefined4 *local_4c;
undefined4 local_48;
int *local_14;
local_14 = DAT_8f69d118;
puVar3 = (undefined4 *)0x40;
FUN_8f636968((uint *)&local_54,0,0x40);
DAT_8f689004 = 0;
DAT_8f68904c = 0;
DAT_8f689000 = param_2;
DAT_8f689048 = param_1;
iVar1 = FUN_8f6153b8(param_1,0,puVar3);
if (iVar1 == 0) {
puVar3 = &DAT_8f689000;
ppiVar4 = (int **)0x50;
FUN_8f614d70(1,0xf,&DAT_8f689000,0x50,(undefined4 *)0x0,0);
piVar2 = extraout_r1;
}
else {
local_54 = (int *)0x200010f;
local_50 = 0x12;
local_4c = &DAT_8f689000;
local_48 = 0x50;
ppiVar4 = &local_54;
FUN_8f614fbc(ppiVar4,(undefined4 *)0x0);
piVar2 = extraout_r1_00;
}
dprintf((byte *)s_Failed_to_jump_to_kernel_8f65f698,piVar2,puVar3,ppiVar4);
uVar5 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f65f4c4,
(int *)s_platform_msm_shared_scm_c_8f65f4e4,0x433);
if (local_14 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),local_14);
}
return;
}
void FUN_8f615a50(undefined4 *param_1,uint param_2)
{
uint *puVar1;
int iVar2;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 uVar3;
int *local_58;
undefined *local_54;
uint local_50;
int *local_4c;
undefined4 local_48;
undefined *local_44;
uint local_40;
int *local_c;
local_c = DAT_8f69d118;
uVar3 = 0x40;
puVar1 = FUN_8f636968((uint *)&local_4c,0,0x40);
iVar2 = FUN_8f6153b8(puVar1,extraout_r1,uVar3);
if (iVar2 == 0) {
local_54 = &DAT_8f688380;
local_50 = param_2;
FUN_8f625b24((uint)&DAT_8f688380,param_2);
local_58 = (int *)FUN_8f614d70(10,1,&local_54,8,(undefined4 *)0x0,0);
FUN_8f625b24((uint)&DAT_8f688380,param_2);
}
else {
local_4c = (int *)0x2000a01;
local_48 = 0x22;
local_44 = &DAT_8f688380;
local_40 = param_2;
FUN_8f625b24((uint)&DAT_8f688380,param_2);
local_58 = (int *)FUN_8f614fbc(&local_4c,(undefined4 *)0x0);
if (local_58 == (int *)0x0) {
FUN_8f625b24((uint)&DAT_8f688380,param_2);
}
else {
dprintf((byte *)s_Secure_canary_SCM_failed___x_8f65f6b8,local_58,uVar3,local_58);
}
}
FUN_8f636b10(param_1,param_2,(undefined4 *)&DAT_8f688380,0x40);
if (local_c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(local_58,extraout_r1_00,local_c);
}
return;
}
void FUN_8f615bd4(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
ulonglong uVar1;
ulonglong uVar2;
uint local_10;
int *local_c;
local_c = DAT_8f69d118;
uVar1 = FUN_8f615a50(&local_10,4);
uVar2 = uVar1 & 0xffffffff00000000 | (ulonglong)local_10;
if ((int)uVar1 != 0) {
dprintf((byte *)s_scm_call_for_random_failed_____8f65f6d8,(int *)(uVar1 >> 0x20),param_3,
(int)uVar1);
uVar2 = FUN_8f6367c8();
}
local_10 = (uint)uVar2;
if (local_c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(local_10,(int)(uVar2 >> 0x20),local_c);
}
return;
}
void FUN_8f615c50(void)
{
uint *puVar1;
int iVar2;
undefined4 extraout_r1;
int **ppiVar3;
undefined8 uVar4;
uint local_60;
int local_5c;
uint local_58;
undefined4 local_54;
undefined4 local_50;
int *local_4c [16];
int *local_c;
local_c = DAT_8f69d118;
local_5c = 0;
puVar1 = FUN_8f636968((uint *)local_4c,0,0x40);
local_58 = 0;
local_54 = 0;
local_50 = 0;
iVar2 = FUN_8f6153b8(puVar1,extraout_r1,0);
if (iVar2 == 0) {
ppiVar3 = (int **)0x0;
uVar4 = FUN_8f614d70(6,4,(undefined4 *)0x0,0,&local_60,4);
}
else {
local_4c[0] = (int *)0x2000604;
ppiVar3 = local_4c;
uVar4 = FUN_8f614fbc(ppiVar3,&local_58);
local_60 = local_58;
}
local_5c = (int)uVar4;
if (local_5c == 0) {
if ((local_60 & 1) != 0) {
DAT_8f67ef20 = 0;
}
if ((local_60 & 4) != 0) {
DAT_8f67ef1c = 0;
}
}
else {
uVar4 = dprintf((byte *)s_scm_call_to_check_secure_boot_fu_8f65f72c,
(int *)((ulonglong)uVar4 >> 0x20),ppiVar3,local_5c);
}
if (local_c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),local_c);
}
return;
}
void FUN_8f615da0(void)
{
int *piVar1;
undefined4 extraout_r1;
piVar1 = DAT_8f69d118;
FUN_8f615c50();
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(DAT_8f67ef20,extraout_r1,piVar1);
}
return;
}
void FUN_8f615df4(undefined4 param_1,undefined4 param_2)
{
uint *puVar1;
int iVar2;
undefined4 extraout_r1;
undefined8 uVar3;
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
int *local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_40;
undefined4 local_10;
int *local_c;
local_c = DAT_8f69d118;
puVar1 = FUN_8f636968((uint *)&local_4c,0,0x40);
local_58 = 0;
local_54 = 0;
local_50 = 0;
iVar2 = FUN_8f6153b8(puVar1,extraout_r1,0);
if (iVar2 == 0) {
uVar3 = FUN_8f614cdc(5,2,param_1,param_2);
}
else {
local_4c = (int *)0x2000502;
local_48 = 2;
local_10 = 1;
local_44 = param_1;
local_40 = param_2;
uVar3 = FUN_8f614fbc(&local_4c,&local_58);
}
local_5c = (undefined4)uVar3;
if (local_c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(local_5c,(int)((ulonglong)uVar3 >> 0x20),local_c);
}
return;
}
void FUN_8f615ef8(uint param_1,uint param_2,undefined4 param_3,undefined4 param_4)
{
uint *puVar1;
int iVar2;
undefined4 extraout_r1;
undefined8 uVar3;
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
int *local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_40;
int *local_c;
local_c = DAT_8f69d118;
puVar1 = FUN_8f636968((uint *)&local_4c,0,0x40);
local_58 = 0;
local_54 = 0;
local_50 = 0;
iVar2 = FUN_8f6153b8(puVar1,extraout_r1,0);
if (iVar2 == 0) {
uVar3 = FUN_8f614cdc(param_1,param_2,param_3,param_4);
}
else {
local_4c = (int *)((param_1 << 8 | param_2) & 0xffff | 0x2000000);
local_48 = 2;
local_44 = param_3;
local_40 = param_4;
uVar3 = FUN_8f614fbc(&local_4c,&local_58);
}
local_5c = (undefined4)uVar3;
if (local_c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(local_5c,(int)((ulonglong)uVar3 >> 0x20),local_c);
}
return;
}
void FUN_8f616014(void)
{
int *piVar1;
int *piVar2;
uint extraout_r1;
uint extraout_r1_00;
undefined4 uVar3;
ulonglong uVar4;
undefined4 local_10;
piVar1 = DAT_8f69d118;
FUN_8f615c50();
uVar4 = (ulonglong)extraout_r1 << 0x20;
if ((DAT_8f67ef20 == 0) && (uVar4 = (ulonglong)extraout_r1 << 0x20, DAT_8f67ef1c == 0)) {
uVar3 = 1;
uVar4 = FUN_8f615ef8(1,9,1,0);
piVar2 = (int *)uVar4;
if (piVar2 != (int *)0x0) {
dprintf((byte *)s_Failed_to_disable_secure_wdog_de_8f65f758,piVar2,uVar3,piVar2);
uVar4 = uVar4 & 0xffffffff | (ulonglong)extraout_r1_00 << 0x20;
}
}
local_10 = (undefined4)uVar4;
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(local_10,(int)(uVar4 >> 0x20),piVar1);
}
return;
}
void FUN_8f6160c4(int param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
int iVar2;
undefined4 extraout_r1;
undefined8 uVar3;
int *local_14;
undefined4 local_10;
piVar1 = DAT_8f69d118;
if (param_1 == -0xfffffff) {
local_10 = 0x10;
}
else if (param_1 == -0xffffffe) {
local_10 = 1;
}
else {
local_10 = 0;
}
iVar2 = FUN_8f6151bc(1,0x10);
if (iVar2 < 1) {
local_14 = (int *)FUN_8f615df4(0x193d100,local_10);
local_10 = param_3;
}
else {
local_14 = (int *)FUN_8f615ef8(1,0x10,local_10,0);
}
if (local_14 == (int *)0x0) {
uVar3 = FUN_8f616014();
}
else {
dprintf((byte *)s_Failed_to_write_to_boot_misc___d_8f65f784,local_14,local_10,local_14);
uVar3 = CONCAT44(extraout_r1,local_14);
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),piVar1);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f616244)
void FUN_8f6161c8(uint param_1,undefined4 param_2)
{
return;
}
void FUN_8f616250(int *param_1,uint *param_2)
{
uint *puVar1;
uint uVar2;
uint extraout_r1;
undefined4 uVar3;
uint *puVar4;
uint *puVar5;
uint local_60;
uint local_5c;
uint local_58;
int *local_54;
uint local_50 [4];
uint local_40 [11];
int *local_14;
uVar3 = 0x40;
local_14 = DAT_8f69d118;
FUN_8f636968((uint *)&local_54,0,0x40);
local_60 = 0;
local_5c = 0;
local_58 = 0;
if (param_2 == (uint *)0x0) {
dprintf((byte *)s__s__Invalid_input_8f65f854,(int *)s_allocate_extra_arg_buffer_8f65f824,uVar3,0
);
uVar3 = 0xffffffff;
uVar2 = extraout_r1;
}
else {
local_50[0] = *param_2;
local_50[1] = param_2[1];
local_50[2] = param_2[2];
local_50[3] = param_2[3];
if (3 < (local_50[0] & 0xf)) {
puVar4 = local_50 + 3;
puVar5 = param_2;
do {
puVar1 = puVar5 + 4;
puVar5 = puVar5 + 1;
puVar4 = puVar4 + 1;
*puVar4 = *puVar1;
} while (puVar4 != local_50 + (local_50[0] & 0xf));
}
local_54 = param_1;
uVar3 = FUN_8f614fbc(&local_54,&local_60);
param_2[0xb] = local_60;
param_2[0xc] = local_5c;
param_2[0xd] = local_58;
uVar2 = local_60;
}
if (local_14 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,uVar2,local_14);
}
return;
}
void FUN_8f616340(int param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
undefined4 *puVar2;
undefined4 *puVar3;
undefined4 *extraout_r1;
piVar1 = DAT_8f69d118;
if (param_1 < 1) {
dprintf((byte *)s__s__Invalid_Input_8f65f868,(int *)s___qseecom_check_handle_exists_8f65ffdc,
param_3,DAT_8f69d118);
puVar2 = (undefined4 *)0x0;
puVar3 = extraout_r1;
}
else {
puVar3 = &DAT_8f68a028;
puVar2 = DAT_8f68a02c;
if (DAT_8f68a02c != &DAT_8f68a028) {
do {
if (puVar2[0xc] == param_1) goto LAB_8f6163a0;
puVar2 = (undefined4 *)puVar2[1];
} while (puVar2 != &DAT_8f68a028);
}
puVar2 = (undefined4 *)0x0;
}
LAB_8f6163a0:
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(puVar2,puVar3,piVar1);
}
return;
}
void FUN_8f6163d8(int *param_1,uint param_2,int **param_3,int *param_4,int **param_5)
{
int *piVar1;
int iVar2;
uint uVar3;
int *piVar4;
uint extraout_r1;
undefined4 extraout_r1_00;
uint *puVar5;
undefined4 uVar6;
undefined4 *puVar7;
int *piVar8;
int *piVar9;
int *piVar10;
int *piVar11;
uint *puVar12;
uint *puVar13;
bool bVar14;
undefined8 uVar15;
int *local_ac;
int *local_a4;
int *local_9c;
uint *local_90;
int *local_84;
int *local_80;
undefined4 local_7c;
uint local_78;
int *local_74;
int *local_70;
int *local_6c;
int *local_68;
int *local_64;
int *local_4c;
ushort local_48;
int *local_44;
int *local_2c;
local_ac = (int *)(uint)(param_5 == (int **)0x0 || param_3 == (int **)0x0);
local_2c = DAT_8f69d118;
local_84 = (int *)0x0;
local_80 = (int *)0x0;
local_7c = 0;
if (param_5 != (int **)0x0 && param_3 != (int **)0x0) {
piVar4 = DAT_8f69d118;
uVar15 = FUN_8f627334((int)PTR_DAT_8f616ab8);
local_9c = *param_3;
local_a4 = local_ac;
do {
iVar2 = FUN_8f6153b8((int)uVar15,(int)((ulonglong)uVar15 >> 0x20),piVar4);
piVar4 = DAT_8f68a088;
if (iVar2 == 0) {
piVar4 = param_4;
piVar9 = (int *)FUN_8f614d70((int)param_1,param_2,param_3,(int)param_4,param_5,10);
goto LAB_8f6164e4;
}
puVar7 = &DAT_8f68a084;
if (DAT_8f68a088 != (int *)0x0) {
local_a4 = DAT_8f68a088;
FUN_8f625b4c((uint)DAT_8f68a088,DAT_8f68a08c);
local_ac = (int *)(uint)*(ushort *)((int)piVar4 + 2);
}
uVar6 = 0x48;
FUN_8f636968(&local_78,0,0x48);
piVar4 = *param_3;
if (param_1 == (int *)&DAT_00000006) {
if (param_2 == 1) {
piVar9 = (int *)0x2000601;
local_74 = (int *)0x2000603;
local_78 = param_2;
}
else if (param_2 == 3) {
piVar9 = (int *)0x2000603;
local_78 = 1;
local_74 = piVar4;
}
else {
piVar9 = (int *)0x0;
}
piVar9 = (int *)FUN_8f616250(piVar9,&local_78);
goto LAB_8f6164c0;
}
if (param_1 != (int *)0xfc) {
piVar9 = (int *)0xffffffff;
dprintf((byte *)s_svc_id_0x_x_is_not_supported_by_a_8f65f8b4,param_1,uVar6,puVar7);
goto LAB_8f6164c0;
}
switch((int)piVar4 + -1) {
case 0:
local_74 = param_3[1];
local_70 = param_3[2];
uVar3 = 0x101;
local_6c = param_3[3];
goto LAB_8f61698c;
case 1:
local_74 = param_3[1];
uVar3 = 0x102;
goto LAB_8f6168a0;
default:
piVar9 = (int *)0xffffffff;
dprintf((byte *)s_qseos_cmd_id_0x_d_is_not_support_8f65f87c,piVar4,uVar6,(int)piVar4 + -1);
break;
case 3:
local_70 = param_3[2];
local_74 = param_3[1];
local_6c = param_3[3];
local_78 = 0x83;
piVar9 = (int *)FUN_8f616250((int *)0x32000201,&local_78);
break;
case 4:
local_74 = param_3[1];
uVar3 = 0x202;
goto LAB_8f6168a0;
case 5:
local_6c = param_3[3];
local_74 = param_3[1];
local_70 = param_3[2];
local_64 = param_3[5];
local_68 = param_3[4];
local_78 = 0x885;
piVar9 = (int *)FUN_8f616250((int *)0x30000001,&local_78);
break;
case 6:
local_74 = param_3[1];
local_70 = param_3[2];
local_78 = 2;
piVar9 = (int *)FUN_8f616250((int *)0x32000203,&local_78);
break;
case 10:
local_74 = param_3[1];
local_70 = param_3[2];
uVar3 = 0x107;
local_6c = param_3[3];
LAB_8f61698c:
local_78 = 3;
piVar9 = (int *)FUN_8f616250((int *)(uVar3 | 0x32000000),&local_78);
break;
case 0xb:
piVar9 = (int *)FUN_8f616250((int *)0x32000108,&local_78);
break;
case 0xc:
local_74 = param_3[1];
local_70 = param_3[2];
uVar3 = 0x105;
goto LAB_8f6169d8;
case 0xd:
local_74 = param_3[1];
local_70 = param_3[2];
uVar3 = 0x106;
LAB_8f6169d8:
local_78 = 0x22;
piVar9 = (int *)FUN_8f616250((int *)(uVar3 | 0x32000000),&local_78);
break;
case 0xe:
local_74 = param_3[1];
uVar3 = 0x401;
LAB_8f6168a0:
local_78 = 1;
piVar9 = (int *)FUN_8f616250((int *)(uVar3 | 0x32000000),&local_78);
break;
case 0xf:
piVar9 = (int *)FUN_8f616250((int *)0x32000402,&local_78);
}
LAB_8f6164c0:
piVar1 = DAT_8f68a088;
param_3 = (int **)(uint)local_48;
bVar14 = DAT_8f68a088 != (int *)0x0;
*param_5 = local_4c;
*(ushort *)(param_5 + 1) = local_48;
*(int **)((int)param_5 + 6) = local_44;
piVar4 = local_44;
if (bVar14) {
FUN_8f625b4c((uint)piVar1,DAT_8f68a08c);
piVar1 = DAT_8f68a088;
piVar11 = (int *)(uint)*(ushort *)((int)local_a4 + 2);
if (local_ac < piVar11) {
piVar10 = (int *)((int)piVar11 - (int)local_ac);
local_90 = (uint *)FUN_8f63666c((uint)piVar10,extraout_r1_00);
if (local_90 != (uint *)0x0) {
FUN_8f636968(local_90,0,(int)piVar10);
param_3 = (int **)((int)(piVar1 + 1) + (int)local_ac);
piVar11 = piVar10;
FUN_8f636b10(local_90,(uint)piVar10,param_3,(uint)piVar10);
goto LAB_8f61677c;
}
LAB_8f616aa0:
dprintf((byte *)s_Failed_to_alloc_buffer_to_print_T_8f65f8e8,piVar10,param_3,piVar4);
}
else if (piVar11 < local_ac) {
piVar10 = (int *)((int)piVar11 + (0xffc - (int)local_ac));
piVar8 = (int *)(0xffc - (int)local_ac);
piVar4 = piVar8;
local_90 = (uint *)FUN_8f63666c((uint)piVar10,extraout_r1_00);
if (local_90 == (uint *)0x0) goto LAB_8f616aa0;
FUN_8f636968(local_90,0,(int)piVar10);
param_3 = (int **)(piVar1 + 1);
FUN_8f636b10(local_90,(uint)piVar10,(undefined4 *)((int)param_3 + (int)local_ac),
(uint)piVar8);
FUN_8f636b10((undefined4 *)((int)local_90 + (int)piVar8),(int)piVar10 - (int)piVar8,
param_3,(uint)piVar11);
LAB_8f61677c:
if (piVar10 != (int *)0x0) {
piVar4 = (int *)0x0;
piVar11 = (int *)0x0;
puVar5 = local_90;
puVar12 = local_90;
do {
param_3 = (int **)(uint)*(byte *)puVar12;
if ((param_3 == (int **)0xd) &&
(param_3 = (int **)(uint)*(byte *)((int)puVar12 + 1), param_3 == (int **)0xa)) {
*(byte *)puVar12 = 0;
puVar13 = (uint *)((int)puVar12 + 2);
*(byte *)((int)puVar12 + 1) = 0;
piVar4 = (int *)((int)piVar4 + 2);
dprintf((byte *)(s_SERIAL_NUMBER____s_8f65e864 + 0x10),(int *)puVar5,10,0);
puVar5 = puVar13;
}
else {
piVar4 = (int *)((int)piVar4 + 1);
puVar13 = (uint *)((int)puVar12 + 1);
}
puVar12 = puVar13;
} while (piVar4 < piVar10);
}
FUN_8f636758((int)local_90);
piVar4 = piVar11;
}
}
LAB_8f6164e4:
if (piVar9 != (int *)0x0) {
dprintf((byte *)s_ERROR__scm_call_to_load_failed___8f65f914,piVar9,param_3,piVar4);
piVar9 = (int *)0xffffffff;
goto LAB_8f616524;
}
if (param_1 == (int *)&DAT_00000006) goto LAB_8f616524;
piVar4 = *param_5;
if (piVar4 != (int *)0x1) {
if (piVar4 == (int *)0x0) {
iVar2 = 0xee01;
if ((((int *)(uint)*(ushort *)(param_5 + 1) != (int *)0xee01) ||
(iVar2 = *(int *)((int)param_5 + 6), iVar2 == 0)) &&
(local_9c == (int *)&DAT_00000006)) {
dprintf((byte *)s_ERROR__Resp_type__d_or_Resp_Data_8f65f940,
(int *)(uint)*(ushort *)(param_5 + 1),*(undefined4 *)((int)param_5 + 6),iVar2);
piVar9 = (int *)0xffffffff;
}
}
else if (piVar4 == (int *)0xffffffff) {
dprintf((byte *)s_scm_call_failed_w_response_resul_8f65f970,*param_5,param_3,0xffffffff);
piVar9 = piVar4;
}
else {
dprintf((byte *)s_scm_call_return_unknown_response_8f65f9d8,*param_5,param_3,piVar4);
piVar9 = (int *)0xffffffff;
}
goto LAB_8f616524;
}
if (*(ushort *)(param_5 + 1) != 0xee02) goto LAB_8f616a84;
FUN_8f627334((int)PTR_DAT_8f616abc);
puVar7 = DAT_8f68a008;
if (DAT_8f68a008 != &DAT_8f68a004) {
iVar2 = DAT_8f68a008[2];
while (*(int *)((int)param_5 + 6) != iVar2) {
puVar7 = (undefined4 *)puVar7[1];
if (puVar7 == &DAT_8f68a004) goto LAB_8f61665c;
iVar2 = puVar7[2];
}
FUN_8f625b4c(puVar7[3],puVar7[4]);
(*(code *)puVar7[5])(puVar7[3],puVar7[4]);
FUN_8f625b24(puVar7[3],puVar7[4]);
}
LAB_8f61665c:
piVar4 = (int *)puVar7[2];
param_3 = &local_84;
local_9c = (int *)0x7;
local_84 = (int *)0x7;
local_7c = 0;
local_80 = piVar4;
uVar15 = FUN_8f627418((int)PTR_DAT_8f616abc);
} while( true );
}
piVar9 = (int *)0xffffffff;
LAB_8f616530:
if (local_2c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(piVar9,param_2,local_2c);
}
return;
LAB_8f616a84:
dprintf((byte *)s_Listener_service_incorrect_resp__8f65f998,*param_5,
(uint)*(ushort *)(param_5 + 1),0xee02);
piVar9 = (int *)0xffffffff;
LAB_8f616524:
FUN_8f627418((int)PTR_DAT_8f616ab8);
param_2 = extraout_r1;
goto LAB_8f616530;
}
void FUN_8f616ac0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
undefined4 *puVar2;
undefined4 *extraout_r1;
undefined4 *puVar3;
piVar1 = DAT_8f69d118;
if (param_1 == (undefined4 *)0x0) {
dprintf((byte *)s__s__Invalid_Input_8f65f868,(int *)s___qseecom_check_listener_exists_8f65ffa0,
param_3,DAT_8f69d118);
puVar3 = param_1;
puVar2 = extraout_r1;
}
else {
puVar2 = &DAT_8f68a004;
puVar3 = DAT_8f68a008;
if (DAT_8f68a008 != &DAT_8f68a004) {
do {
if ((undefined4 *)puVar3[2] == param_1) goto LAB_8f616b14;
puVar3 = (undefined4 *)puVar3[1];
} while (puVar3 != &DAT_8f68a004);
}
puVar3 = (undefined4 *)0x0;
}
LAB_8f616b14:
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(puVar3,puVar2,piVar1);
}
return;
}
void FUN_8f616b54(int *param_1,undefined4 param_2,int **param_3)
{
undefined *puVar1;
undefined *puVar2;
undefined uVar3;
int iVar4;
uint uVar5;
int **ppiVar6;
undefined4 extraout_r1;
int *piVar7;
int *extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
uint uVar8;
uint uVar9;
int *piVar10;
undefined4 uVar11;
int *piVar12;
undefined *puVar13;
undefined8 uVar14;
longlong lVar15;
int *local_68;
undefined2 local_64;
undefined2 uStack_62;
undefined2 local_60;
int *local_5c;
int *local_58;
int *local_54;
int *local_50;
int *local_4c;
int *local_48;
int *local_44;
int *local_40;
int *local_3c;
int *local_38;
int *local_34;
int *local_30;
int local_2c;
local_2c = DAT_8f69d118;
if (param_1 == (int *)0x0) {
dprintf((byte *)s__s__Input_error_8f65fa00,(int *)s_qseecom_start_app_8f65f840,param_3,
DAT_8f69d118);
ppiVar6 = (int **)0xffffffff;
goto LAB_8f616d54;
}
FUN_8f627334((int)&DAT_8f68a05c);
iVar4 = DAT_8f68a07c;
if ((DAT_8f68a07c == 0) || (iVar4 = DAT_8f68a080, DAT_8f68a080 == 0)) {
dprintf((byte *)s__s_qseecom_init_not_done_8f65fa14,(int *)s_qseecom_start_app_8f65f840,param_3,
iVar4);
FUN_8f627418((int)PTR_DAT_8f617090);
ppiVar6 = (int **)0xffffffff;
goto LAB_8f616d54;
}
FUN_8f627418((int)&DAT_8f68a05c);
if (DAT_8f68a078 == (int *)0x0) {
local_5c = DAT_8f68a078;
local_58 = DAT_8f68a078;
local_54 = DAT_8f68a078;
local_50 = DAT_8f68a078;
local_4c = DAT_8f68a078;
local_48 = DAT_8f68a078;
local_44 = DAT_8f68a078;
local_40 = DAT_8f68a078;
local_3c = DAT_8f68a078;
local_38 = DAT_8f68a078;
local_34 = DAT_8f68a078;
local_30 = DAT_8f68a078;
local_68 = DAT_8f68a078;
local_64 = 0;
uStack_62 = 0;
local_60 = 0;
piVar10 = DAT_8f68a078;
iVar4 = FUN_8f606760((byte *)s_cmnlib_8f65fa30);
uVar3 = FUN_8f606904(iVar4);
FUN_8f60db18(uVar3);
uVar14 = FUN_8f606814(iVar4,extraout_r1);
piVar7 = (int *)((ulonglong)uVar14 >> 0x20);
piVar12 = (int *)uVar14;
if ((piVar7 != (int *)0x0 || (int *)0xfffff < piVar12) &&
(piVar7 != (int *)0x0 || piVar12 != (int *)0x100000)) {
dprintf((byte *)s_Invalid_cmnlib_partition_size__8f65fa38,piVar7,param_3,piVar10);
LAB_8f616f10:
ppiVar6 = (int **)0xffffffff;
}
else {
uVar14 = FUN_8f6366a8((int *)0x1000,(int)piVar12 + 0xfffU & 0xfffff000);
uVar5 = (uint)uVar14;
if (uVar5 == 0) {
dprintf((byte *)s__s__Aloc_failed_for__s_image_8f65fa58,
(int *)s_qseecom_load_commonlib_image_8f65f7f0,s_cmnlib_8f65fa30,piVar10);
goto LAB_8f616f10;
}
lVar15 = FUN_8f60688c(iVar4,(int)((ulonglong)uVar14 >> 0x20));
uVar9 = (uint)((ulonglong)lVar15 >> 0x20);
piVar10 = (int *)((uint)lVar15 | uVar9);
if (lVar15 == 0) {
dprintf((byte *)s_ERROR__No__s_found_8f65fa78,(int *)s_cmnlib_8f65fa30,param_3,0);
ppiVar6 = (int **)0xffffffff;
LAB_8f616d84:
FUN_8f636758(uVar5);
}
else {
uVar8 = uVar5;
piVar10 = piVar12;
uVar14 = FUN_8f60d85c((uint)lVar15,uVar9,uVar5,(uint)piVar12);
if ((int *)uVar14 != (int *)0x0) {
dprintf((byte *)s_ERROR__Cannot_read__s_image_8f65fa8c,(int *)s_cmnlib_8f65fa30,uVar8,
piVar10);
ppiVar6 = (int **)0xffffffff;
goto LAB_8f616d84;
}
local_50 = (int *)FUN_8f602f04(uVar5,(int)((ulonglong)uVar14 >> 0x20));
local_5c = (int *)0xb;
local_58 = (int *)uVar14;
local_54 = piVar12;
FUN_8f636b10(&local_4c,0x20,(undefined4 *)s_cmnlib_8f65fa30,0x20);
FUN_8f625b24((uint)local_50,(int)local_54);
param_3 = &local_5c;
piVar10 = (int *)0x10;
ppiVar6 = (int **)FUN_8f6163d8((int *)0xfc,1,param_3,(int *)0x10,&local_68);
if (ppiVar6 != (int **)0x0) goto LAB_8f616d84;
ppiVar6 = (int **)CONCAT22(local_60,uStack_62);
FUN_8f636758(uVar5);
if (ppiVar6 == (int **)0x0) {
dprintf((byte *)s_Loading_cmnlib_done_8f65fae4,extraout_r1_00,param_3,piVar10);
DAT_8f68a078 = (int *)0x1;
goto LAB_8f616cf0;
}
}
}
param_3 = ppiVar6;
dprintf((byte *)s__s_qseecom_load_commonlib_image_f_8f65faac,(int *)s_qseecom_start_app_8f65f840
,ppiVar6,piVar10);
goto LAB_8f616d54;
}
LAB_8f616cf0:
FUN_8f627334((int)PTR_DAT_8f617090);
puVar2 = PTR_DAT_8f617094;
for (puVar13 = DAT_8f68a02c; puVar13 != puVar2; puVar13 = *(undefined **)(puVar13 + 4)) {
param_3 = (int **)0x20;
iVar4 = FUN_8f636e98((byte *)param_1,puVar13 + 0x10,(int *)0x20);
puVar1 = PTR_DAT_8f617090;
if (iVar4 == 0) {
if (puVar13 != (undefined *)0x0) {
ppiVar6 = *(int ***)(puVar13 + 0x30);
*(int *)(puVar13 + 0xc) = *(int *)(puVar13 + 0xc) + 1;
FUN_8f627418((int)puVar1);
goto LAB_8f616d54;
}
break;
}
}
FUN_8f627418((int)&DAT_8f68a05c);
uVar11 = 0;
local_5c = (int *)0x0;
local_58 = (int *)0x0;
local_54 = (int *)0x0;
local_50 = (int *)0x0;
local_4c = (int *)0x0;
local_48 = (int *)0x0;
local_44 = (int *)0x0;
local_40 = (int *)0x0;
local_3c = (int *)0x0;
local_38 = (int *)0x0;
local_34 = (int *)0x0;
local_30 = (int *)0x0;
iVar4 = FUN_8f606760((byte *)param_1);
uVar3 = FUN_8f606904(iVar4);
FUN_8f60db18(uVar3);
uVar14 = FUN_8f606814(iVar4,extraout_r1_01);
piVar12 = (int *)((ulonglong)uVar14 >> 0x20);
piVar10 = (int *)uVar14;
if ((piVar12 != (int *)0x0 || (int *)0xfffff < piVar10) &&
(piVar12 != (int *)0x0 || piVar10 != (int *)0x100000)) {
dprintf((byte *)s_Invalid_TA_partition_size__8f65fafc,piVar12,param_3,uVar11);
LAB_8f616ea8:
ppiVar6 = (int **)0xffffffff;
}
else {
uVar14 = FUN_8f6366a8((int *)0x1000,(int)piVar10 + 0xfffU & 0xfffff000);
uVar5 = (uint)uVar14;
if (uVar5 == 0) {
dprintf((byte *)s__s__Aloc_failed_for__s_image_8f65fa58,(int *)s___qseecom_load_app_8f65ff8c,
param_1,uVar11);
goto LAB_8f616ea8;
}
lVar15 = FUN_8f60688c(iVar4,(int)((ulonglong)uVar14 >> 0x20));
if (lVar15 == 0) {
dprintf((byte *)s_ERROR__No__s_found_8f65fa78,param_1,param_3,0);
LAB_8f616ea0:
FUN_8f636758(uVar5);
goto LAB_8f616ea8;
}
uVar9 = uVar5;
piVar12 = piVar10;
uVar14 = FUN_8f60d85c((uint)lVar15,(uint)((ulonglong)lVar15 >> 0x20),uVar5,(uint)piVar10);
if ((int *)uVar14 != (int *)0x0) {
dprintf((byte *)s_ERROR__Cannot_read__s_image_8f65fa8c,param_1,uVar9,piVar12);
goto LAB_8f616ea0;
}
local_50 = (int *)FUN_8f602f04(uVar5,(int)((ulonglong)uVar14 >> 0x20));
local_5c = (int *)0x1;
local_58 = (int *)uVar14;
local_54 = piVar10;
FUN_8f636b10(&local_4c,0x20,param_1,0x20);
FUN_8f625b24((uint)local_50,(int)local_54);
param_3 = &local_5c;
uVar11 = 0x10;
ppiVar6 = (int **)FUN_8f6163d8((int *)0xfc,1,param_3,(int *)0x10,&local_68);
if (ppiVar6 == (int **)0x0) {
ppiVar6 = (int **)CONCAT22(local_60,uStack_62);
FUN_8f636758(uVar5);
if (ppiVar6 != (int **)0x0) {
FUN_8f627334((int)&DAT_8f68a05c);
uVar14 = FUN_8f63666c(0x34,extraout_r1_02);
piVar10 = (int *)uVar14;
if (piVar10 == (int *)0x0) {
dprintf((byte *)s_malloc_for_app_entry_failed_8f65fb50,(int *)((ulonglong)uVar14 >> 0x20),
param_3,uVar11);
dprintf((byte *)s__s____qseecom_add_app_entry_fail_8f65fb70,
(int *)s_qseecom_start_app_8f65f840,param_3,uVar11);
FUN_8f627418((int)&DAT_8f68a05c);
ppiVar6 = (int **)0xffffffff;
}
else {
piVar10[3] = 1;
param_3 = (int **)0x20;
piVar10[2] = (int)ppiVar6;
FUN_8f636d18((int)(piVar10 + 4),(byte *)param_1,0x20);
piVar10[1] = (int)puVar2;
ppiVar6 = (int **)((int)DAT_8f68a054 + 1);
*piVar10 = (int)DAT_8f68a028;
DAT_8f68a028[1] = (int)piVar10;
piVar10[0xc] = (int)ppiVar6;
DAT_8f68a028 = piVar10;
DAT_8f68a054 = ppiVar6;
FUN_8f627418((int)&DAT_8f68a05c);
}
goto LAB_8f616d54;
}
}
else {
FUN_8f636758(uVar5);
}
}
param_3 = ppiVar6;
dprintf((byte *)s__s____qseecom_load_app_failed_wi_8f65fb18,(int *)s_qseecom_start_app_8f65f840,
param_3,param_1);
ppiVar6 = (int **)0xffffffff;
LAB_8f616d54:
if (local_2c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(ppiVar6,local_2c,(int *)param_3);
}
return;
}
void FUN_8f617098(int param_1,undefined4 *param_2,int *param_3,undefined4 *param_4,int *param_5)
{
int iVar1;
char *pcVar2;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 extraout_r1_03;
undefined4 extraout_r1_04;
undefined4 extraout_r1_05;
undefined4 extraout_r1_06;
int *piVar3;
int *piVar4;
undefined4 uVar5;
undefined4 *puVar6;
undefined8 uVar7;
int *apiStack_50 [3];
int *local_44;
undefined4 local_40;
undefined4 local_3c;
int *local_38;
undefined4 local_34;
int *local_30;
int *local_2c;
local_2c = DAT_8f69d118;
if (param_1 < 1) {
dprintf((byte *)s__s_Handle_is_Invalid_8f65fc20,(int *)s_qseecom_send_command_8f65fffc,param_3,
param_4);
iVar1 = -1;
uVar5 = extraout_r1_06;
goto LAB_8f6171f4;
}
if (param_4 == (undefined4 *)0x0 || param_2 == (undefined4 *)0x0) {
dprintf((byte *)s__s__Input_Buffers_invalid_8f65fc38,(int *)s_qseecom_send_command_8f65fffc,
param_3,param_4);
iVar1 = -1;
uVar5 = extraout_r1_05;
goto LAB_8f6171f4;
}
piVar3 = param_3;
FUN_8f627334((int)&DAT_8f68a05c);
iVar1 = DAT_8f68a07c;
if ((DAT_8f68a07c == 0) || (iVar1 = DAT_8f68a080, DAT_8f68a080 == 0)) {
dprintf((byte *)s__s_qseecom_init_not_done_8f65fa14,(int *)s_qseecom_send_command_8f65fffc,
piVar3,iVar1);
FUN_8f627418((int)PTR_DAT_8f6172f0);
iVar1 = -1;
uVar5 = extraout_r1_04;
goto LAB_8f6171f4;
}
iVar1 = FUN_8f616340(param_1,extraout_r1,piVar3);
if (iVar1 == 0) {
iVar1 = -1;
dprintf((byte *)s__s__Send_cmd_on_an_app_that_was_n_8f65fc54,
(int *)s_qseecom_send_command_8f65fffc,param_1,0);
FUN_8f627418((int)&DAT_8f68a05c);
uVar5 = extraout_r1_03;
goto LAB_8f6171f4;
}
uVar5 = *(undefined4 *)(iVar1 + 8);
FUN_8f627418((int)&DAT_8f68a05c);
piVar4 = (int *)~(uint)param_5;
if (piVar4 < param_3) {
pcVar2 = s__s_Integer_overflow_8f65fc8c;
LAB_8f61721c:
dprintf((byte *)pcVar2,(int *)s___qseecom_send_cmd_8f65f810,piVar3,piVar4);
dprintf((byte *)s_req__cmd_req_len___u_8f65fca4,param_3,piVar3,piVar4);
dprintf((byte *)s_req__resp_len___u_8f65fcbc,param_5,piVar3,piVar4);
iVar1 = -1;
}
else {
piVar4 = (int *)((int)param_3 + (int)param_5);
if ((int *)0x100000 < piVar4) {
pcVar2 = s__s_Cmd___Rsp_len_greater_than_TA_8f65fcd0;
goto LAB_8f61721c;
}
local_44 = (int *)&DAT_00000006;
local_40 = uVar5;
uVar7 = FUN_8f602f04(0xa0000000,extraout_r1_00);
local_3c = (undefined4)uVar7;
puVar6 = (undefined4 *)(((int)param_3 + 0xfffU & 0xfffff000) + 0xa0000000);
local_38 = param_3;
local_34 = FUN_8f602f04(puVar6,(int)((ulonglong)uVar7 >> 0x20));
local_30 = param_5;
FUN_8f636b10((undefined4 *)0xa0000000,0x100000,param_2,(uint)param_3);
FUN_8f636b10(puVar6,(uint)param_5,param_4,(uint)param_5);
iVar1 = FUN_8f6163d8((int *)0xfc,1,&local_44,(int *)&DAT_00000018,apiStack_50);
FUN_8f636b10(param_2,(uint)param_3,(undefined4 *)0xa0000000,(uint)local_38);
FUN_8f636b10(param_4,(uint)param_5,puVar6,(uint)local_30);
uVar5 = extraout_r1_01;
if (iVar1 == 0) goto LAB_8f6171f4;
}
dprintf((byte *)s__s___qseecom_send_cmd_failed_wit_8f65fcf8,(int *)s_qseecom_send_command_8f65fffc
,iVar1,param_1);
uVar5 = extraout_r1_02;
LAB_8f6171f4:
if (local_2c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar1,uVar5,local_2c);
}
return;
}
void FUN_8f6172f4(int param_1,undefined4 param_2,undefined4 param_3)
{
uint **ppuVar1;
undefined4 *puVar2;
uint **ppuVar3;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 extraout_r1_03;
int iVar4;
uint *puVar5;
int **ppiVar6;
int iVar7;
uint *puVar8;
undefined4 uVar9;
int *piVar10;
uint *puVar11;
undefined8 uVar12;
int *local_38 [3];
int *local_2c;
uint *local_28;
undefined4 local_24;
uint *local_20;
int *local_1c;
local_1c = DAT_8f69d118;
FUN_8f627334((int)&DAT_8f68a05c);
if (DAT_8f68a07c == 0) {
dprintf((byte *)s__s_qseecom_init_not_done_8f65fa14,(int *)s_qseecom_register_listener_8f65f7d4,
param_3,0);
FUN_8f627418((int)&DAT_8f68a05c);
piVar10 = (int *)0xffffffff;
uVar9 = extraout_r1_02;
goto LAB_8f61738c;
}
iVar7 = DAT_8f68a07c;
FUN_8f627418((int)&DAT_8f68a05c);
FUN_8f627334((int)&DAT_8f68a00c);
if (param_1 == 0) {
dprintf((byte *)s__s_Invalid_Input_listnr_8f65fd30,(int *)s_qseecom_register_listener_8f65f7d4,
param_3,iVar7);
piVar10 = (int *)0xffffffff;
uVar9 = extraout_r1_03;
goto LAB_8f61738c;
}
puVar2 = *(undefined4 **)(param_1 + 4);
iVar7 = *(int *)(param_1 + 8);
if (((puVar2 == (undefined4 *)0x0) || (iVar7 == 0)) ||
(iVar4 = *(int *)(param_1 + 0xc), iVar4 == 0)) {
dprintf((byte *)s__s_Invalid_Input_listnr_id__d_sb_8f65fd4c,
(int *)s_qseecom_register_listener_8f65f7d4,puVar2,iVar7);
piVar10 = (int *)0xffffffff;
uVar9 = extraout_r1_01;
goto LAB_8f61738c;
}
uVar12 = FUN_8f616ac0(puVar2,extraout_r1,iVar4);
piVar10 = (int *)((ulonglong)uVar12 >> 0x20);
if ((int)uVar12 == 0) {
ppuVar3 = (uint **)FUN_8f63666c(0x18,piVar10);
if (ppuVar3 == (uint **)0x0) {
piVar10 = (int *)0xffffffff;
dprintf((byte *)s__s_new_entry_malloc_failed_for_s_8f65fdac,
(int *)s_qseecom_register_listener_8f65f7d4,0x18,iVar7);
}
else {
FUN_8f636968((uint *)ppuVar3,0,0x18);
puVar8 = *(uint **)(param_1 + 8);
puVar5 = *(uint **)(param_1 + 0xc);
puVar11 = *(uint **)(param_1 + 4);
ppuVar3[4] = puVar8;
ppuVar3[5] = puVar5;
ppuVar3[2] = puVar11;
puVar5 = (uint *)FUN_8f6366a8((int *)0x1000,(int)puVar8 + 0xfffU & 0xfffff000);
iVar7 = *(int *)(param_1 + 8);
ppuVar3[3] = puVar5;
if (puVar5 == (uint *)0x0) {
dprintf((byte *)s__s_virt_sb_base_malloc_failed_fo_8f65fdd4,
(int *)s_qseecom_register_listener_8f65f7d4,iVar7,puVar8);
}
else {
FUN_8f636968(puVar5,0,iVar7 + 0xfffU & 0xfffff000);
FUN_8f625b24((uint)ppuVar3[3],*(int *)(param_1 + 8) + 0xfffU & 0xfffff000);
local_28 = ppuVar3[2];
local_20 = ppuVar3[4];
local_2c = (int *)&DAT_00000004;
local_24 = FUN_8f602f04(ppuVar3[3],local_28);
ppiVar6 = &local_2c;
uVar9 = 0x10;
local_38[0] = (int *)0x1;
piVar10 = (int *)FUN_8f6163d8((int *)0xfc,1,ppiVar6,(int *)0x10,local_38);
puVar5 = DAT_8f68a004;
if (piVar10 == (int *)0x0) {
ppuVar3[1] = (uint *)&DAT_8f68a004;
ppuVar1 = ppuVar3;
*ppuVar3 = DAT_8f68a004;
DAT_8f68a004 = (uint *)ppuVar1;
puVar5[1] = (uint)ppuVar3;
goto LAB_8f617380;
}
dprintf((byte *)s_qseecom_scm_call_failed_with_err_8f65fe00,piVar10,ppiVar6,uVar9);
}
if (ppuVar3[3] != (uint *)0x0) {
FUN_8f636758((int)ppuVar3[3]);
}
piVar10 = (int *)0xffffffff;
FUN_8f636758((int)ppuVar3);
}
}
else {
dprintf((byte *)s_Service_is_not_unique_and_is_alr_8f65fd78,piVar10,iVar4,iVar7);
piVar10 = (int *)0xfffffffe;
}
LAB_8f617380:
FUN_8f627418((int)PTR_DAT_8f617568);
uVar9 = extraout_r1_00;
LAB_8f61738c:
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(piVar10,uVar9,local_1c);
}
void FUN_8f61756c(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
int *piVar2;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
int iVar3;
undefined4 uVar4;
int *piVar5;
undefined8 uVar6;
int *local_28;
undefined4 *local_24;
int *local_20 [3];
int *local_14;
local_14 = DAT_8f69d118;
FUN_8f627334((int)&DAT_8f68a05c);
if (DAT_8f68a07c == 0) {
dprintf((byte *)s__s_qseecom_init_not_done_8f65fa14,
(int *)s_qseecom_deregister_listener_8f65ffc0,param_3,0);
FUN_8f627418((int)&DAT_8f68a05c);
piVar2 = (int *)0xffffffff;
uVar4 = extraout_r1_01;
goto LAB_8f61762c;
}
iVar3 = DAT_8f68a07c;
FUN_8f627418((int)&DAT_8f68a05c);
FUN_8f627334((int)&DAT_8f68a00c);
uVar6 = FUN_8f616ac0(param_1,extraout_r1,param_3);
piVar1 = (int *)uVar6;
if (piVar1 == (int *)0x0) {
dprintf((byte *)s_Service_not_present_8f65fe28,(int *)((ulonglong)uVar6 >> 0x20),param_3,iVar3);
LAB_8f617658:
piVar2 = (int *)0xffffffff;
}
else {
uVar4 = 8;
local_20[0] = (int *)0x1;
local_28 = (int *)&DAT_00000005;
local_24 = param_1;
piVar2 = (int *)FUN_8f6163d8((int *)0xfc,1,&local_28,(int *)0x8,local_20);
if (piVar2 != (int *)0x0) {
dprintf((byte *)s_scm_call___failed_with_err___d___8f65fe40,piVar2,local_24,uVar4);
goto LAB_8f617658;
}
piVar5 = (int *)piVar1[1];
*piVar5 = *piVar1;
*(int **)(*piVar1 + 4) = piVar5;
piVar1[1] = 0;
*piVar1 = 0;
FUN_8f636758((int)piVar1);
}
FUN_8f627418((int)PTR_DAT_8f617698);
uVar4 = extraout_r1_00;
LAB_8f61762c:
if (local_14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(piVar2,uVar4,local_14);
}
void FUN_8f61769c(void)
{
int *piVar1;
uint *puVar2;
int *extraout_r1;
int *piVar3;
undefined4 extraout_r1_00;
int *extraout_r1_01;
int *extraout_r1_02;
undefined8 uVar4;
int *apiStack_34 [3];
int *local_28;
undefined4 local_24;
undefined4 local_20;
int *local_1c;
local_20 = 0x800000;
local_1c = DAT_8f69d118;
local_24 = 0x85b00000;
local_28 = (int *)0xd;
dprintf((byte *)s_secure_app_region_addr_0x_x_size_8f65fe70,(int *)0x85b00000,0x800000,0x85b00000)
;
piVar1 = (int *)FUN_8f6163d8((int *)0xfc,1,&local_28,(int *)0xc,apiStack_34);
dprintf((byte *)s_TZ_App_region_notif_returned_wit_8f65fe98,piVar1,local_24,local_20);
piVar3 = extraout_r1;
if (piVar1 == (int *)0x0) {
uVar4 = FUN_8f6366a8((int *)0x1000,0x1000);
piVar3 = (int *)((ulonglong)uVar4 >> 0x20);
puVar2 = (uint *)uVar4;
if (puVar2 == (uint *)0x0) {
piVar1 = (int *)0xffffffff;
}
else {
FUN_8f636968(puVar2,0,0x1000);
FUN_8f625b24((uint)puVar2,0x1000);
DAT_8f68a084 = 0xe;
DAT_8f68a088 = FUN_8f602f04(puVar2,extraout_r1_00);
DAT_8f68a08c = 0x1000;
piVar1 = (int *)FUN_8f6163d8((int *)0xfc,1,(int **)&DAT_8f68a084,(int *)0xc,apiStack_34);
dprintf((byte *)s_TZ_App_log_region_register_retur_8f65fed8,piVar1,DAT_8f68a088,DAT_8f68a08c);
piVar3 = extraout_r1_01;
if (piVar1 == (int *)0x0) {
DAT_8f68a080 = 1;
dprintf((byte *)s_Qseecom_TZ_Init_Done_in_Appsbl_8f65ff1c,extraout_r1_01,1,&DAT_8f68a004);
piVar3 = extraout_r1_02;
}
}
}
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(piVar1,piVar3,local_1c);
}
void FUN_8f6177f8(void)
{
undefined4 extraout_r1;
undefined4 uVar1;
undefined8 uVar2;
int *local_24;
int *local_20 [3];
int *local_14;
local_14 = DAT_8f69d118;
local_24 = (int *)0xa;
FUN_8f636968((uint *)&DAT_8f68a004,0,0x80);
FUN_8f6272e4((undefined4 *)&DAT_8f68a05c);
FUN_8f6272e4((undefined4 *)&DAT_8f68a030);
FUN_8f6272e4((undefined4 *)&DAT_8f68a00c);
DAT_8f68a008 = &DAT_8f68a004;
DAT_8f68a004 = &DAT_8f68a004;
DAT_8f68a02c = &DAT_8f68a028;
DAT_8f68a028 = &DAT_8f68a028;
uVar2 = FUN_8f6163d8((int *)&DAT_00000006,3,&local_24,(int *)&DAT_00000004,local_20);
uVar1 = (undefined4)((ulonglong)uVar2 >> 0x20);
if ((int)uVar2 == 0) {
DAT_8f68a07c = 1;
DAT_8f68a04c = local_20[0];
dprintf((byte *)s_Qseecom_Init_Done_in_Appsbl_vers_8f65ff3c,local_20[0],1,local_20[0]);
uVar1 = extraout_r1;
}
if (local_14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,uVar1,local_14);
}
// WARNING: Removing unreachable block (ram,0x8f617900)
void FUN_8f6178c4(void)
{
return;
}
void FUN_8f617904(undefined4 param_1,int *param_2,undefined4 param_3)
{
int *piVar1;
int *extraout_r1;
undefined4 extraout_r1_00;
piVar1 = DAT_8f69d118;
if (DAT_8f68a088 != 0) {
FUN_8f636758(DAT_8f68a088);
param_2 = extraout_r1;
}
DAT_8f68a07c = 0;
dprintf((byte *)s_Qseecom_De_Init_Done_in_Appsbl_8f65ff6c,param_2,param_3,&DAT_8f68a004);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,extraout_r1_00,piVar1);
}
void FUN_8f617970(int *param_1,undefined4 param_2)
{
int *piVar1;
int iVar2;
int *piVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
piVar3 = (int *)param_1[1];
if ((*param_1 == 0) && (piVar3 == (int *)0x0)) {
return;
}
*piVar3 = *param_1;
iVar2 = param_1[2];
*(int **)(*param_1 + 4) = piVar3;
param_1[1] = 0;
*param_1 = 0;
uVar4 = FUN_8f636758(iVar2);
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
FUN_8f636758((int)param_1);
return;
}
void FUN_8f617a00(int **param_1,int **param_2)
{
int *piVar1;
int **ppiVar2;
uint uVar3;
undefined4 uVar4;
int **extraout_r1;
int **ppiVar5;
int **extraout_r1_00;
int iVar6;
int **ppiVar7;
int ***pppiVar8;
int **ppiVar9;
int **ppiVar10;
int *piVar11;
int **ppiVar12;
uint uVar13;
int iVar14;
undefined8 uVar15;
int **ppiStack_60;
int **local_5c [4];
int **local_4c [4];
int **local_3c;
int **local_38;
int **local_34;
int **local_30;
int **local_2c;
ppiVar10 = (int **)param_1[1];
ppiVar9 = (int **)0x0;
local_5c[0] = (int **)0x0;
local_5c[1] = (int **)0x0;
local_2c = DAT_8f69d118;
local_5c[2] = (int **)0x0;
local_5c[3] = (int **)0x0;
local_4c[0] = (int **)0x0;
local_4c[1] = (int **)0x0;
local_4c[2] = (int **)0x0;
local_4c[3] = (int **)0x0;
local_3c = (int **)0x0;
local_38 = (int **)0x0;
local_34 = (int **)0x0;
local_30 = (int **)0x0;
ppiVar5 = param_2;
if ((param_1 != ppiVar10) && (ppiVar2 = param_1, ppiVar7 = DAT_8f69d118, ppiVar10 != (int **)0x0))
{
do {
switch(param_2) {
case (int **)0x0:
ppiVar9 = (int **)ppiVar10[2];
piVar11 = *ppiVar9;
uVar15 = FUN_8f6118b8();
ppiVar5 = (int **)((ulonglong)uVar15 >> 0x20);
ppiVar12 = (int **)((uint)piVar11 & 0xff0000);
ppiVar2 = (int **)((int)uVar15 << 0x10);
break;
default:
goto switchD_8f617a6c_caseD_1;
case (int **)0x7:
iVar14 = 0;
uVar13 = 0;
do {
iVar6 = uVar13 + 4;
uVar3 = uVar13 & 0xff;
uVar13 = uVar13 + 1;
*(uint *)((int)local_5c + iVar14) = (uint)*(byte *)(ppiVar10[2] + iVar6);
uVar15 = FUN_8f6119f8(uVar3);
ppiVar2 = (int **)((uint)uVar15 & 0xff);
*(int ***)((int)local_4c + iVar14) = ppiVar2;
iVar14 = iVar14 + 4;
} while (uVar13 != 4);
ppiVar5 = (int **)((ulonglong)uVar15 >> 0x20);
ppiVar7 = local_4c[0];
ppiVar9 = local_5c[0];
if ((((local_5c[0] != local_4c[0]) ||
(ppiVar5 = local_4c[1], ppiVar7 = local_5c[1], local_5c[1] != local_4c[1])) ||
(ppiVar2 = local_4c[2], ppiVar5 = local_5c[2], local_5c[2] != local_4c[2])) ||
(ppiVar2 = local_5c[3], local_5c[3] != local_4c[3])) goto LAB_8f617ab8;
ppiVar12 = (int **)0x0;
ppiVar9 = (int **)param_1[1];
local_3c = local_5c[0];
local_38 = local_5c[1];
local_34 = local_5c[2];
local_30 = local_5c[3];
goto LAB_8f617ad4;
case (int **)0x8:
ppiVar9 = (int **)ppiVar10[2];
piVar11 = ppiVar9[2];
uVar15 = FUN_8f6265e0(ppiVar2,ppiVar5);
ppiVar5 = (int **)((ulonglong)uVar15 >> 0x20);
ppiVar12 = (int **)((uint)piVar11 & 0x1800);
ppiVar2 = (int **)((uint)uVar15 & 0x1800);
break;
case (int **)0x9:
ppiVar9 = (int **)ppiVar10[2];
piVar11 = ppiVar9[2];
uVar15 = FUN_8f6265e0(ppiVar2,ppiVar5);
ppiVar5 = (int **)((ulonglong)uVar15 >> 0x20);
ppiVar12 = (int **)((uint)piVar11 & 0xf0000);
ppiVar2 = (int **)((uint)uVar15 & 0xf0000);
}
if (ppiVar12 == ppiVar2) {
ppiVar9 = (int **)param_1[1];
goto LAB_8f617ad4;
}
LAB_8f617ab8:
ppiVar10 = (int **)ppiVar10[1];
} while ((param_1 != ppiVar10) && (ppiVar10 != (int **)0x0));
ppiVar9 = (int **)param_1[1];
ppiVar12 = (int **)0x0;
LAB_8f617ad4:
if ((param_1 != ppiVar9) && (ppiVar9 != (int **)0x0)) {
do {
switch(param_2) {
case (int **)0x0:
ppiVar7 = (int **)(*ppiVar9[2] & 0xff0000);
break;
default:
goto switchD_8f617a6c_caseD_1;
case (int **)0x7:
piVar11 = ppiVar9[2];
pppiVar8 = &ppiStack_60;
do {
piVar1 = piVar11 + 4;
piVar11 = piVar11 + 1;
pppiVar8 = pppiVar8 + 1;
*pppiVar8 = (int **)(uint)*(byte *)piVar1;
} while (pppiVar8 != local_5c + 3);
ppiVar5 = local_5c[0];
ppiVar7 = local_3c;
if ((((local_5c[0] != local_3c) ||
(ppiVar5 = local_5c[1], ppiVar7 = local_38, local_5c[1] != local_38)) ||
(ppiVar5 = local_5c[2], ppiVar7 = local_34, local_5c[2] != local_34)) ||
(ppiVar5 = local_5c[3], ppiVar7 = local_30, local_5c[3] != local_30))
goto LAB_8f617c28;
goto LAB_8f617c34;
case (int **)0x8:
ppiVar7 = (int **)(ppiVar9[2][2] & 0x1800);
break;
case (int **)0x9:
ppiVar7 = (int **)(ppiVar9[2][2] & 0xf0000);
}
if (ppiVar7 != ppiVar12) {
LAB_8f617c28:
ppiVar10 = (int **)*ppiVar9;
FUN_8f617970((int *)ppiVar9,ppiVar5);
ppiVar5 = extraout_r1_00;
ppiVar9 = ppiVar10;
}
LAB_8f617c34:
ppiVar9 = (int **)ppiVar9[1];
} while ((param_1 != ppiVar9) && (ppiVar9 != (int **)0x0));
}
}
uVar4 = 1;
LAB_8f617bfc:
if (local_2c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar4,ppiVar5,(int *)local_2c);
switchD_8f617a6c_caseD_1:
dprintf((byte *)s_ERROR__Unsupported_version___d__i_8f660014,(int *)param_2,ppiVar7,ppiVar9);
uVar4 = 0;
ppiVar5 = extraout_r1;
goto LAB_8f617bfc;
}
void FUN_8f617ce8(int **param_1,int *param_2,int *param_3)
{
int *piVar1;
int *piVar2;
uint uVar3;
undefined4 uVar4;
int *extraout_r1;
int *piVar5;
int *extraout_r1_00;
int *extraout_r1_01;
int *piVar6;
int **ppiVar7;
int *piVar8;
int **ppiVar9;
uint uVar10;
int *piVar11;
ulonglong uVar12;
ulonglong uVar13;
piVar1 = DAT_8f69d118;
ppiVar7 = (int **)param_1[1];
piVar5 = param_2;
if ((param_1 != ppiVar7) && (ppiVar7 != (int **)0x0)) {
piVar11 = (int *)0x0;
piVar6 = DAT_8f69d118;
do {
switch((int)param_2 + -1) {
case 0:
piVar6 = ppiVar7[2];
piVar8 = (int *)piVar6[3];
uVar13 = FUN_8f611aac();
goto LAB_8f617d74;
case 1:
piVar6 = ppiVar7[2];
uVar3 = piVar6[1];
uVar13 = FUN_8f6117b8();
piVar8 = (int *)(uVar3 & 0xffff00);
uVar13 = uVar13 & 0xffffffff00ffff00;
goto LAB_8f617d74;
case 2:
piVar6 = ppiVar7[2];
uVar3 = 0;
uVar10 = piVar6[4];
break;
case 3:
piVar6 = ppiVar7[2];
uVar3 = 1;
uVar10 = piVar6[5];
break;
case 4:
piVar6 = ppiVar7[2];
uVar3 = 2;
uVar10 = piVar6[6];
break;
case 5:
piVar6 = ppiVar7[2];
uVar3 = 3;
uVar10 = piVar6[7];
break;
default:
goto switchD_8f617d28_caseD_6;
case 9:
uVar3 = FUN_8f602b84();
param_3 = ppiVar7[2];
piVar8 = (int *)(uint)*(byte *)(param_3 + 8);
piVar6 = (int *)((uVar3 << 0x10) >> 0x18);
uVar13 = CONCAT44(uVar3,(uint)piVar6 | (uVar3 & 0xff) << 4) & 0xffffffffff;
LAB_8f617d74:
piVar5 = (int *)(uVar13 >> 0x20);
if (piVar8 == (int *)uVar13) goto LAB_8f617e38;
goto LAB_8f617d7c;
}
uVar12 = FUN_8f6119f8(uVar3);
piVar5 = (int *)(uVar12 >> 0x20);
piVar8 = (int *)(uVar10 & 0xffff00);
uVar13 = uVar12 & 0xffffffff00ffff00;
if (piVar8 == (int *)((uint)uVar12 & 0xffff00)) {
LAB_8f617e38:
ppiVar7 = (int **)param_1[1];
goto joined_r0x8f617dd0;
}
LAB_8f617d7c:
piVar5 = (int *)(uVar13 >> 0x20);
param_3 = (int *)(uint)(piVar11 < piVar8);
if ((int *)uVar13 <= piVar8) {
param_3 = (int *)0x0;
}
piVar2 = piVar8;
if ((param_3 == (int *)0x0) && (piVar2 = piVar11, piVar8 < piVar11)) {
ppiVar9 = (int **)*ppiVar7;
FUN_8f617970((int *)ppiVar7,piVar5);
piVar5 = extraout_r1;
ppiVar7 = ppiVar9;
}
piVar11 = piVar2;
ppiVar7 = (int **)ppiVar7[1];
} while ((param_1 != ppiVar7) && (ppiVar7 != (int **)0x0));
ppiVar7 = (int **)param_1[1];
piVar8 = piVar11;
joined_r0x8f617dd0:
do {
if ((ppiVar7 == param_1) || (ppiVar7 == (int **)0x0)) break;
switch((int)param_2 + -1) {
case 0:
piVar6 = (int *)ppiVar7[2][3];
break;
case 1:
piVar6 = (int *)(ppiVar7[2][1] & 0xffff00);
break;
case 2:
piVar6 = (int *)(ppiVar7[2][4] & 0xffff00);
break;
case 3:
piVar6 = (int *)(ppiVar7[2][5] & 0xffff00);
break;
case 4:
piVar6 = (int *)(ppiVar7[2][6] & 0xffff00);
break;
case 5:
piVar6 = (int *)(ppiVar7[2][7] & 0xffff00);
break;
default:
goto switchD_8f617d28_caseD_6;
case 9:
piVar6 = (int *)(uint)*(byte *)((int)ppiVar7[2] + 0x20);
}
ppiVar9 = ppiVar7;
if (piVar6 != piVar8) {
ppiVar9 = (int **)*ppiVar7;
FUN_8f617970((int *)ppiVar7,piVar5);
piVar5 = extraout_r1_01;
}
ppiVar7 = (int **)((int *)ppiVar9)[1];
} while( true );
}
uVar4 = 1;
LAB_8f617eb8:
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar4,piVar5,piVar1);
}
return;
switchD_8f617d28_caseD_6:
dprintf((byte *)s_ERROR__Unsupported_version___d__i_8f660014,param_2,param_3,piVar6);
uVar4 = 0;
piVar5 = extraout_r1_00;
goto LAB_8f617eb8;
}
void FUN_8f617f74(undefined4 *param_1,int **param_2)
{
ushort uVar1;
int *piVar2;
undefined4 uVar3;
int **ppiVar4;
int *piVar5;
undefined4 uVar6;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
uint uVar7;
uint uVar8;
int *in_lr;
undefined8 uVar9;
piVar2 = DAT_8f69d118;
uVar1 = *(ushort *)param_1;
uVar7 = param_1[1];
uVar8 = param_1[2];
uVar9 = FUN_8f611778();
uVar6 = (undefined4)((ulonglong)uVar9 >> 0x20);
if ((((((((uint)uVar9 & 0xffff) == (uint)uVar1) &&
(uVar9 = FUN_8f611838(), uVar6 = (undefined4)((ulonglong)uVar9 >> 0x20),
(uint)uVar9 == (uVar7 & 0xff))) &&
(uVar9 = FUN_8f611878(), uVar6 = (undefined4)((ulonglong)uVar9 >> 0x20),
(uint)uVar9 == (uVar8 & 0xff))) &&
((uVar9 = FUN_8f6265e0((uint)uVar9,uVar6), uVar6 = (undefined4)((ulonglong)uVar9 >> 0x20),
((uint)uVar9 & 0x700) == (uVar8 & 0x700) &&
(uVar7 = param_1[3], uVar9 = FUN_8f611aac(), uVar6 = (undefined4)((ulonglong)uVar9 >> 0x20),
uVar7 <= (uint)uVar9)))) &&
((uVar7 = param_1[1], uVar9 = FUN_8f6117b8(), uVar6 = (undefined4)((ulonglong)uVar9 >> 0x20),
(uVar7 & 0xffff00) <= ((uint)uVar9 & 0xffff00) &&
((uVar7 = param_1[4], uVar9 = FUN_8f6119f8(0), uVar6 = (undefined4)((ulonglong)uVar9 >> 0x20)
, (uVar7 & 0xffff00) <= ((uint)uVar9 & 0xffff00) &&
(uVar7 = param_1[5], uVar9 = FUN_8f6119f8(1), uVar6 = (undefined4)((ulonglong)uVar9 >> 0x20)
, (uVar7 & 0xffff00) <= ((uint)uVar9 & 0xffff00))))))) &&
((uVar7 = param_1[6], uVar9 = FUN_8f6119f8(2), uVar6 = (undefined4)((ulonglong)uVar9 >> 0x20),
(uVar7 & 0xffff00) <= ((uint)uVar9 & 0xffff00) &&
(uVar7 = param_1[7], uVar9 = FUN_8f6119f8(3), uVar6 = (undefined4)((ulonglong)uVar9 >> 0x20),
(uVar7 & 0xffff00) <= ((uint)uVar9 & 0xffff00))))) {
uVar9 = FUN_8f63666c(0xc,uVar6);
uVar6 = (undefined4)((ulonglong)uVar9 >> 0x20);
ppiVar4 = (int **)uVar9;
if (ppiVar4 == (int **)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_dev_tree_c_8f660048,0x6b);
uVar6 = extraout_r1;
}
ppiVar4[1] = (int *)0x0;
*ppiVar4 = (int *)0x0;
piVar5 = (int *)FUN_8f63666c(0x2c,uVar6);
ppiVar4[2] = piVar5;
if (piVar5 == (int *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_dev_tree_c_8f660048,0x70);
}
FUN_8f636968((uint *)ppiVar4[2],0,0x2c);
FUN_8f63685c(ppiVar4[2],param_1,0x2c);
piVar5 = *param_2;
uVar3 = 1;
*ppiVar4 = piVar5;
ppiVar4[1] = (int *)param_2;
piVar5[1] = (int)ppiVar4;
*param_2 = (int *)ppiVar4;
uVar6 = extraout_r1_00;
}
else {
uVar3 = 0;
}
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,uVar6,piVar2);
}
void FUN_8f618180(int **param_1,undefined4 param_2,int *param_3)
{
int *piVar1;
int *piVar2;
int *extraout_r1;
int *piVar3;
int **ppiVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
uVar5 = FUN_8f617a00(param_1,(int **)0x0);
piVar3 = (int *)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 != 0) {
uVar5 = FUN_8f617a00(param_1,(int **)0x7);
piVar3 = (int *)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 != 0) {
uVar5 = FUN_8f617a00(param_1,(int **)0x8);
piVar3 = (int *)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 != 0) {
uVar5 = FUN_8f617a00(param_1,(int **)0x9);
piVar3 = (int *)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 != 0) {
uVar5 = FUN_8f617ce8(param_1,(int *)0x1,param_3);
piVar3 = (int *)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 != 0) {
uVar5 = FUN_8f617ce8(param_1,(int *)0x2,param_3);
piVar3 = (int *)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 != 0) {
uVar5 = FUN_8f617ce8(param_1,(int *)0x3,param_3);
piVar3 = (int *)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 != 0) {
uVar5 = FUN_8f617ce8(param_1,(int *)&DAT_00000004,param_3);
piVar3 = (int *)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 != 0) {
uVar5 = FUN_8f617ce8(param_1,(int *)&DAT_00000005,param_3);
piVar3 = (int *)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 != 0) {
uVar5 = FUN_8f617ce8(param_1,(int *)&DAT_00000006,param_3);
piVar3 = (int *)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 != 0) {
uVar5 = FUN_8f617ce8(param_1,(int *)0xa,param_3);
piVar3 = (int *)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 != 0) {
for (ppiVar4 = (int **)param_1[1]; param_1 != ppiVar4;
ppiVar4 = (int **)ppiVar4[1]) {
if (ppiVar4 == (int **)0x0) {
dprintf((byte *)s_ERROR__Couldn_t_find_the_suitabl_8f660094,piVar3,
param_3,0);
piVar3 = extraout_r1;
break;
}
piVar2 = ppiVar4[2];
if (piVar2 != (int *)0x0) goto LAB_8f6182b4;
}
}
}
}
}
}
}
}
}
}
}
}
piVar2 = (int *)0x0;
LAB_8f6182b4:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(piVar2,piVar3,piVar1);
}
void FUN_8f6182d0(uint param_1)
{
int *piVar1;
undefined4 uVar2;
uint uVar3;
uint extraout_r1;
uint uVar4;
uint uVar5;
int iVar6;
uint uVar7;
uint uVar8;
uint uVar9;
bool bVar10;
piVar1 = DAT_8f69d118;
uVar3 = *(uint *)(param_1 + 4);
uVar4 = ((uVar3 << 0x10) >> 0x18) << 0x10 | uVar3 << 0x18 | uVar3 >> 0x18 |
((uVar3 << 8) >> 0x18) << 8;
if (CARRY4(param_1,uVar4)) {
dprintf((byte *)s_Integer_over_in_fdt_header__s__d_8f6600bc,
(int *)s_fdt_check_header_ext_8f6606cc,0x49,uVar4);
uVar2 = 4;
uVar4 = extraout_r1;
}
else {
uVar9 = *(uint *)(param_1 + 0x24);
uVar7 = *(uint *)(param_1 + 8);
uVar4 = ((uVar9 << 0x10) >> 0x18) << 0x10 | uVar9 << 0x18 | uVar9 >> 0x18 |
((uVar9 << 8) >> 0x18) << 8;
uVar8 = ((uVar7 << 0x10) >> 0x18) << 0x10 | uVar7 << 0x18 | uVar7 >> 0x18 |
((uVar7 << 8) >> 0x18) << 8;
uVar5 = uVar4 + uVar8;
iVar6 = uVar5 + param_1;
bVar10 = (char)(CARRY4(uVar4,uVar8) + CARRY4(uVar5,param_1)) == '\0';
uVar4 = uVar3 >> 0x18;
if ((bVar10 && iVar6 != -1 || bVar10 && iVar6 == -1) &&
(uVar4 = (((uVar3 << 0x10) >> 0x18) << 0x10 | uVar3 << 0x18 | uVar4 |
((uVar3 << 8) >> 0x18) << 8) + param_1,
(((uVar7 << 0x10) >> 0x18) << 0x10 | uVar7 << 0x18 | uVar7 >> 0x18 |
((uVar7 << 8) >> 0x18) << 8) +
(((uVar9 << 0x10) >> 0x18) << 0x10 | uVar9 << 0x18 | uVar9 >> 0x18 |
((uVar9 << 8) >> 0x18) << 8) + param_1 <= uVar4)) {
uVar8 = *(uint *)(param_1 + 0x20);
uVar5 = *(uint *)(param_1 + 0xc);
uVar3 = ((uVar8 << 0x10) >> 0x18) << 0x10 | uVar8 << 0x18 | uVar8 >> 0x18 |
((uVar8 << 8) >> 0x18) << 8;
uVar7 = ((uVar5 << 0x10) >> 0x18) << 0x10 | uVar5 << 0x18 | uVar5 >> 0x18 |
((uVar5 << 8) >> 0x18) << 8;
uVar5 = uVar3 + uVar7;
iVar6 = param_1 + uVar5;
bVar10 = (char)(CARRY4(uVar3,uVar7) + CARRY4(param_1,uVar5)) == '\0';
if ((bVar10 && iVar6 != -1 || bVar10 && iVar6 == -1) &&
(uVar7 + (((uVar8 << 0x10) >> 0x18) << 0x10 | uVar8 << 0x18 | uVar8 >> 0x18 |
((uVar8 << 8) >> 0x18) << 8) + param_1 <= uVar4)) {
uVar2 = 0;
goto LAB_8f618394;
}
}
uVar2 = 4;
}
LAB_8f618394:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,uVar4,piVar1);
}
void FUN_8f6184cc(uint param_1,int param_2,uint *param_3,int **param_4)
{
longlong lVar1;
byte *pbVar2;
byte *pbVar3;
uint *puVar4;
uint *puVar5;
uint uVar6;
int **ppiVar7;
int **ppiVar8;
int **ppiVar9;
uint uVar10;
undefined4 *puVar11;
uint uVar12;
int *piVar13;
int *extraout_r1;
uint uVar14;
int iVar15;
int *extraout_r1_00;
int *extraout_r1_01;
int *extraout_r1_02;
int *extraout_r1_03;
int *extraout_r1_04;
int *extraout_r1_05;
int *extraout_r1_06;
int *extraout_r1_07;
int *extraout_r1_08;
int *extraout_r1_09;
int *extraout_r1_10;
int *extraout_r1_11;
int *extraout_r1_12;
uint uVar16;
int *extraout_r1_13;
undefined4 extraout_r1_14;
undefined4 extraout_r1_15;
uint *puVar17;
uint *puVar18;
undefined4 uVar19;
uint **ppuVar20;
byte **ppbVar21;
uint *puVar22;
uint *puVar23;
uint uVar24;
int *piVar25;
uint *puVar26;
uint uVar27;
undefined4 *puVar28;
uint uVar29;
int iVar30;
uint uVar31;
uint uVar32;
int *in_lr;
uint uVar33;
undefined8 uVar34;
ulonglong uVar35;
int local_114;
uint *local_104;
byte *local_100;
int *local_e8;
char *local_e4;
uint *local_d0;
uint *local_c4;
uint local_bc;
uint *local_b0;
uint *local_ac;
uint *local_a8;
uint *local_a4;
uint local_a0;
uint *local_9c;
uint local_98;
int *local_94;
byte *local_90;
uint uStack_8c;
uint local_88;
uint local_84;
uint local_80;
uint local_7c;
uint local_78;
uint local_74;
uint uStack_70;
uint local_6c;
uint local_68;
uint local_64;
uint *local_60;
uint local_5c;
uint local_58;
uint uStack_54;
uint *local_50;
int *local_2c;
uVar19 = 0;
local_2c = DAT_8f69d118;
local_b0 = (uint *)0x0;
local_e4 = (char *)param_3;
uVar34 = FUN_8f63666c(0xc,param_2);
piVar13 = (int *)((ulonglong)uVar34 >> 0x20);
ppiVar9 = (int **)uVar34;
if (ppiVar9 == (int **)0x0) {
dprintf((byte *)s_Out_of_memory_8f6600e0,piVar13,local_e4,uVar19);
piVar13 = extraout_r1_12;
goto LAB_8f618bc8;
}
if (param_3 != (uint *)0x0) {
local_b0 = param_3;
}
ppiVar9[1] = (int *)ppiVar9;
*ppiVar9 = (int *)ppiVar9;
if (param_3 == (uint *)0x0) {
local_e4 = &DAT_00000004;
FUN_8f63685c(&local_b0,(undefined4 *)(param_1 + 0x2c),4);
puVar23 = (uint *)(param_1 + (int)local_b0);
piVar13 = extraout_r1_06;
if (CARRY4(param_1,(uint)local_b0)) goto LAB_8f618c08;
}
else {
puVar23 = (uint *)(param_1 + (int)param_3);
if (CARRY4(param_1,(uint)param_3)) {
LAB_8f618c08:
ppiVar9 = (int **)0x0;
goto LAB_8f618bc8;
}
}
for (; puVar4 = puVar23 + 10, puVar4 < (uint *)(param_1 + param_2);
puVar23 = (uint *)((int)puVar23 + uVar24)) {
local_e4 = (char *)0x28;
FUN_8f63685c(&uStack_54,puVar23,0x28);
uVar34 = FUN_8f6371a4(&uStack_54);
piVar13 = (int *)((ulonglong)uVar34 >> 0x20);
if ((int)uVar34 != 0) break;
uVar34 = FUN_8f6182d0((uint)&uStack_54);
piVar13 = (int *)((ulonglong)uVar34 >> 0x20);
pbVar2 = (byte *)uVar34;
if (pbVar2 != (byte *)0x0) break;
piVar13 = (int *)((uint)((int)local_50 << 8) >> 0x18);
local_ac = local_50;
local_e4 = (char *)(((uint)((int)local_50 << 0x10) >> 0x18) << 0x10 | (int)local_50 << 0x18 |
(uint)local_50 >> 0x18 | (int)piVar13 << 8);
puVar4 = local_50;
if (CARRY4((uint)puVar23,(uint)local_e4)) break;
local_a8 = local_50;
piVar13 = (int *)(((uint)((int)local_50 << 0x10) >> 0x18) << 0x10 | (int)local_50 << 0x18 |
(uint)local_50 >> 0x18);
local_e4 = (char *)((int)puVar23 + ((uint)piVar13 | ((uint)((int)local_50 << 8) >> 0x18) << 8));
if ((uint *)(param_1 + param_2) < local_e4) break;
local_a4 = local_50;
local_e4 = (char *)(((uint)((int)local_50 << 0x10) >> 0x18) << 0x10 | (int)local_50 << 0x18);
uVar24 = (uint)local_e4 | (uint)local_50 >> 0x18 | ((uint)((int)local_50 << 8) >> 0x18) << 8;
local_90 = pbVar2;
uVar34 = FUN_8f637e54(puVar23,(int *)&DAT_8f6600f0,(int *)local_e4);
piVar13 = (int *)((ulonglong)uVar34 >> 0x20);
uVar10 = (uint)uVar34;
if (-1 < (int)uVar10) {
uVar34 = FUN_8f637d68((int)puVar23,uVar10,(byte *)s_model_8f6600f4,&local_a0);
pbVar3 = (byte *)uVar34;
local_100 = pbVar3;
if ((pbVar3 != (byte *)0x0) && (local_100 = pbVar2, 0 < (int)local_a0)) {
local_100 = (byte *)FUN_8f63666c(local_a0,(int)((ulonglong)uVar34 >> 0x20));
if (local_100 == (byte *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_dev_tree_c_8f660048,0xab);
}
FUN_8f636d18((int)local_100,pbVar3,local_a0);
}
local_104 = (uint *)FUN_8f637d68((int)puVar23,uVar10,(byte *)s_qcom_pmic_id_8f6600fc,
(uint *)&local_94);
ppuVar20 = &local_9c;
puVar4 = (uint *)FUN_8f637d68((int)puVar23,uVar10,(byte *)s_qcom_board_id_8f66010c,
(uint *)ppuVar20);
if ((local_104 == (uint *)0x0) || ((int)local_94 < 1)) {
if ((puVar4 == (uint *)0x0) || ((int)local_9c < 1)) goto LAB_8f618778;
if (((uint)local_9c & 7) == 0) {
local_114 = 2;
uVar29 = 8;
goto LAB_8f618590;
}
local_e4 = (char *)0x8;
dprintf((byte *)s_qcom_board_id_in_device_tree_is___8f660170,(int *)local_9c,8,ppuVar20);
piVar13 = extraout_r1;
}
else {
if ((puVar4 == (uint *)0x0) || ((int)local_9c < 1)) {
LAB_8f618778:
uVar29 = 0xc;
local_114 = 1;
}
else {
if ((((uint)local_9c | (uint)local_94) & 7) != 0) {
local_e4 = (char *)local_9c;
dprintf((byte *)s_qcom_pmic_id__d__or_qcom_board_i_8f66011c,local_94,local_9c,8);
piVar13 = extraout_r1_03;
goto LAB_8f6185cc;
}
uVar29 = 8;
local_114 = 3;
}
LAB_8f618590:
local_e4 = s_qcom_msm_id_8f6601b0;
uVar34 = FUN_8f637d68((int)puVar23,uVar10,(byte *)s_qcom_msm_id_8f6601b0,&local_98);
piVar13 = (int *)((ulonglong)uVar34 >> 0x20);
puVar18 = (uint *)uVar34;
if ((puVar18 != (uint *)0x0) && (0 < (int)local_98)) {
uVar35 = FUN_8f658450(local_98,uVar29);
piVar13 = (int *)(uVar35 >> 0x20);
if (piVar13 == (int *)0x0) {
local_e4 = s_infr_board_rev_8f6601bc;
ppbVar21 = &local_90;
uVar34 = FUN_8f637d68((int)puVar23,uVar10,(byte *)s_infr_board_rev_8f6601bc,
(uint *)ppbVar21);
piVar13 = local_94;
uVar10 = local_98;
uVar19 = (undefined4)((ulonglong)uVar34 >> 0x20);
puVar26 = (uint *)uVar34;
if (local_114 == 1) {
uVar34 = FUN_8f63666c(0x2c,uVar19);
puVar4 = (uint *)uVar34;
if (puVar4 != (uint *)0x0) {
local_e4 = (char *)0x2c;
FUN_8f636968(puVar4,0,0x2c);
puVar18 = puVar18 + 3;
while (local_98 != 0) {
local_58 = puVar18[-3];
local_64 = puVar18[-2];
local_e4 = (char *)puVar18[-1];
*puVar4 = ((local_58 << 0x10) >> 0x18) << 0x10 | local_58 << 0x18 |
local_58 >> 0x18 | ((local_58 << 8) >> 0x18) << 8;
puVar4[2] = local_64 & 0xff;
puVar4[1] = ((local_64 << 0x10) >> 0x18) << 0x10 | local_64 << 0x18 |
local_64 >> 0x18 | ((local_64 << 8) >> 0x18) << 8;
puVar4[3] = ((uint)((int)local_e4 << 0x10) >> 0x18) << 0x10 |
(int)local_e4 << 0x18 | (uint)local_e4 >> 0x18 |
((uint)((int)local_e4 << 8) >> 0x18) << 8;
local_60 = (uint *)local_e4;
local_5c = local_64;
uVar10 = FUN_8f6119f8(0);
puVar4[4] = uVar10;
uVar10 = FUN_8f6119f8(1);
puVar4[5] = uVar10;
uVar10 = FUN_8f6119f8(2);
puVar4[6] = uVar10;
uVar10 = FUN_8f6119f8(3);
puVar4[9] = (uint)puVar23;
puVar4[10] = uVar24;
puVar4[7] = uVar10;
iVar15 = FUN_8f617f74(puVar4,ppiVar9);
if (iVar15 == 0) {
puVar18 = puVar18 + 3;
local_98 = local_98 - 0xc;
}
}
FUN_8f636758((int)puVar4);
piVar13 = extraout_r1_07;
goto LAB_8f618d18;
}
dprintf((byte *)s_Out_of_memory_8f6600e0,(int *)((ulonglong)uVar34 >> 0x20),local_e4,
ppbVar21);
piVar13 = extraout_r1_11;
}
else {
puVar22 = local_9c;
if ((int)local_9c < 0) {
puVar22 = (uint *)((int)local_9c + 7);
}
uVar29 = (int)puVar22 >> 3;
uVar34 = FUN_8f63666c(uVar29 * 8,uVar19);
uVar19 = (undefined4)((ulonglong)uVar34 >> 0x20);
puVar22 = (uint *)uVar34;
if (puVar22 == (uint *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_dev_tree_c_8f660048,0x125);
uVar19 = extraout_r1_14;
}
uVar14 = local_98;
if ((int)local_98 < 0) {
uVar14 = local_98 + 7;
}
uVar34 = FUN_8f63666c(uVar14 & 0xfffffff8,uVar19);
uVar19 = (undefined4)((ulonglong)uVar34 >> 0x20);
puVar5 = (uint *)uVar34;
if (puVar5 == (uint *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_dev_tree_c_8f660048,0x127);
uVar19 = extraout_r1_15;
}
if (local_114 == 3) {
piVar25 = local_94;
if ((int)local_94 < 0) {
piVar25 = (int *)((int)local_94 + 7);
}
local_d0 = (uint *)FUN_8f63666c(((int)piVar25 >> 3) << 4,uVar19);
if (local_d0 == (uint *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_dev_tree_c_8f660048,0x12a);
}
}
else {
local_d0 = (uint *)0x0;
}
if (uVar29 != 0) {
uVar14 = 0;
do {
local_68 = *puVar4;
puVar17 = (uint *)((int)puVar22 + uVar14);
*puVar17 = ((local_68 << 0x10) >> 0x18) << 0x10 | local_68 << 0x18 |
local_68 >> 0x18 | ((local_68 << 8) >> 0x18) << 8;
local_6c = puVar4[1];
uVar14 = uVar14 + 8;
uVar6 = ((local_6c << 0x10) >> 0x18) << 0x10 | local_6c << 0x18 | local_6c >> 0x18
| ((local_6c << 8) >> 0x18) << 8;
puVar17[1] = uVar6;
if (uVar6 == 0) {
uStack_70 = *puVar4;
puVar17[1] = uStack_70 & 0xff;
}
puVar4 = puVar4 + 2;
} while (uVar29 * 8 != uVar14);
local_9c = local_9c + uVar29 * -2;
}
if ((int)uVar10 < 0) {
uVar10 = uVar10 + 7;
}
uVar10 = (int)uVar10 >> 3;
if (uVar10 != 0) {
iVar15 = 0;
do {
local_74 = *puVar18;
puVar4 = (uint *)((int)puVar5 + iVar15);
*puVar4 = ((local_74 << 0x10) >> 0x18) << 0x10 | local_74 << 0x18 |
local_74 >> 0x18 | ((local_74 << 8) >> 0x18) << 8;
local_78 = puVar18[1];
iVar15 = iVar15 + 8;
puVar4[1] = ((local_78 << 0x10) >> 0x18) << 0x10 | local_78 << 0x18 |
local_78 >> 0x18 | ((local_78 << 8) >> 0x18) << 8;
puVar18 = puVar18 + 2;
} while (iVar15 != uVar10 * 8);
local_98 = local_98 + uVar10 * -8;
}
piVar25 = (int *)((int)piVar13 + 7);
if (-1 < (int)piVar13) {
piVar25 = piVar13;
}
uVar14 = (int)piVar25 >> 3;
if (local_104 == (uint *)0x0 || local_114 != 3) {
local_c4 = (uint *)(uVar29 * uVar10);
puVar4 = (uint *)(uVar14 * (int)local_c4);
}
else {
if (uVar14 != 0) {
uVar6 = 0;
puVar18 = local_d0;
puVar4 = local_104;
do {
local_7c = *puVar4;
uVar6 = uVar6 + 1;
*puVar18 = ((local_7c << 0x10) >> 0x18) << 0x10 | local_7c << 0x18 |
local_7c >> 0x18 | ((local_7c << 8) >> 0x18) << 8;
local_80 = puVar4[1];
puVar18[1] = ((local_80 << 0x10) >> 0x18) << 0x10 | local_80 << 0x18 |
local_80 >> 0x18 | ((local_80 << 8) >> 0x18) << 8;
local_84 = puVar4[2];
puVar18[2] = ((local_84 << 0x10) >> 0x18) << 0x10 | local_84 << 0x18 |
local_84 >> 0x18 | ((local_84 << 8) >> 0x18) << 8;
local_88 = puVar4[3];
puVar18[3] = ((local_88 << 0x10) >> 0x18) << 0x10 | local_88 << 0x18 |
local_88 >> 0x18 | ((local_88 << 8) >> 0x18) << 8;
puVar18 = puVar18 + 4;
puVar4 = puVar4 + 4;
} while (uVar14 != uVar6);
local_94 = local_94 + uVar14 * -4;
local_104 = local_104 + uVar14 * 4;
}
puVar4 = (uint *)(uVar14 * uVar29 * uVar10);
local_c4 = puVar4;
}
local_e4 = (char *)(uVar29 * uVar10);
if (puVar26 != (uint *)0x0) {
uStack_8c = *puVar26;
puVar26 = (uint *)(((uStack_8c << 0x10) >> 0x18) << 0x10 | uStack_8c << 0x18 |
uStack_8c >> 0x18 | ((uStack_8c << 8) >> 0x18) << 8);
}
uVar35 = (ulonglong)uVar10 * (ulonglong)uVar29;
iVar15 = (int)(uVar35 >> 0x20);
lVar1 = (ulonglong)uVar14 * (uVar35 & 0xffffffff);
puVar18 = (uint *)lVar1;
if ((uVar14 * iVar15 + (int)((ulonglong)lVar1 >> 0x20) == 0 && puVar18 == puVar4) &&
(puVar18 = (uint *)local_e4, iVar15 == 0 && (uint *)uVar35 == (uint *)local_e4)) {
puVar11 = (undefined4 *)FUN_8f63666c((int)local_c4 * 0x2c,0);
if (puVar11 == (undefined4 *)0x0) {
local_e4 = s_platform_msm_shared_dev_tree_c_8f660048;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_dev_tree_c_8f660048,0x174);
}
if (uVar10 != 0) {
iVar15 = 0;
local_bc = 0;
local_e4 = (char *)puVar5;
do {
if (uVar29 != 0) {
uVar6 = 0;
puVar4 = puVar22;
iVar30 = iVar15;
do {
if (local_104 == (uint *)0x0 || local_114 != 3) {
uVar12 = *(uint *)((int)local_e4 + 4);
iVar15 = iVar30 + 1;
uVar16 = *puVar4;
uVar31 = puVar4[1];
puVar11[iVar30 * 0xb] = *(uint *)local_e4;
puVar11[iVar30 * 0xb + 1] = uVar16;
puVar11[iVar30 * 0xb + 2] = uVar31;
puVar11[iVar30 * 0xb + 3] = uVar12;
uVar19 = FUN_8f6119f8(0);
puVar11[iVar30 * 0xb + 4] = uVar19;
uVar19 = FUN_8f6119f8(1);
puVar11[iVar30 * 0xb + 5] = uVar19;
uVar19 = FUN_8f6119f8(2);
puVar11[iVar30 * 0xb + 6] = uVar19;
uVar19 = FUN_8f6119f8(3);
puVar11[iVar30 * 0xb + 9] = puVar23;
puVar11[iVar30 * 0xb + 10] = uVar24;
puVar11[iVar30 * 0xb + 7] = uVar19;
}
else {
iVar15 = iVar30;
if (uVar14 != 0) {
uVar32 = *puVar4;
uVar12 = puVar4[1];
uVar31 = *(uint *)local_e4;
uVar33 = *(uint *)((int)local_e4 + 4);
uVar16 = 0;
puVar18 = local_d0;
puVar17 = puVar11 + iVar30 * 0xb + 4;
do {
uVar27 = puVar18[1];
uVar16 = uVar16 + 1;
puVar17[-4] = uVar31;
puVar17[-1] = uVar33;
puVar17[1] = uVar27;
uVar27 = puVar18[2];
puVar17[-3] = uVar32;
puVar17[-2] = uVar12;
puVar17[2] = uVar27;
uVar27 = *puVar18;
puVar17[5] = (uint)puVar23;
puVar17[6] = uVar24;
*puVar17 = uVar27;
uVar27 = puVar18[3];
puVar17[4] = (uint)puVar26;
puVar17[3] = uVar27;
puVar18 = puVar18 + 4;
puVar17 = puVar17 + 0xb;
} while (uVar14 != uVar16);
iVar15 = iVar30 + uVar14;
}
}
uVar6 = uVar6 + 1;
puVar4 = puVar4 + 2;
iVar30 = iVar15;
} while (uVar29 != uVar6);
}
local_bc = local_bc + 1;
local_e4 = (char *)((int)local_e4 + 8);
} while (uVar10 != local_bc);
}
if (local_c4 != (uint *)0x0) {
puVar4 = (uint *)0x0;
puVar28 = puVar11;
do {
puVar4 = (uint *)((int)puVar4 + 1);
FUN_8f617f74(puVar28,ppiVar9);
puVar28 = puVar28 + 0xb;
} while (puVar4 != local_c4);
}
FUN_8f636758((int)puVar22);
FUN_8f636758((int)puVar5);
if (local_d0 != (uint *)0x0) {
FUN_8f636758((int)local_d0);
}
FUN_8f636758((int)puVar11);
piVar13 = extraout_r1_13;
LAB_8f618d18:
if (local_100 != (byte *)0x0) {
FUN_8f636758((int)local_100);
piVar13 = extraout_r1_08;
}
}
else {
local_e4 = (char *)puVar18;
FUN_8f636758((int)puVar22);
FUN_8f636758((int)puVar5);
piVar13 = extraout_r1_00;
if (local_d0 != (uint *)0x0) {
FUN_8f636758((int)local_d0);
piVar13 = extraout_r1_01;
}
if (local_100 != (byte *)0x0) {
FUN_8f636758((int)local_100);
piVar13 = extraout_r1_02;
}
}
}
}
}
}
}
LAB_8f6185cc:
}
uVar34 = FUN_8f618180(ppiVar9,piVar13,(int *)local_e4);
piVar13 = (int *)((ulonglong)uVar34 >> 0x20);
ppiVar7 = (int **)uVar34;
if (ppiVar7 != (int **)0x0) {
local_e8 = ppiVar7[10];
ppiVar7 = (int **)ppiVar7[9];
}
ppiVar8 = (int **)ppiVar9[1];
while (ppiVar9 != ppiVar8) {
piVar25 = *ppiVar8;
FUN_8f617970((int *)ppiVar8,piVar13);
piVar13 = extraout_r1_04;
ppiVar8 = (int **)piVar25[1];
}
if (ppiVar7 == (int **)0x0) {
dprintf((byte *)s_DTB_offset_is_incorrect__kernel_i_8f660234,piVar13,local_e4,puVar4);
ppiVar9 = ppiVar7;
piVar13 = extraout_r1_10;
}
else {
uVar34 = FUN_8f629c00((undefined *)param_4,(uint)local_e8);
if ((int)uVar34 == 0) {
FUN_8f63685c(param_4,ppiVar7,(int)local_e8);
*(undefined4 *)(param_1 + (int)local_b0) = 0;
ppiVar9 = param_4;
piVar13 = extraout_r1_05;
}
else {
dprintf((byte *)s_Tags_addresses_overlap_with_aboo_8f660204,(int *)((ulonglong)uVar34 >> 0x20)
,local_e4,puVar4);
ppiVar9 = (int **)0x0;
piVar13 = extraout_r1_09;
}
}
LAB_8f618bc8:
if (local_2c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(ppiVar9,piVar13,local_2c);
}
return;
}
void FUN_8f6190c8(uint *param_1,uint param_2,int *param_3,uint param_4,int *param_5,uint param_6)
{
int iVar1;
uint extraout_r1;
uint extraout_r1_00;
uint extraout_r1_01;
undefined4 extraout_r1_02;
undefined *puVar2;
char *pcVar3;
uint uVar4;
int *piVar5;
ulonglong uVar6;
undefined8 uVar7;
uint local_64;
uint local_60;
uint local_5c;
int *local_58;
uint local_54;
int *local_50;
uint local_4c;
uint local_48;
uint local_44;
int *local_40;
uint local_3c;
uint local_38;
uint local_34;
int *local_30;
int *local_2c;
local_2c = DAT_8f69d118;
pcVar3 = (char *)param_3;
uVar4 = param_4;
iVar1 = FUN_8f604c44();
DAT_8f68a090 = param_2;
if (iVar1 == 0) {
DAT_8f68a098 = 1;
DAT_8f68a09c = 1;
if (DAT_8f68a094 != 0) goto LAB_8f61912c;
LAB_8f619200:
puVar2 = &DAT_8f660344;
local_54 = ((uint)((int)param_3 << 0x10) >> 0x18) << 0x10 | (int)param_3 << 0x18 |
(uint)param_3 >> 0x18 | ((uint)((int)param_3 << 8) >> 0x18) << 8;
local_50 = param_3;
uVar6 = FUN_8f63877c(param_1,DAT_8f68a090,(undefined4 *)&DAT_8f660344,&local_54,4);
if ((int)uVar6 != 0) {
LAB_8f6194b8:
dprintf((byte *)s_ERROR__Could_not_set_prop_reg_fo_8f6604c4,(int *)(uVar6 >> 0x20),puVar2,
(int)uVar6);
uVar6 = uVar6 & 0xffffffff | (ulonglong)extraout_r1_01 << 0x20;
goto LAB_8f6191e4;
}
LAB_8f619244:
DAT_8f68a094 = 1;
LAB_8f619170:
if (DAT_8f68a09c == 2) {
local_38 = param_6;
local_3c = ((param_6 << 0x10) >> 0x18) << 0x10 | param_6 << 0x18 | param_6 >> 0x18 |
((param_6 << 8) >> 0x18) << 8;
puVar2 = &DAT_8f660344;
uVar6 = FUN_8f638890(param_1,DAT_8f68a090,(undefined4 *)&DAT_8f660344,&local_3c,4);
if ((int)uVar6 != 0) goto LAB_8f6193c0;
}
local_34 = ((uint)((int)param_5 << 0x10) >> 0x18) << 0x10 | (int)param_5 << 0x18 |
(uint)param_5 >> 0x18 | ((uint)((int)param_5 << 8) >> 0x18) << 8;
puVar2 = &DAT_8f660344;
local_30 = param_5;
uVar6 = FUN_8f638890(param_1,DAT_8f68a090,(undefined4 *)&DAT_8f660344,&local_34,4);
piVar5 = (int *)uVar6;
if (piVar5 != (int *)0x0) {
dprintf((byte *)s_Failed_to_add_the_memory_informa_8f660378,piVar5,puVar2,piVar5);
uVar6 = uVar6 & 0xffffffff | (ulonglong)extraout_r1 << 0x20;
}
}
else {
uVar7 = FUN_8f637e54(param_1,(int *)&DAT_8f6600f0,(int *)pcVar3);
piVar5 = (int *)uVar7;
if ((int)piVar5 < 0) {
dprintf((byte *)s_Could_not_find_memory_node__8f6603a8,(int *)((ulonglong)uVar7 >> 0x20),
pcVar3,uVar4);
LAB_8f6194e4:
dprintf((byte *)s_Could_not_find__address_cells_an_8f660480,piVar5,pcVar3,piVar5);
uVar6 = CONCAT44(extraout_r1_02,piVar5);
goto LAB_8f6191e4;
}
pcVar3 = s__address_cells_8f6603c8;
uVar7 = FUN_8f637d68((int)param_1,(uint)piVar5,(byte *)s__address_cells_8f6603c8,
(uint *)&local_30);
if ((int)local_30 < 1) {
if (local_30 == (int *)0xffffffff) {
DAT_8f68a098 = 2;
dprintf((byte *)s_Using_default__addr_cell_size____8f6603d8,(int *)0x2,pcVar3,2);
goto LAB_8f6192bc;
}
LAB_8f6193fc:
dprintf((byte *)s_Error_finding_the__address_cells_8f6603fc,(int *)((ulonglong)uVar7 >> 0x20),
pcVar3,local_30);
LAB_8f61940c:
piVar5 = local_30;
if ((int)local_30 < 0) goto LAB_8f6194e4;
}
else {
if ((uint *)uVar7 == (uint *)0x0) goto LAB_8f6193fc;
uVar4 = *(uint *)uVar7;
DAT_8f68a098 = ((uVar4 << 0x10) >> 0x18) << 0x10 | uVar4 << 0x18 | uVar4 >> 0x18 |
((uVar4 << 8) >> 0x18) << 8;
LAB_8f6192bc:
pcVar3 = s__size_cells_8f660428;
uVar7 = FUN_8f637d68((int)param_1,(uint)piVar5,(byte *)s__size_cells_8f660428,
(uint *)&local_30);
if (0 < (int)local_30) {
if ((uint *)uVar7 != (uint *)0x0) {
uVar4 = *(uint *)uVar7;
DAT_8f68a09c = ((uVar4 << 0x10) >> 0x18) << 0x10 | uVar4 << 0x18 | uVar4 >> 0x18 |
((uVar4 << 8) >> 0x18) << 8;
goto LAB_8f61930c;
}
LAB_8f619500:
dprintf((byte *)s_Error_finding_the__size_cells_pr_8f660458,
(int *)((ulonglong)uVar7 >> 0x20),pcVar3,local_30);
goto LAB_8f61940c;
}
if (local_30 != (int *)0xffffffff) goto LAB_8f619500;
DAT_8f68a09c = 1;
dprintf((byte *)s_Using_default__size_cell_size____8f660434,(int *)0x1,pcVar3,1);
}
LAB_8f61930c:
if (DAT_8f68a094 == 0) {
if (DAT_8f68a098 != 2) goto LAB_8f619200;
puVar2 = &DAT_8f660344;
local_64 = ((param_4 << 0x10) >> 0x18) << 0x10 | param_4 << 0x18 | param_4 >> 0x18 |
((param_4 << 8) >> 0x18) << 8;
local_60 = param_4;
uVar6 = FUN_8f63877c(param_1,DAT_8f68a090,(undefined4 *)&DAT_8f660344,&local_64,4);
if ((int)uVar6 != 0) goto LAB_8f6194b8;
puVar2 = &DAT_8f660344;
local_5c = ((uint)((int)param_3 << 0x10) >> 0x18) << 0x10 | (int)param_3 << 0x18 |
(uint)param_3 >> 0x18 | ((uint)((int)param_3 << 8) >> 0x18) << 8;
local_58 = param_3;
uVar6 = FUN_8f638890(param_1,DAT_8f68a090,(undefined4 *)&DAT_8f660344,&local_5c,4);
if ((int)uVar6 != 0) goto LAB_8f6193c0;
goto LAB_8f619244;
}
if (DAT_8f68a098 == 2) {
puVar2 = &DAT_8f660344;
local_4c = ((param_4 << 0x10) >> 0x18) << 0x10 | param_4 << 0x18 | param_4 >> 0x18 |
((param_4 << 8) >> 0x18) << 8;
local_48 = param_4;
uVar6 = FUN_8f638890(param_1,DAT_8f68a090,(undefined4 *)&DAT_8f660344,&local_4c,4);
if ((int)uVar6 == 0) goto LAB_8f61912c;
}
else {
LAB_8f61912c:
puVar2 = &DAT_8f660344;
local_44 = ((uint)((int)param_3 << 0x10) >> 0x18) << 0x10 | (int)param_3 << 0x18 |
(uint)param_3 >> 0x18 | ((uint)((int)param_3 << 8) >> 0x18) << 8;
local_40 = param_3;
uVar6 = FUN_8f638890(param_1,DAT_8f68a090,(undefined4 *)&DAT_8f660344,&local_44,4);
if ((int)uVar6 == 0) goto LAB_8f619170;
}
LAB_8f6193c0:
dprintf((byte *)s_ERROR__Could_not_append_prop_reg_8f6604f4,(int *)(uVar6 >> 0x20),puVar2,
(int)uVar6);
uVar6 = uVar6 & 0xffffffff | (ulonglong)extraout_r1_00 << 0x20;
}
LAB_8f6191e4:
if (local_2c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar6,(int)(uVar6 >> 0x20),local_2c);
}
return;
}
void FUN_8f61953c(uint *param_1,undefined4 *param_2,uint param_3,int param_4)
{
int *piVar1;
int iVar2;
undefined4 extraout_r1;
undefined4 uVar3;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 extraout_r1_03;
undefined4 extraout_r1_04;
undefined4 extraout_r1_05;
undefined4 extraout_r1_06;
undefined4 extraout_r1_07;
undefined4 extraout_r1_08;
uint uVar4;
int *piVar5;
char *pcVar6;
uint uVar7;
uint uVar8;
uint *puVar9;
undefined8 uVar10;
uint local_34;
uint local_30;
uint local_2c;
uint local_28;
int *local_24;
local_24 = DAT_8f69d118;
uVar4 = param_3;
iVar2 = param_4;
uVar10 = FUN_8f6371a4(param_1);
piVar5 = (int *)((ulonglong)uVar10 >> 0x20);
if ((int)uVar10 == 0) {
uVar10 = FUN_8f6182d0((uint)param_1);
piVar5 = (int *)((ulonglong)uVar10 >> 0x20);
piVar1 = (int *)uVar10;
if (piVar1 == (int *)0x0) {
uVar7 = param_1[1];
uVar4 = ((uVar7 << 0x10) >> 0x18) << 0x10 | uVar7 << 0x18;
uVar8 = uVar4 | uVar7 >> 0x18;
uVar10 = FUN_8f629c00((undefined *)param_1,(uVar8 | ((uVar7 << 8) >> 0x18) << 8) + 0x400);
if ((int)uVar10 == 0) {
uVar7 = param_1[1];
uVar4 = ((uVar7 << 0x10) >> 0x18) << 0x10 | uVar7 << 0x18;
piVar5 = (int *)((uVar4 | uVar7 >> 0x18 | ((uVar7 << 8) >> 0x18) << 8) + 0x400);
piVar1 = (int *)FUN_8f638af8(param_1,param_1,(uint)piVar5);
if (piVar1 == (int *)0x0) {
piVar1 = (int *)FUN_8f637e54(param_1,(int *)s__memory_8f660584,piVar5);
if ((int)piVar1 < 0) {
dprintf((byte *)s_Could_not_find_memory_node__8f6603a8,piVar1,piVar5,uVar4);
uVar3 = extraout_r1_05;
}
else {
uVar10 = FUN_8f601128(param_1,(uint)piVar1);
piVar1 = (int *)uVar10;
if (piVar1 == (int *)0x0) {
uVar10 = FUN_8f637e54(param_1,(int *)s__chosen_8f6605b0,piVar5);
piVar1 = (int *)uVar10;
if ((int)piVar1 < 0) {
dprintf((byte *)s_Could_not_find_chosen_node__8f6605b8,
(int *)((ulonglong)uVar10 >> 0x20),piVar5,uVar4);
uVar3 = extraout_r1_08;
}
else {
piVar5 = piVar1;
if (param_2 != (undefined4 *)0x0) {
iVar2 = FUN_8f636de0((byte *)param_2);
pcVar6 = s_bootargs_8f6605d8;
uVar10 = FUN_8f6389c0(param_1,(uint)piVar1,(undefined4 *)s_bootargs_8f6605d8,
param_2,iVar2 + 1);
piVar5 = (int *)uVar10;
if (piVar5 != (int *)0x0) {
dprintf((byte *)s_ERROR__Cannot_update_chosen_node_8f6605e4,
(int *)((ulonglong)uVar10 >> 0x20),pcVar6,param_2);
uVar3 = extraout_r1_07;
piVar1 = piVar5;
goto LAB_8f619580;
}
}
if (param_4 != 0) {
pcVar6 = s_linux_initrd_start_8f660614;
local_34 = ((param_3 << 0x10) >> 0x18) << 0x10 | param_3 << 0x18 | param_3 >> 0x18
| ((param_3 << 8) >> 0x18) << 8;
puVar9 = &local_34;
local_30 = param_3;
uVar10 = FUN_8f63877c(param_1,(uint)piVar1,
(undefined4 *)s_linux_initrd_start_8f660614,puVar9,4);
if ((int *)uVar10 != (int *)0x0) {
dprintf((byte *)s_ERROR__Cannot_update_chosen_node_8f660628,
(int *)((ulonglong)uVar10 >> 0x20),pcVar6,puVar9);
uVar3 = extraout_r1_06;
piVar1 = (int *)uVar10;
goto LAB_8f619580;
}
local_28 = param_3 + param_4;
pcVar6 = s_linux_initrd_end_8f660660;
local_2c = (local_28 * 0x10000 >> 0x18) << 0x10 | local_28 * 0x1000000 |
local_28 >> 0x18 | (local_28 * 0x100 >> 0x18) << 8;
puVar9 = &local_2c;
uVar10 = FUN_8f63877c(param_1,(uint)piVar1,
(undefined4 *)s_linux_initrd_end_8f660660,puVar9,4);
piVar5 = (int *)uVar10;
if (piVar5 != (int *)0x0) {
dprintf((byte *)s_ERROR__Cannot_update_chosen_node_8f660674,
(int *)((ulonglong)uVar10 >> 0x20),pcVar6,puVar9);
uVar3 = extraout_r1_00;
piVar1 = piVar5;
goto LAB_8f619580;
}
}
FUN_8f638e54(param_1);
uVar3 = extraout_r1_01;
piVar1 = piVar5;
}
}
else {
dprintf((byte *)s_ERROR__Cannot_update_memory_node_8f66058c,
(int *)((ulonglong)uVar10 >> 0x20),piVar5,uVar4);
uVar3 = extraout_r1_04;
}
}
}
else {
dprintf((byte *)s_Failed_to_move_resize_dtb_buffer_8f66055c,piVar1,piVar5,uVar4);
uVar3 = extraout_r1_03;
}
}
else {
dprintf((byte *)s_Error__Fdt_addresses_overlap_wit_8f660528,
(int *)((ulonglong)uVar10 >> 0x20),uVar4,uVar8);
uVar3 = extraout_r1_02;
}
goto LAB_8f619580;
}
}
dprintf((byte *)s_Invalid_device_tree_header_8f6606ac,piVar5,uVar4,iVar2);
uVar3 = extraout_r1;
piVar1 = (int *)0x1;
LAB_8f619580:
if (local_24 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(piVar1,uVar3,local_24);
}
return;
}
void FUN_8f6197cc(int param_1,uint param_2)
{
short sVar1;
int *piVar2;
int iVar3;
int iVar4;
uint *puVar5;
int iVar6;
int iVar7;
piVar2 = DAT_8f69d118;
if (param_2 != 0) {
sVar1 = (short)param_2;
iVar4 = param_1 + 0xc;
iVar3 = param_1 + 8;
iVar6 = param_1;
do {
puVar5 = *(uint **)(iVar6 + 8);
iVar7 = iVar6 + 0xc;
param_1 = iVar3 + 0xc;
if (puVar5 == (uint *)0x0) {
*(undefined4 *)(iVar6 + 8) = 0x110a000;
}
if (puVar5 == (uint *)0x0) {
puVar5 = (uint *)0x110a000;
}
param_2 = *puVar5 & ~((uint)*(byte *)(iVar3 + -3) << (*(uint *)(iVar3 + -8) & 0xff)) |
(uint)*(byte *)(iVar3 + -4) << (*(uint *)(iVar3 + -8) & 0xff);
*puVar5 = param_2;
iVar3 = param_1;
iVar6 = iVar7;
} while (iVar7 != (short)(sVar1 - 1U & 0xff) * 0xc + iVar4);
}
if (piVar2 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(param_1,param_2,piVar2);
}
return;
}
void FUN_8f61986c(int param_1,uint param_2)
{
short sVar1;
int *piVar2;
int iVar3;
int iVar4;
uint *puVar5;
int iVar6;
int iVar7;
piVar2 = DAT_8f69d118;
if (param_2 != 0) {
sVar1 = (short)param_2;
iVar4 = param_1 + 0xc;
iVar3 = param_1 + 8;
iVar6 = param_1;
do {
puVar5 = *(uint **)(iVar6 + 8);
iVar7 = iVar6 + 0xc;
param_1 = iVar3 + 0xc;
if (puVar5 == (uint *)0x0) {
*(undefined4 *)(iVar6 + 8) = 0x110a000;
}
if (puVar5 == (uint *)0x0) {
puVar5 = (uint *)0x110a000;
}
param_2 = *puVar5 & ~((uint)*(byte *)(iVar3 + -3) << (*(uint *)(iVar3 + -8) & 0xff)) |
(uint)*(byte *)(iVar3 + -4) << (*(uint *)(iVar3 + -8) & 0xff);
*puVar5 = param_2;
iVar3 = param_1;
iVar6 = iVar7;
} while (iVar7 != (short)(sVar1 - 1U & 0xff) * 0xc + iVar4);
}
if (piVar2 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(param_1,param_2,piVar2);
}
return;
}
void FUN_8f61990c(undefined4 param_1,int *param_2,int param_3)
{
int *piVar1;
undefined4 extraout_r1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
if (param_3 == 0) {
dprintf((byte *)s_ERROR__Boot_Invalid__RSA_KEY_is_N_8f6606e4,param_2,param_2,0);
uVar2 = CONCAT44(extraout_r1,0xffffffff);
}
else {
uVar2 = FUN_8f651d7c(0,(undefined)param_1,(char)param_2,(char)param_3,1);
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f6199b4)
void FUN_8f619974(int *param_1,uint param_2,int *param_3,undefined4 *param_4)
{
FUN_8f619cfc(param_1,param_2,param_4,(int *)((uint)param_3 & 0xff));
return;
}
// WARNING: Removing unreachable block (ram,0x8f61b048)
void FUN_8f6199b8(undefined4 param_1,undefined4 param_2)
{
byte bVar1;
int *piVar2;
undefined4 uVar3;
uint uVar4;
int *piVar5;
undefined8 uVar6;
piVar5 = DAT_8f69d118;
uVar6 = CONCAT44(param_2,param_1);
if (DAT_8f68a0a0 != 1) {
uVar6 = FUN_8f61af94(param_1,param_2);
uVar6 = FUN_8f61afd8((int)uVar6,(int)((ulonglong)uVar6 >> 0x20));
DAT_8f68a0a0 = 1;
}
piVar2 = DAT_8f69d118;
bVar1 = DAT_8f68a1b6;
uVar3 = (undefined4)((ulonglong)uVar6 >> 0x20);
if (piVar5 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar6,uVar3,piVar5);
}
uVar4 = (uint)DAT_8f68a1fc;
piVar5 = DAT_8f69d118;
if (uVar4 != 0) {
FUN_8f61285c(&DAT_8f68a19c,uVar3);
}
FUN_8f612a00(&DAT_8f68a19c,0);
uVar6 = FUN_8f612890(&DAT_8f68a19c,0);
if ((int)uVar6 == 0) {
FUN_8f612a00(&DAT_8f68a19c,1);
uVar6 = FUN_8f612890(&DAT_8f68a19c,1);
if ((int)uVar6 == 0) {
*(uint *)(DAT_8f68a184 + 0x400) = (uint)(bVar1 >> 1) << 5 | 0xe000f;
if (piVar2 == DAT_8f69d118) {
FUN_8f619ff0(&DAT_8f68a19c,(int *)(DAT_8f68a184 + 0x400),
(uint)(DAT_8f68a1ce >> 1) << 5 | 0xe020f,4);
return;
}
goto LAB_8f61a304;
}
uVar6 = dprintf((byte *)s_CRYPTO__BAM_Write_FIFO_init_erro_8f6609a0,
(int *)((ulonglong)uVar6 >> 0x20),uVar4,piVar5);
}
else {
uVar6 = dprintf((byte *)s_CRYPTO__BAM_Read_FIFO_init_error_8f66097c,
(int *)((ulonglong)uVar6 >> 0x20),uVar4,piVar5);
}
if (piVar2 == DAT_8f69d118) {
dprintf((byte *)s_CRYPTO__BAM_init_error_8f6609c4,(int *)((ulonglong)uVar6 >> 0x20),piVar2,
DAT_8f69d118);
return;
}
LAB_8f61a304:
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar6,(int)((ulonglong)uVar6 >> 0x20),piVar2);
}
void FUN_8f619a14(void)
{
undefined4 *puVar1;
undefined4 *puVar2;
undefined4 uStack_34;
undefined4 local_30 [5];
int *local_1c;
local_30[0] = DAT_8f660800;
local_30[1] = DAT_8f660804;
local_30[2] = DAT_8f660808;
local_30[3] = DAT_8f66080c;
local_30[4] = DAT_8f660810;
local_1c = DAT_8f69d118;
DAT_8f68a0a4 = 0;
DAT_8f68a0a8 = 0;
FUN_8f636968((uint *)&DAT_8f68a0ac,0,0x40);
puVar1 = (undefined4 *)0x8f68a0f4;
puVar2 = &uStack_34;
do {
puVar2 = puVar2 + 1;
puVar1 = puVar1 + 1;
*puVar1 = *puVar2;
} while (puVar2 != local_30 + 4);
DAT_8f68a0ec = 0;
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,local_1c,DAT_8f69d118);
}
void FUN_8f619ab0(void)
{
undefined4 *puVar1;
undefined4 *puVar2;
undefined4 uStack_40;
undefined4 local_3c [8];
int *local_1c;
puVar2 = &uStack_40;
local_3c[0] = *(undefined4 *)PTR_DAT_8f619b48;
local_3c[1] = *(undefined4 *)(PTR_DAT_8f619b48 + 4);
local_3c[2] = *(undefined4 *)(PTR_DAT_8f619b48 + 8);
local_3c[3] = *(undefined4 *)(PTR_DAT_8f619b48 + 0xc);
DAT_8f68a10c = 0;
DAT_8f68a110 = 0;
local_3c[4] = *(undefined4 *)(PTR_DAT_8f619b48 + 0x10);
local_3c[5] = *(undefined4 *)(PTR_DAT_8f619b48 + 0x14);
local_3c[6] = *(undefined4 *)(PTR_DAT_8f619b48 + 0x18);
local_3c[7] = *(undefined4 *)(PTR_DAT_8f619b48 + 0x1c);
local_1c = DAT_8f69d118;
FUN_8f636968((uint *)&DAT_8f68a114,0,0x40);
puVar1 = (undefined4 *)0x8f68a15c;
do {
puVar2 = puVar2 + 1;
puVar1 = puVar1 + 1;
*puVar1 = *puVar2;
} while (puVar2 != local_3c + 7);
DAT_8f68a154 = 0;
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,local_1c,DAT_8f69d118);
}
void FUN_8f619b4c(uint *param_1,int *param_2,int param_3,uint param_4)
{
uint uVar1;
undefined4 uVar3;
int *extraout_r1;
int *extraout_r1_00;
int *extraout_r1_01;
int iVar4;
uint uVar5;
int iVar6;
uint uVar7;
uint uVar8;
int *piVar9;
uint uVar10;
int local_30;
int *local_2c;
int iVar2;
uVar10 = (uint)*(byte *)(param_1 + 0x12);
iVar6 = 0;
local_2c = DAT_8f69d118;
uVar7 = 1;
local_30 = 1;
iVar4 = param_3 + uVar10;
iVar2 = 1;
piVar9 = param_2;
while( true ) {
uVar1 = FUN_8f61b1a0(iVar2,piVar9);
uVar5 = iVar4 - iVar6;
piVar9 = param_2;
if (uVar1 < uVar5) {
uVar5 = FUN_8f61b1a0(uVar1,iVar4);
uVar1 = (uint)*(byte *)(param_1 + 0x12);
if (uVar1 == 0) {
piVar9 = (int *)((int)param_2 + (iVar6 - uVar10));
uVar8 = uVar5;
}
else {
uVar8 = uVar5 - uVar1;
uVar1 = 0;
}
}
else {
uVar1 = 1;
if (*(byte *)(param_1 + 0x12) == 0) {
uVar8 = uVar5 - uVar10;
piVar9 = (int *)((int)param_2 + (iVar6 - uVar10));
}
else {
uVar8 = uVar5 - *(byte *)(param_1 + 0x12);
}
}
FUN_8f61b04c(param_1,uVar5,param_4,uVar7,uVar1);
FUN_8f61b0c0((int *)param_1,(uint)piVar9,uVar8,uVar5,&local_30);
if (local_30 != 1) {
dprintf((byte *)(s__do_sha_update_returns_error_fro_8f660833 + 1),extraout_r1,uVar8,local_30);
uVar3 = 2;
goto LAB_8f619cc0;
}
uVar7 = param_4;
FUN_8f61b110(param_1 + 0x15,&local_30,param_4);
if (local_30 != 1) {
dprintf((byte *)s_do_sha_update_returns_error_from_8f660868,extraout_r1_00,uVar7,local_30);
uVar3 = 2;
goto LAB_8f619cc0;
}
piVar9 = extraout_r1_00;
if (uVar1 == 0) {
FUN_8f61b15c(param_1,extraout_r1_00);
piVar9 = extraout_r1_01;
}
iVar6 = iVar6 + uVar5;
*(undefined *)(param_1 + 0x12) = 0;
if (iVar4 == iVar6) break;
uVar7 = 0;
iVar2 = iVar4;
}
uVar3 = 0;
LAB_8f619cc0:
if (local_2c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,&DAT_8f69d118,local_2c);
}
void FUN_8f619cfc(int *param_1,uint param_2,undefined4 *param_3,int *param_4)
{
int *piVar1;
undefined4 *puVar2;
int *piVar3;
undefined4 uVar4;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined8 uVar5;
uint auStack_8c [4];
uint auStack_7c [22];
int *local_24;
local_24 = DAT_8f69d118;
uVar5 = FUN_8f600c64(param_1,param_2);
uVar4 = (undefined4)((ulonglong)uVar5 >> 0x20);
piVar1 = (int *)uVar5;
if (param_4 == (int *)0x1) {
if (piVar1 == (int *)0x1) {
if (local_24 == DAT_8f69d118) {
if (param_3 == (undefined4 *)0x0) {
param_3 = (undefined4 *)&DAT_8f69d0d8;
}
piVar1 = DAT_8f69d118;
uVar5 = FUN_8f652f6c(auStack_7c);
if ((int)uVar5 != 0) {
FUN_8f652c98(auStack_7c,param_1,param_2);
FUN_8f652dd4((undefined *)param_3,auStack_7c);
FUN_8f63b3a0((byte *)auStack_7c,(byte *)0x60);
uVar5 = CONCAT44(extraout_r1_01,param_3);
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),piVar1);
}
return;
}
goto LAB_8f619dc8;
}
if (piVar1 != (int *)0x2) goto LAB_8f619d3c;
if ((param_1 != (int *)0x0 && param_2 != 0) && (param_3 != (undefined4 *)0x0)) {
FUN_8f6199b8(2,uVar4);
FUN_8f619a14();
piVar3 = (int *)FUN_8f619b4c(&DAT_8f68a0a4,param_1,param_2,1);
piVar1 = param_4;
param_4 = piVar3;
if (piVar3 == (int *)0x0) {
puVar2 = FUN_8f63685c(param_3,(undefined4 *)PTR_DAT_8f619ecc,0x14);
uVar5 = CONCAT44(extraout_r1_00,puVar2);
}
else {
LAB_8f619e9c:
dprintf((byte *)s_do_sha_update_returns_error__d_8f66089c,param_4,param_2,piVar1);
uVar5 = dprintf((byte *)s_crypto_sha256_returns_error__d_8f6608bc,param_4,param_2,piVar1);
piVar1 = (int *)uVar5;
if (param_4 != (int *)0x0) goto LAB_8f619d40;
}
goto LAB_8f619e40;
}
LAB_8f619d80:
param_4 = (int *)0x3;
}
else if (param_4 == (int *)0x2) {
if (piVar1 == (int *)0x1) {
if (local_24 == DAT_8f69d118) {
if (param_3 == (undefined4 *)0x0) {
param_3 = (undefined4 *)&DAT_8f69d0ec;
}
piVar1 = DAT_8f69d118;
FUN_8f653130(auStack_8c);
if (param_2 != 0) {
FUN_8f652ff0(auStack_8c,param_1,param_2);
}
FUN_8f6531e0((undefined *)param_3,auStack_8c);
FUN_8f63b3a0((byte *)auStack_8c,(byte *)0x70);
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(param_3,extraout_r1_02,piVar1);
}
return;
}
goto LAB_8f619dc8;
}
if (piVar1 == (int *)0x2) {
if ((param_1 == (int *)0x0 || param_2 == 0) || (param_3 == (undefined4 *)0x0))
goto LAB_8f619d80;
FUN_8f6199b8(2,uVar4);
FUN_8f619ab0();
param_4 = (int *)FUN_8f619b4c(&DAT_8f68a10c,param_1,param_2,2);
if (param_4 != (int *)0x0) goto LAB_8f619e9c;
puVar2 = FUN_8f63685c(param_3,(undefined4 *)PTR_DAT_8f619ec8,0x20);
uVar5 = CONCAT44(extraout_r1,puVar2);
LAB_8f619e40:
if (local_24 == DAT_8f69d118) {
return;
}
goto LAB_8f619dc8;
}
}
else {
LAB_8f619d3c:
param_4 = (int *)0x2;
}
LAB_8f619d40:
uVar5 = CONCAT44(param_4,piVar1);
if (local_24 == DAT_8f69d118) {
dprintf((byte *)s_crypto_sha256_returns_error__d_8f6608bc,param_4,local_24,DAT_8f69d118);
return;
}
LAB_8f619dc8:
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),local_24);
}
// WARNING: Removing unreachable block (ram,0x8f619f0c)
void FUN_8f619ed0(void)
{
return;
}
void FUN_8f619f10(int param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
int *piVar2;
int *extraout_r1;
int *piVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
piVar3 = DAT_8f69d118;
piVar2 = (int *)FUN_8f635d28(0x40,8);
uVar4 = FUN_8f6366a8(piVar2,param_1 * 8 + 0x3fU & 0xffffffc0);
piVar2 = (int *)((ulonglong)uVar4 >> 0x20);
if ((int)uVar4 == 0) {
dprintf((byte *)s_Could_not_allocate_fifo_buffer_8f6608dc,piVar2,param_3,piVar3);
piVar2 = extraout_r1;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,piVar2,piVar1);
}
void FUN_8f619f80(int param_1,int *param_2,uint param_3,uint param_4)
{
int *piVar1;
int *piVar2;
undefined4 uVar3;
bool bVar4;
piVar1 = DAT_8f69d118;
FUN_8f612df8((uint *)(param_1 + *param_2 * 0x10),param_3,param_4,0);
uVar3 = FUN_8f625b24(param_1 + *param_2 * 0x10,0x10);
piVar2 = DAT_8f69d118;
bVar4 = piVar1 == DAT_8f69d118;
*param_2 = *param_2 + 1;
if (bVar4) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,piVar1,piVar2);
}
void FUN_8f619ff0(int *param_1,int *param_2,uint param_3,byte param_4)
{
int iVar1;
int iVar2;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 uVar3;
uint auStack_2c [4];
int *local_1c;
local_1c = DAT_8f69d118;
FUN_8f612df8(auStack_2c,(uint)param_2,param_3,0);
FUN_8f625b24((uint)auStack_2c,0x10);
iVar1 = FUN_8f602f04(auStack_2c,extraout_r1);
uVar3 = 0x10;
iVar2 = FUN_8f612b8c((int)param_1,1,iVar1,(int *)0x10,param_4 | 0x88);
if (iVar2 == 0) {
FUN_8f612a9c(param_1,(int *)0x1,1);
FUN_8f6126fc(param_1,1,1);
FUN_8f612b3c((int)param_1,1);
uVar3 = extraout_r1_00;
}
else {
dprintf((byte *)s_CRYPTO_WRITE_REG__Reg_write_fail_8f6608fc,param_2,iVar1,uVar3);
uVar3 = extraout_r1_01;
}
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,uVar3,local_1c);
}
void FUN_8f61a308(int *param_1,uint *param_2,uint param_3)
{
int *piVar1;
int iVar2;
int iVar3;
uint uVar4;
uint uVar5;
uint uVar6;
int *piVar7;
undefined8 uVar8;
piVar1 = DAT_8f69d118;
if (param_3 == 1) {
if ((param_2[0x14] & 2) != 0) {
param_3 = 0x10001;
}
iVar3 = *param_1;
iVar2 = param_1[2];
uVar5 = 5;
param_1[3] = 0;
param_1[4] = 0;
}
else {
if (param_3 != 2) {
uVar8 = dprintf((byte *)s_crypto_set_sha_ctx_invalid_auth_a_8f6609dc,(int *)param_2,param_3,
DAT_8f69d118);
if (piVar1 == DAT_8f69d118) {
dprintf((byte *)s_Authentication_alg_config_failed_8f660a08,
(int *)((ulonglong)uVar8 >> 0x20),piVar1,DAT_8f69d118);
return;
}
goto LAB_8f61a4c4;
}
uVar5 = param_2[0x14];
iVar3 = *param_1;
param_1[3] = 0;
param_1[4] = 0;
param_3 = 0x201;
if ((uVar5 & 2) != 0) {
param_3 = 0x10201;
}
iVar2 = param_1[2];
uVar5 = 8;
}
piVar7 = param_1 + 3;
FUN_8f619f80(iVar2,piVar7,iVar3 + 0x200,0);
iVar2 = 0;
FUN_8f619f80(param_1[2],piVar7,*param_1 + 0x300,param_3);
uVar6 = 0;
do {
while ((param_2[0x14] & 1) == 0) {
uVar6 = uVar6 + 1;
FUN_8f619f80(param_1[2],piVar7,*param_1 + 0x310 + iVar2,*(uint *)((int)param_2 + iVar2 + 0x54)
);
iVar2 = iVar2 + 4;
if (uVar5 <= uVar6) goto LAB_8f61a430;
}
uVar4 = *(uint *)((int)param_2 + iVar2 + 0x54);
uVar6 = uVar6 + 1;
FUN_8f619f80(param_1[2],piVar7,*param_1 + 0x310 + iVar2,
uVar4 << 0x18 | (uVar4 >> 8 & 0xff) << 0x10 | (uVar4 >> 0x10 & 0xff) << 8 |
uVar4 >> 0x18);
iVar2 = iVar2 + 4;
} while (uVar6 < uVar5);
LAB_8f61a430:
uVar8 = FUN_8f619f80(param_1[2],piVar7,*param_1 + 0x390,*param_2);
if (piVar1 == DAT_8f69d118) {
FUN_8f619f80(param_1[2],piVar7,*param_1 + 0x394,param_2[1]);
return;
}
LAB_8f61a4c4:
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar8,(int)((ulonglong)uVar8 >> 0x20),piVar1);
}
void FUN_8f61a4c8(int **param_1,int *param_2,uint param_3)
{
int *piVar1;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
int *piVar2;
int *piVar3;
int **ppiVar4;
int **ppiVar5;
uint uVar6;
uint uVar7;
undefined4 uVar8;
int *piVar9;
undefined8 uVar10;
piVar1 = DAT_8f69d118;
piVar2 = *param_1;
piVar9 = (int *)param_2[0x13];
if ((uint)(*piVar2 << 8) >> 0x18 == 0) {
uVar6 = param_3 & 0x3f;
if (uVar6 == 0) {
uVar7 = uVar6;
piVar3 = (int *)((int)piVar9 + 0x3fU & 0xffffffc0);
}
else {
dprintf((byte *)s_Data_start_not_aligned_at_burst_l_8f660a2c,param_2,piVar2,0);
uVar6 = param_3 - (param_3 & 0xffffffc0);
piVar2 = *param_1;
uVar7 = param_3 & 0xffffffc0;
piVar3 = (int *)((int)piVar9 + uVar6 + 0x3f & 0xffffffc0);
}
}
else {
uVar6 = 0;
uVar7 = uVar6;
piVar3 = piVar9;
}
ppiVar5 = param_1 + 3;
ppiVar4 = param_1 + 6;
FUN_8f619f80((int)param_1[2],(int *)ppiVar5,(uint)(piVar2 + 0xc2),uVar6);
FUN_8f619f80((int)param_1[2],(int *)ppiVar5,(uint)(*param_1 + 0xc1),(uint)piVar9);
FUN_8f619f80((int)param_1[2],(int *)ppiVar5,(uint)(*param_1 + 0x44),(uint)piVar3);
FUN_8f619f80((int)param_1[2],(int *)ppiVar5,(uint)(*param_1 + 0x48),5);
piVar2 = param_1[2] + (int)param_1[4] * 4;
piVar9 = (int *)((int)param_1[2] + ((int)param_1[3] * 0x10 - (int)piVar2));
uVar10 = FUN_8f612b8c((int)ppiVar4,1,(int)piVar2,piVar9,0x8c);
if ((int)uVar10 != 0) {
dprintf((byte *)s_CRYPTO_ADD_DESC__Adding_desc_fai_8f660a58,(int *)((ulonglong)uVar10 >> 0x20),
piVar2,piVar9);
}
param_1[4] = param_1[3];
FUN_8f612a9c((int *)ppiVar4,(int *)0x1,1);
FUN_8f6126fc((int *)ppiVar4,1,1);
FUN_8f612b3c((int)ppiVar4,1);
if (uVar7 == 0) {
FUN_8f625b24(param_3,(int)piVar3);
}
else {
FUN_8f625b24(uVar7,(int)piVar3);
param_3 = uVar7;
}
uVar10 = FUN_8f612ce4((int *)ppiVar4,(int *)0x1,param_3,piVar3,0xd0);
piVar2 = (int *)((ulonglong)uVar10 >> 0x20);
if ((int)uVar10 == 0) {
FUN_8f625b24((uint)param_1[5],0x80);
param_3 = FUN_8f602f04(param_1[5],extraout_r1_00);
piVar3 = (int *)0x80;
uVar10 = FUN_8f612ce4((int *)ppiVar4,(int *)0x0,param_3,(int *)0x80,0x80);
piVar2 = (int *)((ulonglong)uVar10 >> 0x20);
if ((int)uVar10 == 0) {
uVar8 = 1;
FUN_8f6126fc((int *)ppiVar4,1,1);
FUN_8f612b3c((int)ppiVar4,1);
FUN_8f6126fc((int *)ppiVar4,0,1);
FUN_8f612b3c((int)ppiVar4,0);
FUN_8f625b24((uint)param_1[5],0x80);
goto LAB_8f61a634;
}
}
dprintf((byte *)s_Crypto_send_data_failed_8f660a80,piVar2,param_3,piVar3);
uVar8 = 2;
LAB_8f61a634:
FUN_8f619ff0((int *)ppiVar4,*param_1 + 0x40,0,2);
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar8,extraout_r1,piVar1);
}
return;
}
void FUN_8f61a7c8(int param_1,undefined4 *param_2,int param_3)
{
int iVar1;
int *piVar2;
undefined4 uVar3;
int *extraout_r1;
undefined4 *extraout_r1_00;
uint uVar4;
int *piVar5;
uint uVar6;
int iVar7;
piVar2 = DAT_8f69d118;
iVar7 = *(int *)(param_1 + 0x14);
uVar4 = *(uint *)(iVar7 + 0x60);
piVar5 = (int *)(uVar4 << 0x18 | (uVar4 >> 8 & 0xff) << 0x10 | (uVar4 >> 0x10 & 0xff) << 8 |
uVar4 >> 0x18);
uVar4 = (uint)piVar5 & 0x104001;
uVar6 = *(uint *)(iVar7 + 100);
if ((uVar4 != 0) || ((uVar6 >> 0x18 & 2) != 0)) {
FUN_8f603e98((int *)(uint)*(byte *)(param_1 + 4));
dprintf((byte *)s_crypto_get_digest_status_error_8f660a9c,extraout_r1,param_3,uVar4);
dprintf((byte *)s_status____x_status2____x_8f660abc,piVar5,
uVar6 << 0x18 | (uVar6 >> 8 & 0xff) << 0x10 | (uVar6 >> 0x10 & 0xff) << 8 |
uVar6 >> 0x18,uVar4);
uVar3 = 2;
param_2 = extraout_r1_00;
goto LAB_8f61a83c;
}
if (param_3 == 1) {
uVar4 = 5;
LAB_8f61a870:
param_2 = param_2 + -1;
uVar6 = 0;
do {
iVar1 = uVar6 * 4;
uVar6 = uVar6 + 1;
param_2 = param_2 + 1;
*param_2 = *(undefined4 *)(iVar7 + iVar1);
} while (uVar6 < uVar4);
}
else if (param_3 == 2) {
uVar4 = 8;
goto LAB_8f61a870;
}
uVar3 = 1;
LAB_8f61a83c:
if (piVar2 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,param_2,piVar2);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f61a964)
void FUN_8f61a930(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f61a99c)
void FUN_8f61a968(undefined4 param_1,int *param_2)
{
int *piVar1;
undefined *puVar2;
undefined *puVar3;
undefined *puVar4;
char *pcVar5;
int *piVar6;
int *extraout_r1;
int *extraout_r1_00;
int *piVar7;
int *in_lr;
undefined8 uVar8;
piVar1 = DAT_8f69d118;
pcVar5 = (char *)DAT_8f69d118;
piVar7 = DAT_8f69d118;
uVar8 = FUN_8f610bf4((int *)(s_gcc_usb30_master_clk_8f65acd8 + 4),param_2,DAT_8f69d118);
piVar6 = (int *)((ulonglong)uVar8 >> 0x20);
puVar2 = (undefined *)uVar8;
if (puVar2 == (undefined *)0x0) {
pcVar5 = s_platform_msm8953_acpuclock_c_8f65a5ac;
piVar7 = (int *)0x19b;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x19b);
piVar6 = extraout_r1_00;
}
uVar8 = FUN_8f610bf4((int *)s_usb30_phy_reset_8f65aa04,piVar6,pcVar5);
piVar6 = (int *)((ulonglong)uVar8 >> 0x20);
puVar3 = (undefined *)uVar8;
if (puVar3 == (undefined *)0x0) {
pcVar5 = s_platform_msm8953_acpuclock_c_8f65a5ac;
piVar7 = (int *)0x19f;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x19f);
piVar6 = extraout_r1;
}
puVar4 = (undefined *)FUN_8f610bf4((int *)s_usb30_pipe_clk_8f65a65c,piVar6,pcVar5);
if (puVar4 == (undefined *)0x0) {
piVar7 = (int *)0x1a2;
pcVar5 = s_platform_msm8953_acpuclock_c_8f65a5ac;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm8953_acpuclock_c_8f65a5ac,0x1a2);
}
uVar8 = FUN_8f6109b4(puVar2,1);
piVar6 = (int *)((ulonglong)uVar8 >> 0x20);
if ((int)uVar8 == 0) {
uVar8 = FUN_8f6109b4(puVar3,1);
if ((int)uVar8 == 0) {
uVar8 = FUN_8f6109b4(puVar4,1);
if ((int)uVar8 == 0) {
FUN_8f6104fc(100);
uVar8 = FUN_8f6109b4(puVar4,0);
piVar6 = (int *)((ulonglong)uVar8 >> 0x20);
if ((int)uVar8 != 0) {
if (piVar1 == DAT_8f69d118) {
pcVar5 = s_Failed_to_deassert_usb_pipe_clk_8f65aaac;
goto LAB_8f60403c;
}
goto LAB_8f604020;
}
}
else {
dprintf((byte *)s_Failed_to_assert_usb30_pipe_clk_8f65aa88,(int *)((ulonglong)uVar8 >> 0x20)
,pcVar5,piVar7);
}
uVar8 = FUN_8f6109b4(puVar3,0);
piVar6 = (int *)((ulonglong)uVar8 >> 0x20);
if ((int)uVar8 != 0) {
if (piVar1 == DAT_8f69d118) {
pcVar5 = s_Failed_to_deassert_usb30_phy_com_8f65aad0;
goto LAB_8f60403c;
}
goto LAB_8f604020;
}
}
else {
dprintf((byte *)s_Failed_to_assert_usb30_phy_reset_8f65aa60,(int *)((ulonglong)uVar8 >> 0x20),
pcVar5,piVar7);
}
uVar8 = FUN_8f6109b4(puVar2,0);
if ((int)uVar8 == 0) {
if (piVar1 == DAT_8f69d118) {
return;
}
}
else if (piVar1 == DAT_8f69d118) {
dprintf((byte *)s_Failed_to_deassert_usb30_master_c_8f65aafc,(int *)((ulonglong)uVar8 >> 0x20)
,piVar1,DAT_8f69d118);
return;
}
}
else if (piVar1 == DAT_8f69d118) {
pcVar5 = s_Failed_to_assert_usb30_master_re_8f65aa34;
LAB_8f60403c:
dprintf((byte *)pcVar5,piVar6,piVar1,DAT_8f69d118);
return;
}
LAB_8f604020:
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar8,(int)((ulonglong)uVar8 >> 0x20),piVar1);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61a9a0(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
int *piVar2;
int *piVar3;
uint uVar4;
int *piVar5;
uint uVar6;
int iVar7;
int iVar8;
undefined8 uVar9;
piVar1 = DAT_8f69d118;
uVar9 = FUN_8f601034(param_1,param_2);
uVar4 = (uint)uVar9;
uVar9 = FUN_8f600ff8(uVar4,(int)((ulonglong)uVar9 >> 0x20));
iVar7 = (int)uVar9;
if (uVar4 == 0 || iVar7 == 0) {
piVar5 = (int *)0x0;
uVar9 = FUN_8f603080();
_DAT_00078604 = 1;
if ((uint)uVar9 < 0x20000000) {
_DAT_00078048 = 8;
iVar7 = FUN_8f61a930((uint)uVar9,(int)((ulonglong)uVar9 >> 0x20));
if (iVar7 != 0) {
uRam00078004 = 0xe1;
}
_DAT_000780a4 = 0x82;
_DAT_00078104 = 3;
_DAT_000780f8 = 0xd5;
_DAT_000780fc = 0xaa;
_DAT_00078100 = 0x4d;
_DAT_00078094 = 1;
_DAT_00078088 = 0x2b;
_DAT_0007808c = 0x68;
_DAT_0007810c = 0x7c;
_DAT_00078034 = 2;
_DAT_00078038 = 0x1f;
_DAT_0007803c = 0xf;
_DAT_00078024 = 1;
_DAT_0007800c = 0xf;
_DAT_00078010 = 0xf;
_DAT_00078014 = 0x46;
_DAT_00078400 = 0xda;
_DAT_00078404 = 0x42;
_DAT_0007804c = 0x90;
iVar7 = FUN_8f61a930(0xda,0x42);
if (iVar7 == 0) {
_DAT_00078050 = 5;
}
else {
_DAT_00078050 = 7;
}
_DAT_000780d8 = 0x20;
_DAT_000780e0 = 0x77;
piVar2 = (int *)0x3;
_DAT_000780e8 = 0x15;
_DAT_00078268 = 3;
_DAT_000784bc = 2;
_DAT_000784c0 = 0x6c;
_DAT_000784c4 = 199;
_DAT_000784f8 = 0x40;
_DAT_00078500 = 0x73;
_DAT_00078504 = 6;
_DAT_0007864c = 0x48;
uVar9 = 0x1900000001;
_DAT_000780ac = 1;
_DAT_000780b0 = 2;
_DAT_000780b8 = 0x31;
_DAT_000780bc = 1;
_DAT_000780c0 = 0x19;
_DAT_000780c4 = 0x19;
_DAT_00078654 = 8;
_DAT_00078600 = 0;
_DAT_00078608 = 3;
}
else {
do {
iVar7 = piVar5[-0x1c26042f];
piVar2 = piVar5 + 2;
*(int *)(iVar7 + 0x78000) = piVar5[-0x1c26042e];
piVar5 = piVar2;
} while (piVar2 != (int *)0x1c8);
uVar9 = FUN_8f61a930(&DAT_8f67ef44,(int *)(iVar7 + 0x78000));
if ((int)uVar9 != 0) {
piVar5 = (int *)0x0;
do {
piVar2 = piVar5 + 2;
uVar9 = CONCAT44((int *)(piVar5[-0x1c260437] + 0x78000),&DAT_8f67ef24);
*(int *)(piVar5[-0x1c260437] + 0x78000) = piVar5[-0x1c260436];
piVar5 = piVar2;
} while (piVar2 != (int *)0x20);
}
}
}
else {
iVar8 = 0;
uVar6 = 0;
while( true ) {
uVar6 = uVar6 + 1;
piVar5 = (int *)(iVar7 + iVar8);
piVar2 = (int *)(*piVar5 + 0x78000);
*piVar2 = piVar5[1];
if (uVar4 <= uVar6) break;
if (uVar6 == 7) {
uVar9 = FUN_8f6104a8(1);
}
iVar8 = iVar8 + 8;
}
}
iVar7 = 1000;
do {
if ((_DAT_00078974 & 0x40) == 0) {
piVar5 = (int *)uVar9;
piVar2 = (int *)((ulonglong)uVar9 >> 0x20);
piVar3 = piVar1;
if (piVar1 == DAT_8f69d118) {
FUN_8f6036c4();
return;
}
goto LAB_8f61ac60;
}
uVar4 = _DAT_00078974;
uVar9 = FUN_8f6104fc(1);
iVar7 = iVar7 + -1;
} while (iVar7 != 0);
dprintf((byte *)s_QMP_phy_initialization_failed__f_8f660ad8,(int *)((ulonglong)uVar9 >> 0x20),
piVar2,uVar4);
piVar3 = (int *)0x1;
DAT_8f68a180 = 1;
piVar5 = piVar1;
piVar2 = DAT_8f69d118;
if (piVar1 == DAT_8f69d118) {
return;
}
LAB_8f61ac60:
// WARNING: Subroutine does not return
FUN_8f635428(piVar5,piVar2,piVar3);
}
// WARNING: Removing unreachable block (ram,0x8f61acac)
void FUN_8f61ac70(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f61ace4)
void FUN_8f61acb0(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f61ad1c)
void FUN_8f61ace8(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f61ad54)
void FUN_8f61ad20(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61ad58(void)
{
ulonglong uVar1;
uint uVar2;
int *piVar3;
int iVar4;
undefined8 uVar5;
ulonglong uVar6;
piVar3 = DAT_8f69d118;
uVar2 = _DAT_0184103c;
_DAT_0184103c = _DAT_0184103c | 1;
uVar5 = FUN_8f6104fc(10);
_DAT_0184103c = uVar2 & 0xfffffffe;
_DAT_0007e010 = 0x11;
DataMemoryBarrier(0xf);
_DAT_000790b4 = 0x23;
uVar5 = FUN_8f61ace8((int)uVar5,(int)((ulonglong)uVar5 >> 0x20));
iVar4 = (int)uVar5;
if ((iVar4 == 0) && (iVar4 = FUN_8f61ad20(0,(int)((ulonglong)uVar5 >> 0x20)), iVar4 == 0)) {
uVar5 = FUN_8f60300c();
iVar4 = (int)uVar5;
if (iVar4 == 0) {
_DAT_00079080 = 0xa0;
_DAT_00079084 = 0xa5;
_DAT_00079088 = 0x81;
_DAT_0007908c = 0x85;
goto LAB_8f61ae10;
}
}
_DAT_00079080 = 0xf8;
_DAT_00079084 = 0xb3;
_DAT_00079088 = 0x83;
_DAT_0007908c = 0xc0;
_DAT_00079008 = 0x30;
_DAT_0007900c = 0x79;
_DAT_00079010 = 0x21;
_DAT_0007909c = 0x14;
uVar5 = CONCAT44(0x9f,iVar4);
_DAT_0007901c = 0x9f;
_DAT_00079018 = 0;
LAB_8f61ae10:
iVar4 = FUN_8f61acb0((int)uVar5,(int)((ulonglong)uVar5 >> 0x20));
if (iVar4 != 0) {
uRam000790c4 = 0;
}
_DAT_000790b4 = 0x22;
FUN_8f6104fc(0x96);
if ((_DAT_0193f044 & 1) != 0) {
uRam00079004 = 0x80;
}
uVar6 = FUN_8f6104fc(100);
if (((uint)_DAT_00079038 & 0x20) == 0) {
iVar4 = 99;
do {
uVar6 = FUN_8f6104fc(5);
uVar1 = uVar6 & 0xffffffff | ZEXT48(_DAT_00079038) << 0x20;
if (((uint)_DAT_00079038 & 0x20) != 0) goto LAB_8f61ae90;
iVar4 = iVar4 + -1;
} while (iVar4 != 0);
if (piVar3 == DAT_8f69d118) {
dprintf((byte *)s_QUSB2PHY_failed_to_lock___d_8f660b18,_DAT_00079038,piVar3,DAT_8f69d118);
return;
}
}
else {
LAB_8f61ae90:
uVar1 = uVar6;
if (piVar3 == DAT_8f69d118) {
return;
}
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar1,(int)(uVar1 >> 0x20),piVar3);
}
// WARNING: Removing unreachable block (ram,0x8f61af50)
void FUN_8f61af10(undefined4 *param_1,undefined4 param_2)
{
int *piVar1;
int *piVar2;
int iVar3;
int iVar4;
undefined4 uVar5;
undefined4 uVar6;
undefined8 uVar7;
piVar1 = DAT_8f69d118;
DAT_8f68a19c = param_1[2];
DAT_8f68a184 = *param_1;
DAT_8f68a188 = param_1[1];
DAT_8f68a1fc = *(undefined *)(param_1 + 7);
DAT_8f68a1b6 = *(undefined *)((int)param_1 + 0x1d);
DAT_8f68a1a5 = 1;
DAT_8f68a1b0 = (undefined2)param_1[5];
uVar7 = FUN_8f619f10(param_1[5],1,DAT_8f68a188);
DAT_8f68a1a8 = (undefined4)uVar7;
DAT_8f68a1ba = *(undefined *)((int)param_1 + 0x1f);
DAT_8f68a1ce = *(byte *)((int)param_1 + 0x1e);
DAT_8f68a1bd = 0;
DAT_8f68a1c8 = (undefined2)param_1[6];
DAT_8f68a1c0 = FUN_8f619f10(param_1[6],(int)((ulonglong)uVar7 >> 0x20),(uint)DAT_8f68a1ce);
uVar5 = 0x7fc0;
DAT_8f68a1d2 = *(undefined *)(param_1 + 8);
DAT_8f68a1ec = 0x8000;
uVar6 = param_1[3];
DAT_8f68a1f4 = 0x7fc0;
DAT_8f68a1f0 = uVar6;
piVar2 = (int *)FUN_8f635d28(0x40,0x40);
uVar7 = FUN_8f6366a8(piVar2,0x80);
if ((int)uVar7 == 0) {
dprintf((byte *)s_Could_not_allocate_output_dump_b_8f660930,(int *)((ulonglong)uVar7 >> 0x20),
uVar5,uVar6);
}
DAT_8f68a198 = (int)uVar7;
uVar7 = FUN_8f6366a8((int *)0x40,param_1[4] * 0x10 + 0x3fU & 0xffffffc0);
iVar3 = (int)uVar7;
iVar4 = iVar3;
if (iVar3 == 0) {
iVar4 = dprintf((byte *)s_Could_not_allocate_ce_array_buff_8f660958,
(int *)((ulonglong)uVar7 >> 0x20),uVar5,uVar6);
}
DAT_8f68a18c = iVar3;
DAT_8f68a190 = 0;
DAT_8f68a194 = 0;
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar4,piVar1,DAT_8f69d118);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f61af90)
void FUN_8f61af54(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
FUN_8f619ff0(&DAT_8f68a19c,(int *)(DAT_8f68a184 + 0x100),0,2);
FUN_8f612690(&DAT_8f68a19c,0);
FUN_8f612690(&DAT_8f68a19c,1);
FUN_8f636758(DAT_8f68a198);
FUN_8f636758(DAT_8f68a18c);
uVar2 = FUN_8f636758(DAT_8f68a1a8);
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
FUN_8f636758(DAT_8f68a1c0);
return;
}
// WARNING: Removing unreachable block (ram,0x8f61afd4)
void FUN_8f61af94(undefined4 param_1,undefined4 param_2)
{
FUN_8f603e98((int *)(uint)(byte)DAT_8f68a188);
return;
}
// WARNING: Removing unreachable block (ram,0x8f61b008)
void FUN_8f61afd8(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f61b04c(uint *param_1,uint param_2,uint param_3,uint param_4,int param_5)
{
int *piVar1;
int *piVar2;
undefined4 uVar3;
if (param_4 != 0) {
param_4 = 1;
}
param_1[0x14] = param_4;
piVar1 = DAT_8f69d118;
if (param_5 != 0) {
param_4 = param_1[0x14];
}
param_1[0x13] = param_2;
if (param_5 != 0) {
param_1[0x14] = param_4 | 2;
}
uVar3 = FUN_8f61a308(&DAT_8f68a184,param_1,param_3);
piVar2 = DAT_8f69d118;
param_1[0x14] = 0;
if (piVar1 != piVar2) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,0,piVar1);
}
return;
}
void FUN_8f61b0c0(int *param_1,uint param_2,undefined4 param_3,undefined4 param_4,
undefined4 *param_5)
{
int *piVar1;
bool bVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
uVar3 = FUN_8f61a4c8((int **)&DAT_8f68a184,param_1,param_2);
bVar2 = piVar1 == DAT_8f69d118;
*param_5 = (int)uVar3;
if (bVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),piVar1);
}
void FUN_8f61b110(undefined4 *param_1,undefined4 *param_2,int param_3)
{
int *piVar1;
bool bVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
uVar3 = FUN_8f61a7c8((int)&DAT_8f68a184,param_1,param_3);
bVar2 = piVar1 == DAT_8f69d118;
*param_2 = (int)uVar3;
if (bVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f61a8e8)
// WARNING: Removing unreachable block (ram,0x8f61b19c)
void FUN_8f61b15c(uint *param_1,undefined4 param_2)
{
int iVar1;
uint uVar2;
iVar1 = DAT_8f68a198;
uVar2 = *(uint *)(DAT_8f68a198 + 0x40);
*param_1 = uVar2 << 0x18 | (uVar2 >> 8 & 0xff) << 0x10 | (uVar2 >> 0x10 & 0xff) << 8 |
uVar2 >> 0x18;
uVar2 = *(uint *)(iVar1 + 0x44);
param_1[1] = uVar2 << 0x18 | (uVar2 >> 8 & 0xff) << 0x10 | (uVar2 >> 0x10 & 0xff) << 8 |
uVar2 >> 0x18;
return;
}
// WARNING: Removing unreachable block (ram,0x8f61a92c)
// WARNING: Removing unreachable block (ram,0x8f61b1dc)
void FUN_8f61b1a0(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61b1e0(uint param_1,uint *param_2,uint **param_3)
{
uint uVar1;
int *piVar2;
uint uVar3;
int iVar4;
piVar2 = DAT_8f69d118;
uVar1 = _DAT_01a01000;
uVar3 = (uint)*(byte *)(param_1 + 0x94);
if (uVar3 != 0) {
if (*(char *)(param_1 + 0x28b) == '\0') {
iVar4 = *(int *)(param_1 + 0x24);
uVar3 = 1 - *(byte *)(param_1 + 0x95);
if (1 < *(byte *)(param_1 + 0x95)) {
uVar3 = 0;
}
goto joined_r0x8f61b22c;
}
uVar3 = 0;
}
iVar4 = *(int *)(param_1 + 0x24);
joined_r0x8f61b22c:
if (iVar4 == 1) {
if (uVar3 == 0) {
uVar3 = 0x2048;
}
else {
uVar3 = 0x20d8;
}
*param_2 = uVar3 | 0x20000;
*param_3 = (uint *)0x24090;
if (*(char *)(param_1 + 0x97) != '\0') {
*param_2 = *param_2 | 0x10;
}
}
else if (iVar4 == 2) {
if (uVar3 == 0) {
uVar3 = 0x2840;
}
else {
uVar3 = 0x38c0;
}
*param_2 = uVar3 | 0x20000;
*param_3 = (uint *)0x25080;
if (*(char *)(param_1 + 0x97) != '\0') {
*param_2 = *param_2 | 0x1000;
}
}
else {
if (uVar3 == 0) {
uVar3 = 0x2041;
}
else {
uVar3 = 0x20c3;
}
*param_2 = uVar3 | 0x20000;
*param_3 = (uint *)0x24082;
if (*(char *)(param_1 + 0x97) != '\0') {
*param_2 = *param_2 | 2;
}
}
if (((uVar1 & 0xfffbffff) == 0x10080000 || uVar1 == 0x10060000) || (uVar1 == 0x100b0000)) {
if (*(int *)(param_1 + 0x1c) == 2) {
param_1 = *param_2 | 0x80000000;
*param_2 = param_1;
param_2 = (uint *)((uint)*param_3 | 0x40000000);
}
else {
param_1 = *param_2 | 0x40000000;
*param_2 = param_1;
param_2 = (uint *)((uint)*param_3 | 0x80000000);
}
*param_3 = param_2;
}
else if ((((uVar1 == 0x10090000 || uVar1 == 0x10050000) || (uVar1 >> 0x10 == 0x1007)) ||
(uVar1 == 0x10100000)) || ((uVar1 & 0xfffbffff) == 0x100a0000 || uVar1 == 0x100f0000)) {
if (*(int *)(param_1 + 0x1c) == 2) {
param_1 = *param_2 | 0x20000000;
*param_2 = param_1;
param_2 = (uint *)((uint)*param_3 | 0x40000000);
}
else {
param_1 = *param_2 | 0x40000000;
*param_2 = param_1;
param_2 = (uint *)((uint)*param_3 | 0x20000000);
}
*param_3 = param_2;
}
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1,param_2,piVar2);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61b3fc(uint *param_1,uint *param_2,uint *param_3)
{
uint uVar1;
int *piVar2;
uint uVar3;
undefined4 uVar4;
uint uVar5;
uint uVar6;
uint uVar7;
uint uVar8;
bool bVar9;
piVar2 = DAT_8f69d118;
uVar5 = param_2[0xb];
uVar3 = ((param_1[2] - uVar5) - param_2[0xc]) * 0x10000;
uVar6 = uVar3 | (param_1[1] - param_2[0xd]) - param_2[0xe];
uVar8 = uVar6;
if (*(char *)(param_2 + 0x25) == '\0') {
LAB_8f61b494:
uVar3 = param_1[3] * param_1[4] >> 3;
}
else {
if ((param_3 != (uint *)0x1a27000) && (((uint)param_3 & 0xfffeffff) != 0x1a07000)) {
uVar8 = uVar3 + param_2[0xf];
goto LAB_8f61b494;
}
uVar7 = *param_2;
uVar1 = uVar7 >> 1;
bVar9 = uVar1 != 0;
if (bVar9) {
uVar7 = uVar5 << 0x10;
}
uVar8 = uVar3 + param_2[0x10];
if (bVar9) {
uVar5 = uVar7 | uVar1;
}
uVar3 = param_1[3] * param_1[4] >> 3;
if (bVar9) goto LAB_8f61b4ac;
}
uVar5 = param_2[0xd] | uVar5 << 0x10;
uVar7 = uVar5;
LAB_8f61b4ac:
param_3[5] = *param_1;
param_3[9] = uVar3;
param_3[1] = uVar6;
*param_3 = uVar8;
param_3[3] = uVar8;
param_3[2] = uVar5;
param_3[4] = uVar7;
param_3[0xc] = 0x2243f;
param_3[0xd] = 0x20001;
if ((param_2[6] & 1) == 0) {
uVar3 = 0;
}
else {
uVar3 = 0x2000;
}
if ((param_2[6] & 2) != 0) {
uVar3 = uVar3 | 0x4000;
}
if ((((_DAT_01a01000 >> 0x10 == 0x1007) || (_DAT_01a01000 >> 0x10 == 0x100e)) ||
(_DAT_01a01000 >> 0x10 == 0x1010)) || (uVar4 = 0x100f, _DAT_01a01000 >> 0x10 == 0x100f)) {
param_3[0x42] = uVar8;
uVar4 = 0x200000;
param_3[0x46] = uVar8;
uVar3 = uVar3 | 0x80000000;
param_3[0x4a] = uVar8;
param_3[0x84] = 0x200000;
param_3[0x85] = 0x200000;
param_3[0x86] = 0x200000;
param_3[0x87] = 0x200000;
}
param_3[0xe] = uVar3;
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,uVar4,piVar2);
}
void FUN_8f61b5ac(uint param_1,uint *param_2,uint *param_3,int param_4)
{
int *piVar1;
uint *puVar2;
uint uVar3;
uint uVar4;
uint *puVar5;
uint uVar6;
piVar1 = DAT_8f69d118;
if (param_3 < param_2) {
uVar4 = param_1;
uVar6 = 1;
while (uVar6 != (int)param_2 - (int)param_3) {
uVar3 = uVar6 + 1;
uVar4 = uVar4 | param_1 << (uVar6 % 3) * 8;
uVar6 = uVar3;
if (uVar3 % 3 == 0) {
puVar2 = (uint *)(param_4 + 0x1a01080);
puVar5 = (uint *)(param_4 + 0x1a01130);
param_4 = param_4 + 4;
*puVar2 = uVar4;
*puVar5 = uVar4;
uVar4 = uVar3 % 3;
}
}
param_2 = (uint *)(uVar6 * -0x55555555);
if (uVar6 % 3 != 0) {
param_2 = (uint *)(param_4 + 0x1a01080);
*param_2 = uVar4;
*(uint *)(param_4 + 0x1a01130) = uVar4;
param_4 = param_4 + 4;
}
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(param_4,param_2,piVar1);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61b69c(void)
{
int *piVar1;
int *piVar2;
undefined4 uVar3;
piVar1 = DAT_8f69d118;
piVar2 = (int *)0x10080000;
if (_DAT_01a01000 == 0x10080000 || _DAT_01a01000 == 0x100b0000) {
uVar3 = 0x1420;
}
else {
uVar3 = 0;
piVar2 = (int *)0x100a0000;
if (_DAT_01a01000 == 0x100a0000) {
uVar3 = 0x1334;
}
else {
piVar2 = (int *)0x1007;
if (_DAT_01a01000 >> 0x10 == 0x1007) {
uVar3 = 0x1330;
}
else {
dprintf((byte *)s_Invalid_PPB0_CONFIG_offset_8f660b34,DAT_8f69d118,0x1007,_DAT_01a01000);
}
}
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,piVar1,piVar2);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61b73c(int param_1,int param_2,int param_3)
{
int *piVar1;
uint *puVar2;
int *piVar3;
int iVar4;
int *piVar5;
uint uVar6;
uint *puVar7;
uint *puVar8;
uint uVar9;
int *in_lr;
int iVar10;
undefined8 uVar11;
uint local_3c;
uint local_38;
piVar1 = DAT_8f69d118;
if (_DAT_01a01000 == 0x10060000 || _DAT_01a01000 == 0x100c0000) {
iVar4 = *(int *)(param_1 + 0x24);
puVar7 = (uint *)0x0;
iVar10 = 0x1fff;
uVar9 = 0x2000;
puVar8 = (uint *)0x0;
}
else {
puVar7 = (uint *)0x0;
if (_DAT_01a01000 == 0x10080000 || _DAT_01a01000 == 0x100b0000) {
iVar4 = *(int *)(param_1 + 0x24);
iVar10 = 0x27ff;
uVar9 = 0x2800;
puVar8 = puVar7;
}
else {
puVar7 = (uint *)0x0;
if (_DAT_01a01000 + 0xeffd0000 < 0xffd0000) {
iVar4 = *(int *)(param_1 + 0x24);
iVar10 = 0x1fff;
uVar9 = 0x2000;
puVar8 = (uint *)0xc;
if (iVar4 == 1) {
iVar4 = 1;
puVar7 = (uint *)0x2;
}
else {
puVar7 = (uint *)0x0;
}
}
else {
iVar10 = 0xfff;
iVar4 = *(int *)(param_1 + 0x24);
uVar9 = 0x1000;
puVar8 = puVar7;
}
}
}
uVar6 = _DAT_01a01000 >> 0x10;
if (((uVar6 == 0x1006 || uVar6 == 0x1001) || (uVar6 == 0x1008)) || (uVar6 - 0x100b < 2)) {
if (iVar4 == 1) {
local_38 = 8;
local_3c = 7;
}
else if (iVar4 == 2) {
local_38 = 0xd;
local_3c = 4;
}
else {
local_38 = 9;
local_3c = 1;
}
}
else if (iVar4 == 1) {
local_38 = 0x11;
local_3c = 0x10;
}
else if (iVar4 == 2) {
local_38 = 0xd;
local_3c = 10;
}
else {
local_38 = 4;
local_3c = 1;
}
uVar6 = (uint)*(byte *)(param_1 + 0x94);
if (uVar6 == 0) {
iVar4 = 0x3000;
}
else {
iVar4 = *(int *)(param_1 + 0x3c) * 6;
}
puVar2 = (uint *)FUN_8f6582ac(iVar4 + iVar10,uVar9);
if (&DAT_00000004 < puVar2) {
dprintf((byte *)s_ERROR___s__Out_of_SMP_s__cnt__d__8f660b50,(int *)s_mdss_smp_setup_8f660b90,
puVar2,uVar6);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_mdp5_c_8f660b74,0x1dc);
}
*(int *)(param_2 + 0x50) = (int)puVar2 << 6;
*(int *)(param_2 + 0x54) = (int)puVar2 << 7;
*(int *)(param_2 + 0x58) = (int)puVar2 * 0xc0;
if (*(char *)(param_1 + 0x94) != '\0') {
puVar2 = (uint *)FUN_8f6582ac((uVar9 + *(int *)(param_1 + 0x40) * 6) - 1,uVar9);
*(int *)(param_3 + 0x50) = (int)puVar2 << 6;
*(int *)(param_3 + 0x54) = (int)puVar2 << 7;
*(int *)(param_3 + 0x58) = (int)puVar2 * 0xc0;
}
uVar11 = FUN_8f61b5ac(local_3c,puVar2,puVar7,(int)puVar8);
if (*(char *)(param_1 + 0x94) == '\0') {
piVar3 = (int *)((ulonglong)uVar11 >> 0x20);
piVar5 = piVar1;
if (piVar1 == DAT_8f69d118) {
return;
}
}
else {
piVar3 = piVar1;
piVar5 = DAT_8f69d118;
if (piVar1 == DAT_8f69d118) {
FUN_8f61b5ac(local_38,puVar2,puVar7,(int)uVar11);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar11,piVar3,piVar5);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61ba24(undefined4 param_1)
{
uint uVar1;
uint uVar2;
int *piVar3;
undefined8 uVar4;
piVar3 = DAT_8f69d118;
uVar2 = _DAT_01a01000;
uVar4 = CONCAT44(DAT_8f69d118,param_1);
uVar1 = _DAT_01a01000 >> 0x10;
if ((uVar1 != 0x1007) && (uVar4 = FUN_8f615420(1), (int)uVar4 == 0)) {
if (uVar2 < 0x10030000) {
uRam01ac8004 = 1;
}
if (uVar1 == 0x1000) {
_DAT_01ac80d8 = 0x707;
_DAT_01ac80f0 = 0x30;
_DAT_01ac8124 = 1;
_DAT_01ac8178 = 0xfff;
_DAT_01ac817c = 0xfff0fff;
uVar4 = 0x222200000001;
_DAT_01ac8160 = 0x22222222;
_DAT_01ac8164 = 0x2222;
}
else if (uVar1 == 0x1001) {
uVar4 = 0x70700000000;
_DAT_01ac80d8 = 0x707;
_DAT_01ac8124 = 3;
}
}
if (piVar3 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar3);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61bb1c(void)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
_DAT_01a012ac = 0x40000000;
FUN_8f6104fc(0x14);
_DAT_01a012ac = 0x40000040;
_DAT_01a012b4 = 0x40000000;
_DAT_01a013a8 = 0x400000;
uVar2 = FUN_8f6104fc(0x14);
_DAT_01a013a8 = 0x404000;
_DAT_01a013b0 = 0x40000000;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61bb98(uint *param_1)
{
int *piVar1;
uint uVar2;
int iVar3;
piVar1 = DAT_8f69d118;
iVar3 = param_1[0x27] - 2;
if (iVar3 != 0) {
iVar3 = 1;
}
uVar2 = *param_1;
if (iVar3 != 0) {
uVar2 = FUN_8f6582ac(uVar2,param_1[0x27]);
}
if (*(char *)((int)param_1 + 0x28b) != '\0') {
uVar2 = uVar2 >> 1;
}
_DAT_01a7103c =
param_1[0x31] << 0x10 | param_1[0x37] << 0x1c | param_1[0x34] | param_1[0x32] << 8 |
param_1[0x33] << 4;
_DAT_01a71038 = param_1[0x2f] << 8 | param_1[0x2e] << 0xc | param_1[0x30];
_DAT_01a71034 =
param_1[0x36] << 10 | param_1[0x35] << 0xb | 1 | param_1[0x28] << 8 | param_1[0x29] << 7 |
param_1[0x2a] << 4 | param_1[0x2b] << 3 | param_1[0x2c] << 2 | param_1[0x2d] << 1 |
iVar3 << 9 | uVar2 << 0x10;
if (*(char *)((int)param_1 + 0x28b) != '\0') {
uRam01a71834 = _DAT_01a71034;
uRam01a71838 = _DAT_01a71038;
uRam01a7183c = _DAT_01a7103c;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(_DAT_01a71034,_DAT_01a71038,piVar1);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f61bce8)
void FUN_8f61bcac(undefined4 param_1)
{
DAT_8f68a200 = param_1;
return;
}
// WARNING: Removing unreachable block (ram,0x8f61bd28)
void FUN_8f61bcec(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f61bdcc)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61bd2c(void)
{
return;
}
void FUN_8f61bdd0(int param_1,undefined4 *param_2,undefined4 *param_3,int *param_4,int *param_5)
{
int *piVar1;
int iVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
if (param_1 == 2) {
*param_2 = 0x10000;
*param_3 = 0x100;
iVar2 = FUN_8f61bd2c();
*param_4 = iVar2 + 0x1a12f00;
uVar3 = FUN_8f61bd2c();
*param_5 = (int)uVar3 + 0x1a12700;
}
else {
*param_2 = 0x100;
*param_3 = 0x10000;
iVar2 = FUN_8f61bd2c();
*param_4 = iVar2 + 0x1a12700;
uVar3 = FUN_8f61bd2c();
*param_5 = (int)uVar3 + 0x1a12f00;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),piVar1);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61be88(uint *param_1,int param_2)
{
char cVar1;
int *piVar2;
uint uVar3;
int iVar4;
int iVar5;
uint uVar6;
int iVar7;
uint uVar8;
uint uVar9;
uint uVar10;
uint uVar11;
int iVar12;
int iVar13;
uint uVar14;
bool bVar15;
undefined8 uVar16;
piVar2 = DAT_8f69d118;
uVar16 = CONCAT44(param_2,param_1);
if (param_1 == (uint *)0x0) goto LAB_8f61bffc;
uVar8 = *param_1;
if (*(char *)((int)param_1 + 0x95) == '\0') {
LAB_8f61bebc:
cVar1 = *(char *)((int)param_1 + 0x97);
}
else {
if (*(char *)((int)param_1 + 0x97) == '\0') {
if (*(char *)(param_1 + 0x25) != '\0') {
iVar12 = FUN_8f61bd2c();
if (iVar12 + 0x1a12700 == param_2) {
uVar8 = param_1[0xf];
}
else {
uVar8 = param_1[0x10];
}
}
}
else {
uVar8 = uVar8 >> 1;
}
iVar12 = FUN_8f61bd2c();
if (iVar12 + 0x1a12700 != param_2) goto LAB_8f61bebc;
if (*(char *)((int)param_1 + 0x96) == '\0') {
_DAT_01a013f0 = 0x100;
_DAT_01a012f8 = 0x10;
}
else {
_DAT_01a013f0 = 0x10;
_DAT_01a012f8 = 0x100;
}
_DAT_01a012f4 = 1;
cVar1 = *(char *)((int)param_1 + 0x97);
}
if ((cVar1 != '\0') && (iVar12 = FUN_8f61bd2c(), iVar12 + 0x1a12700 == param_2)) {
iVar12 = FUN_8f61b69c();
*(undefined4 *)(iVar12 + 0x1a00000) = 0x20;
*(undefined4 *)(iVar12 + 0x1a00004) = 0x310000;
}
if ((param_1[0x26] == 0) || (uVar3 = param_1[0x27], uVar3 == 0)) {
uVar3 = 1;
param_1[0x27] = 1;
}
uVar6 = param_1[1];
if (param_1[8] == 1) {
uVar8 = param_1[0x51];
}
else {
uVar8 = FUN_8f6582ac(uVar8 + param_1[0x23],uVar3);
}
uVar11 = param_1[0x1c];
uVar10 = param_1[0x1f];
uVar9 = uVar11 + param_1[0x1a];
iVar12 = uVar10 + param_1[0x1d];
uVar3 = param_1[0x1b];
uVar14 = param_1[0x1e];
iVar4 = uVar6 + param_1[0x24] + iVar12;
iVar7 = uVar8 + uVar9 + uVar3;
iVar13 = iVar12 * iVar7 + param_1[0x22];
iVar5 = iVar4 * iVar7 + (param_1[0x22] - 1);
iVar12 = FUN_8f61bd2c();
*(uint *)(param_2 + 8) = uVar11 | iVar7 * 0x10000;
*(uint *)(param_2 + 0xc) = (iVar4 + uVar14) * iVar7;
bVar15 = iVar12 + 0x1a12500 == param_2;
if (bVar15) {
iVar13 = iVar13 + uVar9;
}
*(undefined4 *)(param_2 + 0x10) = 0;
if (bVar15) {
iVar5 = iVar5 - uVar3;
}
*(uint *)(param_2 + 0x14) = uVar10 * iVar7;
*(undefined4 *)(param_2 + 0x18) = 0;
*(uint *)(param_2 + 0x3c) = uVar9 | (uVar8 + uVar9 + -1) * 0x10000;
*(int *)(param_2 + 0x1c) = iVar13;
*(undefined4 *)(param_2 + 0x20) = 0;
*(int *)(param_2 + 0x24) = iVar5;
*(undefined4 *)(param_2 + 0x28) = 0;
*(undefined4 *)(param_2 + 0x40) = 0;
*(undefined4 *)(param_2 + 0x2c) = 0;
*(undefined4 *)(param_2 + 0x30) = 0;
*(undefined4 *)(param_2 + 0x34) = 0;
*(undefined4 *)(param_2 + 0x38) = 0;
*(undefined4 *)(param_2 + 0x48) = 0xff;
uVar16 = FUN_8f61bd2c();
if ((int)uVar16 + 0x1a12500 == param_2) {
*(undefined4 *)((int)uVar16 + 0x1a12590) = 0x212a;
}
else {
*(undefined4 *)(param_2 + 0x90) = 0x213f;
}
LAB_8f61bffc:
if (piVar2 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar16,(int)((ulonglong)uVar16 >> 0x20),piVar2);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61c0f0(uint *param_1,int param_2)
{
int *piVar1;
uint uVar2;
int iVar3;
uint uVar4;
undefined4 uVar5;
uint uVar6;
uint uVar7;
bool bVar8;
piVar1 = DAT_8f69d118;
iVar3 = param_2;
if (((param_1 != (uint *)0x0) && (0x1004ffff < _DAT_01a01000)) &&
(uVar6 = param_1[0x1f] + param_1[0x1d], uVar6 < 0x19)) {
uVar2 = *param_1;
if (*(char *)((int)param_1 + 0x95) != '\0') {
if (*(char *)((int)param_1 + 0x97) == '\0') {
if (*(char *)(param_1 + 0x25) != '\0') {
uVar2 = FUN_8f61bd2c();
bVar8 = param_2 == uVar2 + 0x1a12700;
if (bVar8) {
uVar2 = param_1[0xf];
}
uVar6 = param_1[0x1d] + param_1[0x1f];
if (!bVar8) {
uVar2 = param_1[0x10];
}
}
}
else {
uVar2 = uVar2 >> 1;
}
}
if (param_1[8] == 1) {
uVar2 = param_1[0x51];
}
else if (((param_1[8] == 2) && (param_1[0x26] != 0)) && (param_1[0x27] != 0)) {
uVar2 = FUN_8f6582ac(uVar2,param_1[0x27]);
}
uVar4 = param_1[0x1e];
uVar7 = 0x19 - uVar6;
if (uVar4 <= 0x19 - uVar6) {
uVar7 = uVar4;
}
iVar3 = param_1[0x1a] + param_1[0x1c] + param_1[0x1b];
uVar5 = 0x80800000;
if (param_1[0xc0] == 0) {
uVar5 = 0x80000000;
}
param_1 = (uint *)(((uVar4 + param_1[1] + uVar6) - uVar7) * (iVar3 + uVar2) + 1);
*(uint **)(param_2 + 0x170) = param_1;
*(undefined4 *)(param_2 + 4) = uVar5;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1,iVar3,piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f61c394)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61c24c(int param_1,int param_2)
{
uint uVar1;
uint uVar2;
uint uVar3;
uint uVar4;
uVar3 = *(uint *)(param_1 + 4);
if ((*(char *)(param_2 + 0x94) != '\0') && (*(char *)(param_2 + 0x97) == '\0')) {
uVar3 = *(uint *)(param_2 + 0x3c);
}
uVar1 = *(int *)(param_1 + 8) << 0x10;
_DAT_01a45004 = uVar3 | uVar1;
_DAT_01a45000 = 0;
_DAT_01a45020 = 0x100;
_DAT_01a45024 = 0xff;
_DAT_01a45050 = 0x100;
_DAT_01a45054 = 0xff;
_DAT_01a45080 = 0x100;
_DAT_01a45084 = 0xff;
_DAT_01a450b0 = 0x100;
_DAT_01a450b4 = 0xff;
if (*(int *)(param_2 + 0x24) == 1) {
uVar3 = 0x1000;
_DAT_01a02000 = 0x200;
}
else if (*(int *)(param_2 + 0x24) == 2) {
uVar3 = 0x200000;
_DAT_01a02000 = 0x40000;
}
else {
uVar3 = 8;
_DAT_01a02000 = 1;
}
if ((*(char *)(param_2 + 0x94) != '\0') && (*(char *)(param_2 + 0x97) != '\0')) {
_DAT_01a02000 = _DAT_01a02000 | uVar3;
}
uVar2 = uRam01a02204;
if ((*(char *)(param_2 + 0x94) != '\0') && (uVar4 = (uint)*(byte *)(param_2 + 0x97), uVar4 == 0))
{
_DAT_01a46004 = uVar1 | *(uint *)(param_2 + 0x40);
_DAT_01a46020 = 0x100;
_DAT_01a46024 = 0xff;
_DAT_01a46050 = 0x100;
_DAT_01a46054 = 0xff;
_DAT_01a46080 = 0x100;
_DAT_01a46084 = 0xff;
_DAT_01a460b0 = 0x100;
_DAT_01a460b4 = 0xff;
uVar2 = uVar3;
_DAT_01a46000 = uVar4;
if (*(char *)(param_2 + 0x95) == '\0') {
uRam01a02004 = uVar3;
uVar2 = uRam01a02204;
}
}
uRam01a02204 = uVar2;
return;
}
// WARNING: Removing unreachable block (ram,0x8f61c464)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61c398(int param_1)
{
uint uVar1;
uint uVar2;
bool bVar3;
uVar1 = _DAT_01a01000 >> 0x10;
uVar2 = uVar1 & 0xfffffffd;
if (uVar2 == 0x1000) {
_DAT_01a011e0 = 0xe9;
}
else if (uVar1 == 0x1001) {
_DAT_01a011e0 = 0xa5;
}
else if ((uVar1 == 0x1008 || uVar1 == 0x1006) || (uVar1 - 0x100b < 2)) {
_DAT_01a011e0 = 0xe4;
}
else {
bVar3 = 0x1004 < uVar2;
if (uVar2 != 0x1005) {
bVar3 = uVar1 != 0x1009;
}
if (bVar3 && (uVar2 != 0x1005 && uVar1 != 0x100a)) {
if (uVar1 == 0x1003) {
_DAT_01a011e0 = 0xfa;
}
}
else {
_DAT_01a011e0 = 0xa4;
}
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61c468(int param_1)
{
char cVar1;
int iVar2;
int iVar3;
uint uVar4;
uint uVar5;
int *piVar6;
int iVar7;
int unaff_r9;
bool bVar8;
int local_34;
int local_30 [3];
int *local_24;
iVar7 = *(int *)(param_1 + 0x24);
local_24 = DAT_8f69d118;
if (iVar7 == 1) {
unaff_r9 = 5;
}
local_34 = 0;
local_30[0] = 0;
local_30[1] = 0;
local_30[2] = 0;
if (iVar7 != 1) {
if (iVar7 == 2) {
unaff_r9 = 10;
iVar7 = 2;
}
else {
unaff_r9 = 4;
iVar7 = 0;
}
}
uVar4 = _DAT_01a01000 >> 0x10;
if ((uVar4 == 0x1008 || uVar4 == 0x1006) || (uVar4 - 0x100b < 2)) {
local_34 = 2;
iVar2 = 2;
local_30[0] = 2;
local_30[1] = 2;
local_30[2] = 2;
}
else {
uVar5 = uVar4 & 0xfffffffd;
iVar2 = 0x1005;
bVar8 = 0x1004 < uVar5;
if (uVar5 != 0x1005) {
bVar8 = uVar4 != 0x1009;
}
if (bVar8 && (uVar5 != 0x1005 && uVar4 != 0x100a)) goto LAB_8f61c504;
iVar2 = 1;
local_30[1] = 2;
local_34 = 1;
local_30[0] = 2;
local_30[2] = 2;
}
local_30[2] = 2;
local_30[1] = 2;
local_30[0] = 2;
if (((_DAT_01a01000 & 0xfffaffff) == 0x100a0000) || (_DAT_01a01000 == 0x10100000)) {
iVar3 = 0x1ab0020;
}
else {
iVar3 = 0x1ac8020;
if (_DAT_01a01000 >> 0x10 == 0x1007) {
iVar3 = 0x1ab0000;
}
}
piVar6 = &local_34;
cVar1 = *(char *)(param_1 + 0x94);
param_1 = iVar3 - (int)piVar6;
while( true ) {
uVar4 = *(uint *)(param_1 + (int)piVar6) & ~(3 << (iVar7 << 1 & 0xffU)) |
iVar2 << (iVar7 << 1 & 0xffU);
if (cVar1 != '\0') {
uVar4 = uVar4 & ~(3 << (unaff_r9 << 1 & 0xffU)) | iVar2 << (unaff_r9 << 1 & 0xffU);
}
*(uint *)(param_1 + (int)piVar6) = uVar4;
if (piVar6 == local_30 + 2) break;
piVar6 = piVar6 + 1;
iVar2 = *piVar6;
}
LAB_8f61c504:
if (local_24 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(param_1,iVar2,local_24);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61c5fc(uint *param_1,uint *param_2)
{
undefined4 uVar1;
int iVar2;
uint uVar3;
uint *puVar4;
uint *puVar5;
code *pcVar6;
uint local_2c;
uint local_28;
int local_24;
int local_20;
int *local_1c;
local_1c = DAT_8f69d118;
FUN_8f61bdd0(param_1[7],&local_2c,&local_28,&local_24,&local_20);
FUN_8f61be88(param_1,local_24);
uVar1 = FUN_8f61c0f0(param_1,local_24);
if (*(char *)((int)param_1 + 0x28b) != '\0') {
FUN_8f61be88(param_1,local_20);
uVar1 = FUN_8f61c0f0(param_1,local_20);
}
if (_DAT_01a01000 >> 0x10 != 0x1007) {
uVar1 = FUN_8f61bb1c();
}
if (param_1[9] == 1) {
puVar5 = (uint *)0x1a17000;
puVar4 = (uint *)0x1a15000;
}
else {
puVar4 = (uint *)0x1a25000;
puVar5 = (uint *)0x1a27000;
if (param_1[9] != 2) {
puVar4 = (uint *)0x1a05000;
puVar5 = (uint *)0x1a07000;
}
}
iVar2 = FUN_8f61ba24(uVar1);
if ((((_DAT_01a01000 >> 0x10 != 0x1007) && (_DAT_01a01000 >> 0x10 != 0x100e)) &&
(_DAT_01a01000 >> 0x10 != 0x1010)) && (_DAT_01a01000 >> 0x10 != 0x100f)) {
iVar2 = FUN_8f61b73c((int)param_1,(int)puVar4,(int)puVar5);
}
FUN_8f61c398(iVar2);
FUN_8f61c468((int)param_1);
FUN_8f61b3fc(param_2,param_1,puVar4);
if (*(char *)(param_1 + 0x25) != '\0') {
FUN_8f61b3fc(param_2,param_1,puVar5);
}
FUN_8f61c24c((int)param_2,(int)param_1);
if (param_1[7] == 2) {
_DAT_01a02014 = 0x1f30;
uVar3 = 0x30;
}
else {
_DAT_01a02014 = 0x1f30;
param_1[7] = 1;
if (*(char *)((int)param_1 + 0x96) == '\0') {
_DAT_01a02014 = 0x1f20;
uVar3 = 0x20;
}
else {
uVar3 = 0x30;
}
}
if (((*(char *)(param_1 + 0x25) != '\0') && (*(char *)((int)param_1 + 0x28b) == '\0')) &&
((*(char *)((int)param_1 + 0x95) == '\0' && (param_1[0x11] != 2)))) {
_DAT_01a02014 = uVar3 | 0x181f00;
}
uVar3 = param_1[8];
if (uVar3 != 1) {
if ((uVar3 == 2) && (param_1[0x26] != 0)) {
FUN_8f61bb98(param_1);
}
goto LAB_8f61c7a8;
}
pcVar6 = (code *)param_1[0x8d];
if (pcVar6 == (code *)0x0) goto LAB_8f61c7a8;
if (*(char *)(param_1 + 0x25) == '\0') {
LAB_8f61c91c:
(*pcVar6)(param_1,0x1a71000,0x1a81000,0,0);
}
else {
if (*(char *)((int)param_1 + 0x28b) == '\0') {
if ((*(char *)((int)param_1 + 0x95) != '\0') || (param_1[0x11] != 2)) goto LAB_8f61c91c;
}
else {
if ((*(char *)((int)param_1 + 0x95) == '\0') || (param_1[0x11] != 1)) goto LAB_8f61c91c;
uVar3 = 0;
}
(*pcVar6)(param_1,0x1a71000,0x1a81000,uVar3,uVar3);
(*(code *)param_1[0x8d])(param_1,0x1a71800,0x1a81400,uVar3,uVar3);
}
LAB_8f61c7a8:
if (*(char *)((int)param_1 + 0x28b) != '\0') {
if (*(char *)((int)param_1 + 0x97) == '\0') {
if (param_1[7] == 2) {
_DAT_01a02214 = 0x1f20;
}
else {
_DAT_01a02214 = 0x1f20;
param_1[7] = 1;
if (*(char *)((int)param_1 + 0x96) == '\0') {
_DAT_01a02214 = 0x1f30;
}
}
}
local_2c = local_28 | local_2c;
}
_DAT_01a01004 = local_2c;
_DAT_01a012e0 = 0x1111;
_DAT_01a011ec = 1;
_DAT_01a013f8 = 1;
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,0x1111,local_1c);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61c9b4(uint *param_1,uint *param_2)
{
int *piVar1;
undefined4 uVar2;
int iVar3;
uint *puVar4;
uint *puVar5;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f61be88(param_1,0x1a12500);
if (param_1[9] == 1) {
puVar5 = (uint *)0x1a17000;
puVar4 = (uint *)0x1a15000;
}
else {
puVar4 = (uint *)0x1a25000;
puVar5 = (uint *)0x1a27000;
if (param_1[9] != 2) {
puVar4 = (uint *)0x1a05000;
puVar5 = (uint *)0x1a07000;
}
}
if (_DAT_01a01000 >> 0x10 != 0x1007) {
uVar2 = FUN_8f61bb1c();
}
FUN_8f61ba24(uVar2);
iVar3 = FUN_8f61b73c((int)param_1,(int)puVar4,(int)puVar5);
FUN_8f61c398(iVar3);
FUN_8f61c468((int)param_1);
FUN_8f61b3fc(param_2,param_1,puVar4);
if (*(char *)(param_1 + 0x25) != '\0') {
FUN_8f61b3fc(param_2,param_1,puVar5);
}
FUN_8f61c24c((int)param_2,(int)param_1);
_DAT_01a02014 = 0x1f10;
if (*(char *)(param_1 + 0x25) != '\0') {
_DAT_01a02014 = 0x181f10;
}
_DAT_01a01004 = 9;
_DAT_01a012e0 = 0x1111;
_DAT_01a011ec = 1;
_DAT_01a013f8 = 1;
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(0,0x1111,piVar1);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61cb04(uint *param_1,uint *param_2)
{
int *piVar1;
int iVar2;
undefined4 uVar3;
piVar1 = DAT_8f69d118;
iVar2 = FUN_8f61bd2c();
FUN_8f61be88(param_1,iVar2 + 0x1a12b00);
iVar2 = FUN_8f61bd2c();
uVar3 = FUN_8f61c0f0(param_1,iVar2 + 0x1a12b00);
param_1[9] = 1;
if (_DAT_01a01000 >> 0x10 != 0x1007) {
uVar3 = FUN_8f61bb1c();
}
FUN_8f61ba24(uVar3);
iVar2 = FUN_8f61b73c((int)param_1,0x1a15000,0x1a17000);
FUN_8f61c398(iVar2);
FUN_8f61b3fc(param_2,param_1,(uint *)0x1a15000);
if (*(char *)(param_1 + 0x25) != '\0') {
FUN_8f61b3fc(param_2,param_1,(uint *)0x1a17000);
}
FUN_8f61c24c((int)param_2,(int)param_1);
if (*(char *)(param_1 + 0x25) == '\0') {
_DAT_01a02014 = 0x40;
}
else {
_DAT_01a02014 = 0x181f40;
}
_DAT_01a01004 = 0x3000000;
_DAT_01a012e0 = 0x11111;
_DAT_01a011ec = 1;
_DAT_01a013f8 = 1;
_DAT_01a7a400 = 1;
_DAT_01a01410 = 0;
_DAT_01a6c804 = 0;
_DAT_01a7a330 = (uint)*(ushort *)param_1 | param_1[1] << 0x10;
_DAT_01a7a300 = 0x80;
_DAT_01a7a304 = 0x3ff0000;
_DAT_01a7a200 = 0;
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(0,0,piVar1);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61cc8c(uint *param_1,uint *param_2)
{
char cVar1;
undefined4 *puVar2;
int iVar3;
undefined4 uVar4;
uint *extraout_r1;
uint *extraout_r1_00;
uint *extraout_r1_01;
uint *puVar5;
uint *puVar6;
code *pcVar7;
uint uStack_2c;
uint uStack_28;
int local_24;
int local_20;
int *local_1c;
local_1c = DAT_8f69d118;
if (param_1 == (uint *)0x0) {
uVar4 = 0xfffffff8;
}
else {
puVar2 = (undefined4 *)FUN_8f61bdd0(param_1[7],&uStack_2c,&uStack_28,&local_24,&local_20);
if (*(char *)((int)param_1 + 0x95) == '\0') {
cVar1 = *(char *)((int)param_1 + 0x97);
}
else {
if (*(char *)((int)param_1 + 0x97) == '\0') {
_DAT_01a012f8 = 2;
}
else {
_DAT_01a012f8 = 6;
}
if (*(char *)((int)param_1 + 0x96) == '\0') {
_DAT_01a012f8 = _DAT_01a012f8 | 0x100;
}
else {
_DAT_01a012f8 = _DAT_01a012f8 | 0x10;
}
_DAT_01a012f4 = 1;
cVar1 = *(char *)((int)param_1 + 0x97);
_DAT_01a013f0 = _DAT_01a012f8;
}
if (cVar1 != '\0') {
iVar3 = FUN_8f61b69c();
puVar2 = (undefined4 *)(iVar3 + 0x1a00000);
*puVar2 = 0x20;
*(undefined4 *)(iVar3 + 0x1a00004) = 0x310000;
}
if (_DAT_01a01000 >> 0x10 != 0x1007) {
puVar2 = (undefined4 *)FUN_8f61bb1c();
}
if (*(char *)((int)param_1 + 0x28b) != '\0') {
uStack_2c = uStack_28 | uStack_2c;
}
if (param_1[9] == 1) {
puVar6 = (uint *)0x1a17000;
puVar5 = (uint *)0x1a15000;
}
else {
puVar5 = (uint *)0x1a25000;
puVar6 = (uint *)0x1a27000;
if (param_1[9] != 2) {
puVar5 = (uint *)0x1a05000;
puVar6 = (uint *)0x1a07000;
}
}
_DAT_01a01004 = uStack_2c;
iVar3 = FUN_8f61ba24(puVar2);
if ((((_DAT_01a01000 >> 0x10 != 0x1007) && (_DAT_01a01000 >> 0x10 != 0x100e)) &&
(_DAT_01a01000 >> 0x10 != 0x1010)) && (_DAT_01a01000 >> 0x10 != 0x100f)) {
iVar3 = FUN_8f61b73c((int)param_1,(int)puVar5,(int)puVar6);
}
FUN_8f61c398(iVar3);
FUN_8f61c468((int)param_1);
FUN_8f61b3fc(param_2,param_1,puVar5);
if (*(char *)(param_1 + 0x25) != '\0') {
FUN_8f61b3fc(param_2,param_1,puVar6);
}
FUN_8f61c24c((int)param_2,(int)param_1);
*(undefined4 *)(local_24 + 0x90) = 0x213f;
if (param_1[7] == 2) {
param_2 = (uint *)0x30;
_DAT_01a02014 = 0x21f30;
}
else {
_DAT_01a02014 = 0x21f20;
param_1[7] = 1;
if (*(char *)((int)param_1 + 0x96) == '\0') {
param_2 = (uint *)0x20;
}
else {
param_2 = (uint *)0x30;
_DAT_01a02014 = 0x21f30;
}
}
if (((*(char *)(param_1 + 0x25) != '\0') && (*(char *)((int)param_1 + 0x28b) == '\0')) &&
((*(char *)((int)param_1 + 0x95) == '\0' && (param_1[0x11] != 2)))) {
_DAT_01a02014 = (uint)param_2 | 0x1a1f00;
}
if (param_1[8] == 1) {
pcVar7 = (code *)param_1[0x8d];
if (pcVar7 != (code *)0x0) {
if (((*(char *)(param_1 + 0x25) == '\0') || (*(char *)((int)param_1 + 0x28b) != '\0')) ||
((*(char *)((int)param_1 + 0x95) != '\0' || (param_1[0x11] != 2)))) {
(*pcVar7)(param_1,0x1a71000,0x1a81000,0,0);
param_2 = extraout_r1_01;
}
else {
(*pcVar7)(param_1,0x1a71000,0x1a81000,1,1);
(*(code *)param_1[0x8d])(param_1,0x1a71800,0x1a81400,1,1);
param_2 = extraout_r1_00;
}
}
}
else if ((param_1[8] == 2) && (param_1[0x26] != 0)) {
FUN_8f61bb98(param_1);
param_2 = extraout_r1;
}
if ((*(char *)((int)param_1 + 0x28b) == '\0') ||
(*(undefined4 *)(local_20 + 0x90) = 0x213f, *(char *)((int)param_1 + 0x97) != '\0')) {
uVar4 = 0;
}
else {
if (param_1[7] == 2) {
_DAT_01a02214 = 0x21f20;
}
else {
param_2 = (uint *)0x1;
param_1[7] = 1;
_DAT_01a02214 = 0x21f20;
if (*(char *)((int)param_1 + 0x96) == '\0') {
_DAT_01a02214 = 0x21f30;
}
}
uVar4 = 0;
}
}
if (local_1c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar4,param_2,local_1c);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61d080(uint param_1)
{
int iVar1;
undefined8 uVar2;
uint local_1c;
uint *puStack_18;
int *local_14;
local_14 = DAT_8f69d118;
FUN_8f61b1e0(param_1,&local_1c,&puStack_18);
_DAT_01a02018 = local_1c;
if ((*(char *)(param_1 + 0x94) != '\0') && (*(char *)(param_1 + 0x97) == '\0')) {
puRam01a02218 = puStack_18;
}
iVar1 = 0x1a12f00;
if (*(int *)(param_1 + 0x1c) == 1) {
iVar1 = 0x1a12700;
}
uVar2 = FUN_8f61bd2c();
*(undefined4 *)((int)uVar2 + iVar1) = 1;
if (local_14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,(int)((ulonglong)uVar2 >> 0x20),local_14);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61d124(int param_1)
{
int *piVar1;
int iVar2;
undefined4 extraout_r1;
undefined4 uVar3;
int iVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
iVar4 = 0x1a12f00;
if (*(int *)(param_1 + 0x1c) == 1) {
iVar4 = 0x1a12700;
}
uVar5 = FUN_8f60106c(*(int *)(param_1 + 0x1c),DAT_8f69d118);
uVar3 = (undefined4)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 == 0) {
iVar2 = FUN_8f61bd2c();
*(undefined4 *)(iVar2 + iVar4) = 0;
FUN_8f6104a8(0x3c);
_DAT_01a01018 = 0xff777713;
uVar3 = extraout_r1;
}
_DAT_01a01010 = 0;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,uVar3,piVar1);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61d1b8(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f60106c(param_1,param_2);
if ((int)uVar2 == 0) {
_DAT_01a01018 = 0xff777713;
}
_DAT_01a01010 = 0;
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(0,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61d218(uint param_1)
{
byte bVar1;
uint extraout_r1;
uint uVar2;
uint extraout_r1_00;
uint local_1c;
uint *puStack_18;
int *local_14;
local_14 = DAT_8f69d118;
FUN_8f61b1e0(param_1,&local_1c,&puStack_18);
_DAT_01a02018 = local_1c;
if ((*(char *)(param_1 + 0x94) != '\0') && (*(char *)(param_1 + 0x97) == '\0')) {
puRam01a02218 = puStack_18;
}
uVar2 = extraout_r1;
if ((*(char *)(param_1 + 0x514) != '\0') && (*(int *)(param_1 + 0xc) == 9)) {
bVar1 = *(byte *)(param_1 + 0x27b);
uVar2 = (uint)bVar1 *
(*(int *)(param_1 + 0x74) + *(int *)(param_1 + 0x78) + *(int *)(param_1 + 0x7c) +
*(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x30) + *(int *)(param_1 + 4));
if (uVar2 == 0) {
_DAT_01a71004 = 0x80000;
}
else {
uVar2 = FUN_8f6582ac(19200000,uVar2);
_DAT_01a71004 = (uVar2 * (uint)bVar1 * 100) / 6000 | 0x80000;
uVar2 = extraout_r1_00;
}
if (*(char *)(param_1 + 0x97) != '\0') {
uRam01a73004 = _DAT_01a71004;
}
if (*(char *)(param_1 + 0x94) != '\0') {
uRam01a71804 = _DAT_01a71004;
}
DataSynchronizationBarrier(0xf);
_DAT_01a71030 = *(uint *)(param_1 + 0x518) | 0x80000000;
if (*(char *)(param_1 + 0x97) != '\0') {
uRam01a73030 = *(uint *)(param_1 + 0x518) | 0x80000000;
}
if (*(char *)(param_1 + 0x94) != '\0') {
uRam01a71830 = *(uint *)(param_1 + 0x518) | 0x80000000;
}
DataSynchronizationBarrier(0xf);
}
_DAT_01a0201c = 1;
if (local_14 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(0,uVar2,local_14);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61d3ac(uint param_1)
{
int iVar1;
uint local_14;
uint *puStack_10;
int *local_c;
local_c = DAT_8f69d118;
FUN_8f61b1e0(param_1,&local_14,&puStack_10);
_DAT_01a02018 = local_14;
iVar1 = FUN_8f61bd2c();
*(undefined4 *)(iVar1 + 0x1a12500) = 1;
if (local_c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,1,local_c);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61d418(uint param_1)
{
int iVar1;
uint local_14;
uint *puStack_10;
int *local_c;
local_c = DAT_8f69d118;
FUN_8f61b1e0(param_1,&local_14,&puStack_10);
_DAT_01a02018 = local_14;
iVar1 = FUN_8f61bd2c();
*(undefined4 *)(iVar1 + 0x1a12b00) = 1;
if (local_c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,1,local_c);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61d484(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
int iVar2;
undefined4 extraout_r1;
undefined4 uVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
uVar4 = FUN_8f60106c(param_1,param_2);
uVar3 = (undefined4)((ulonglong)uVar4 >> 0x20);
if ((int)uVar4 == 0) {
iVar2 = FUN_8f61bd2c();
*(undefined4 *)(iVar2 + 0x1a12b00) = 0;
FUN_8f6104a8(0x3c);
_DAT_01a01018 = 0xff777713;
uVar3 = extraout_r1;
}
_DAT_01a01010 = 0;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,uVar3,piVar1);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61d504(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
int iVar2;
undefined4 extraout_r1;
undefined4 uVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
uVar4 = FUN_8f60106c(param_1,param_2);
uVar3 = (undefined4)((ulonglong)uVar4 >> 0x20);
if ((int)uVar4 == 0) {
iVar2 = FUN_8f61bd2c();
*(undefined4 *)(iVar2 + 0x1a12500) = 0;
FUN_8f6104a8(0x3c);
_DAT_01a01018 = 0xff777713;
uVar3 = extraout_r1;
}
_DAT_01a01010 = 0;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,uVar3,piVar1);
}
void FUN_8f61d588(undefined4 param_1,undefined4 param_2)
{
uint *puVar1;
int *piVar2;
uint uVar3;
undefined4 extraout_r1;
undefined4 uVar4;
int *piVar5;
code *pcVar6;
bool bVar7;
undefined8 uVar8;
piVar2 = DAT_8f69d118;
puVar1 = DAT_8f68a204;
if (DAT_8f68a204 == (uint *)0x0) {
switchD_8f61d5c8_caseD_4:
uVar8 = CONCAT44(param_2,0xfffffff8);
goto LAB_8f61d614;
}
FUN_8f61bcac(DAT_8f68a204[0x14f]);
param_2 = extraout_r1;
switch(puVar1[3]) {
case 3:
case 0xb:
uVar8 = FUN_8f6269cc(puVar1,DAT_8f68a204 + 0x147);
break;
default:
goto switchD_8f61d5c8_caseD_4;
case 6:
uVar8 = FUN_8f61cb04(puVar1,DAT_8f68a204 + 0x147);
goto joined_r0x8f61d718;
case 8:
uVar8 = FUN_8f61bcec();
piVar5 = (int *)((ulonglong)uVar8 >> 0x20);
uVar3 = (uint)uVar8;
bVar7 = 0xc < uVar3;
if (uVar3 != 0xd) {
bVar7 = uVar3 != 5;
}
if (!bVar7 || (uVar3 == 0xd || uVar3 == 6)) {
uVar8 = FUN_8f61e73c((int)DAT_8f68a204,piVar5);
}
else {
uVar8 = FUN_8f61ec68(DAT_8f68a204,piVar5);
}
if ((int)uVar8 != 0) goto LAB_8f61d614;
if ((code *)puVar1[0x142] != (code *)0x0) {
(*(code *)puVar1[0x142])(puVar1);
}
uVar8 = FUN_8f61c5fc(puVar1,DAT_8f68a204 + 0x147);
joined_r0x8f61d718:
uVar4 = (undefined4)((ulonglong)uVar8 >> 0x20);
if ((int)uVar8 != 0) goto LAB_8f61d614;
goto LAB_8f61d648;
case 9:
uVar8 = FUN_8f61bcec();
piVar5 = (int *)((ulonglong)uVar8 >> 0x20);
uVar3 = (uint)uVar8;
bVar7 = 0xc < uVar3;
if (uVar3 != 0xd) {
bVar7 = uVar3 != 5;
}
if (!bVar7 || (uVar3 == 0xd || uVar3 == 6)) {
uVar8 = FUN_8f61e73c((int)DAT_8f68a204,piVar5);
}
else {
uVar8 = FUN_8f61ec68(DAT_8f68a204,piVar5);
}
if ((int)uVar8 != 0) goto LAB_8f61d614;
uVar8 = FUN_8f61cc8c(puVar1,DAT_8f68a204 + 0x147);
break;
case 0xc:
uVar8 = FUN_8f61c9b4(puVar1,DAT_8f68a204 + 0x147);
}
uVar4 = (undefined4)((ulonglong)uVar8 >> 0x20);
if ((int)uVar8 == 0) {
LAB_8f61d648:
pcVar6 = (code *)puVar1[0x143];
uVar8 = CONCAT44(uVar4,pcVar6);
if (pcVar6 != (code *)0x0) {
uVar8 = (*pcVar6)(puVar1);
}
}
LAB_8f61d614:
if (piVar2 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar8,(int)((ulonglong)uVar8 >> 0x20),piVar2);
}
return;
}
void FUN_8f61d73c(undefined4 param_1,undefined4 param_2)
{
uint uVar1;
int *piVar2;
code *pcVar3;
uint uVar4;
undefined4 uVar5;
int *piVar6;
bool bVar7;
undefined8 uVar8;
piVar2 = DAT_8f69d118;
if (DAT_8f68a204 == 0) {
switchD_8f61d7b0_caseD_4:
uVar8 = CONCAT44(param_2,0xfffffff8);
goto LAB_8f61d78c;
}
uVar8 = FUN_8f607f64((int *)0x2,param_2);
uVar1 = DAT_8f68a204;
if ((*(code **)(DAT_8f68a204 + 0x4fc) != (code *)0x0) &&
(uVar8 = (**(code **)(DAT_8f68a204 + 0x4fc))(), (int)uVar8 != 0)) goto LAB_8f61d78c;
param_2 = (undefined4)((ulonglong)uVar8 >> 0x20);
switch(*(undefined4 *)(uVar1 + 0xc)) {
case 3:
uVar8 = FUN_8f626a3c(DAT_8f68a204,param_2);
goto joined_r0x8f61d830;
default:
goto switchD_8f61d7b0_caseD_4;
case 6:
uVar8 = FUN_8f626ca0((int)uVar8,param_2);
if ((int)uVar8 != 0) goto LAB_8f61d78c;
uVar8 = FUN_8f61d418(uVar1);
joined_r0x8f61d830:
uVar5 = (undefined4)((ulonglong)uVar8 >> 0x20);
if ((int)uVar8 != 0) goto LAB_8f61d78c;
goto LAB_8f61d7f0;
case 8:
uVar8 = FUN_8f61d080(uVar1);
if (((int)uVar8 != 0) ||
(uVar8 = FUN_8f61e900(DAT_8f68a204,(int *)((ulonglong)uVar8 >> 0x20)), (int)uVar8 != 0))
goto LAB_8f61d78c;
uVar8 = FUN_8f61eb14(uVar1);
break;
case 9:
uVar8 = FUN_8f61d218(uVar1);
if ((int)uVar8 != 0) goto LAB_8f61d78c;
uVar8 = FUN_8f61bcec();
piVar6 = (int *)((ulonglong)uVar8 >> 0x20);
uVar4 = (uint)uVar8;
bVar7 = 0xc < uVar4;
if (uVar4 != 0xd) {
bVar7 = uVar4 != 5;
}
if (bVar7 && (uVar4 != 0xd && uVar4 != 6)) {
uVar8 = FUN_8f61ec30(uVar4,piVar6);
piVar6 = (int *)((ulonglong)uVar8 >> 0x20);
if ((int)uVar8 != 0) goto LAB_8f61d78c;
}
uVar8 = FUN_8f61e900(DAT_8f68a204,piVar6);
break;
case 0xb:
uVar8 = FUN_8f626a3c(DAT_8f68a204,param_2);
if ((int)uVar8 != 0) goto LAB_8f61d78c;
uVar8 = FUN_8f626a04(DAT_8f68a204,(int)((ulonglong)uVar8 >> 0x20));
break;
case 0xc:
uVar8 = FUN_8f61d3ac(uVar1);
}
uVar5 = (undefined4)((ulonglong)uVar8 >> 0x20);
if ((int)uVar8 == 0) {
LAB_8f61d7f0:
pcVar3 = *(code **)(uVar1 + 0x4f4);
uVar8 = CONCAT44(uVar5,pcVar3);
if (pcVar3 != (code *)0x0) {
uVar8 = (*pcVar3)();
}
}
LAB_8f61d78c:
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar8,(int)((ulonglong)uVar8 >> 0x20),piVar2);
}
void FUN_8f61d8e8(char **param_1,int *param_2,char *param_3)
{
int *piVar1;
int iVar2;
char **ppcVar3;
int iVar4;
undefined4 extraout_r1;
code *pcVar5;
char **ppcVar6;
undefined8 uVar7;
piVar1 = DAT_8f69d118;
DAT_8f68a204 = param_1;
if (param_1 == (char **)0x0) {
iVar2 = -8;
goto LAB_8f61d938;
}
if ((code *)param_1[0x151] != (code *)0x0) {
uVar7 = (*(code *)param_1[0x151])(1,param_1);
param_2 = (int *)((ulonglong)uVar7 >> 0x20);
iVar2 = (int)uVar7;
if ((int)uVar7 != 0) goto LAB_8f61d938;
}
pcVar5 = (code *)param_1[0x155];
uVar7 = CONCAT44(param_2,pcVar5);
if (pcVar5 != (code *)0x0) {
uVar7 = (*pcVar5)(DAT_8f68a204);
}
if ((code *)param_1[0x152] != (code *)0x0) {
uVar7 = (*(code *)param_1[0x152])(1,DAT_8f68a204);
}
param_2 = (int *)((ulonglong)uVar7 >> 0x20);
iVar2 = (int)uVar7;
if ((int)uVar7 != 0) goto LAB_8f61d938;
if ((code *)param_1[0x158] != (code *)0x0) {
uVar7 = (*(code *)param_1[0x158])();
param_2 = (int *)((ulonglong)uVar7 >> 0x20);
iVar2 = (int)uVar7;
if ((int)uVar7 != 0) goto LAB_8f61d938;
}
if ((code *)param_1[0x154] != (code *)0x0) {
uVar7 = (*(code *)param_1[0x154])(1,DAT_8f68a204);
param_2 = (int *)((ulonglong)uVar7 >> 0x20);
iVar2 = (int)uVar7;
if ((int)uVar7 != 0) goto LAB_8f61d938;
}
ppcVar6 = DAT_8f68a204;
if ((code *)param_1[0x141] != (code *)0x0) {
iVar2 = (*(code *)param_1[0x141])();
ppcVar6 = DAT_8f68a204;
param_3 = *DAT_8f68a204;
ppcVar3 = DAT_8f68a204 + 1;
param_2 = (int *)DAT_8f68a204[2];
DAT_8f68a204[0x148] = param_3;
ppcVar6[0x149] = *ppcVar3;
ppcVar6[0x14b] = (char *)param_2;
ppcVar6[0x14a] = param_3;
if (iVar2 != 0) goto LAB_8f61d938;
}
ppcVar3 = ppcVar6 + 0x147;
if (ppcVar3 == (char **)0x0) {
LAB_8f61daf8:
iVar2 = -1;
}
else {
if (ppcVar6[0x147] == (char *)0x0) {
param_3 = ppcVar6[0x148];
uVar7 = FUN_8f6366a8((int *)0x1000,
((uint)ppcVar6[0x14b] >> 3) * (int)param_3 * (int)ppcVar6[0x149]);
param_2 = (int *)((ulonglong)uVar7 >> 0x20);
ppcVar6[0x147] = (char *)uVar7;
if ((char *)uVar7 == (char *)0x0) goto LAB_8f61daf8;
ppcVar3 = DAT_8f68a204 + 0x147;
}
uVar7 = FUN_8f62fa08((int)ppcVar3,param_2,param_3);
FUN_8f62fe14((int)uVar7,(int)((ulonglong)uVar7 >> 0x20));
uVar7 = CONCAT44(extraout_r1,DAT_8f68a204);
if (((code *)DAT_8f68a204[0x159] != (code *)0x0) &&
(uVar7 = CONCAT44(extraout_r1,DAT_8f68a204), DAT_8f68a204[0xbf] != (char *)0x0)) {
uVar7 = (*(code *)DAT_8f68a204[0x159])();
param_2 = (int *)((ulonglong)uVar7 >> 0x20);
iVar2 = (int)uVar7;
if (iVar2 != 0) goto LAB_8f61d938;
}
uVar7 = FUN_8f61d588((int)uVar7,(int)((ulonglong)uVar7 >> 0x20));
param_2 = (int *)((ulonglong)uVar7 >> 0x20);
iVar2 = (int)uVar7;
if ((int)uVar7 == 0) {
uVar7 = FUN_8f61d73c(0,param_2);
param_2 = (int *)((ulonglong)uVar7 >> 0x20);
iVar4 = (int)uVar7;
iVar2 = iVar4;
if (iVar4 == 0) {
if ((code *)param_1[0x156] != (code *)0x0) {
uVar7 = (*(code *)param_1[0x156])(1);
param_2 = (int *)((ulonglong)uVar7 >> 0x20);
iVar2 = (int)uVar7;
if (iVar2 != 0) goto LAB_8f61d938;
}
iVar2 = iVar4;
if ((code *)param_1[0x153] != (code *)0x0) {
uVar7 = (*(code *)param_1[0x153])(1);
param_2 = (int *)((ulonglong)uVar7 >> 0x20);
iVar2 = (int)uVar7;
}
}
}
}
LAB_8f61d938:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,param_2,piVar1);
}
void FUN_8f61db00(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
int *piVar2;
undefined4 uVar3;
int iVar4;
uint uVar5;
uint uVar6;
ulonglong uVar7;
ulonglong uVar8;
piVar2 = DAT_8f69d118;
piVar1 = DAT_8f68a204;
uVar7 = CONCAT44(param_2,param_1);
if (DAT_8f68a204 == (int *)0x0) {
switchD_8f61db68_caseD_4:
uVar7 = CONCAT44(param_2,0xfffffff8);
goto LAB_8f61db44;
}
if (((code *)DAT_8f68a204[0x140] != (code *)0x0) &&
(uVar7 = (*(code *)DAT_8f68a204[0x140])(), (int)uVar7 != 0)) goto LAB_8f61db44;
param_2 = (undefined4)(uVar7 >> 0x20);
uVar3 = (undefined4)uVar7;
switch(piVar1[3]) {
case 3:
case 0xb:
uVar7 = FUN_8f626a74(uVar3,param_2);
goto LAB_8f61db9c;
default:
goto switchD_8f61db68_caseD_4;
case 6:
uVar7 = FUN_8f61d484(piVar1,param_2);
uVar6 = (uint)uVar7;
goto LAB_8f61dba0;
case 8:
uVar7 = FUN_8f61d124((int)piVar1);
break;
case 9:
uVar7 = FUN_8f61d1b8(uVar3,param_2);
break;
case 0xc:
uVar7 = FUN_8f61d504(uVar3,param_2);
iVar4 = (int)uVar7;
goto joined_r0x8f61dca4;
}
if ((int)uVar7 == 0) {
uVar7 = FUN_8f61ebac(piVar1,(int)(uVar7 >> 0x20));
iVar4 = (int)uVar7;
joined_r0x8f61dca4:
if (iVar4 == 0) {
LAB_8f61db9c:
uVar6 = 0;
LAB_8f61dba0:
uVar8 = FUN_8f60106c((int)uVar7,(int)(uVar7 >> 0x20));
uVar5 = (uint)(uVar8 >> 0x20);
uVar7 = uVar8 & 0xffffffff00000000 | (ulonglong)uVar6;
if ((int)uVar8 == 0) {
if ((code *)DAT_8f68a204[0x156] != (code *)0x0) {
uVar7 = (*(code *)DAT_8f68a204[0x156])();
}
if ((int)uVar7 != 0) goto LAB_8f61db44;
if ((code *)DAT_8f68a204[0x153] != (code *)0x0) {
uVar7 = (*(code *)DAT_8f68a204[0x153])(0);
}
if ((code *)piVar1[0x13e] != (code *)0x0) {
uVar7 = (*(code *)piVar1[0x13e])();
}
if ((code *)DAT_8f68a204[0x152] != (code *)0x0) {
uVar7 = (*(code *)DAT_8f68a204[0x152])(0,piVar1);
}
if ((code *)DAT_8f68a204[0x154] != (code *)0x0) {
uVar7 = (*(code *)DAT_8f68a204[0x154])(0,piVar1);
}
uVar5 = (uint)(uVar7 >> 0x20);
if ((int)uVar7 != 0) goto LAB_8f61db44;
if ((code *)DAT_8f68a204[0x151] != (code *)0x0) {
uVar7 = (*(code *)DAT_8f68a204[0x151])(0,piVar1);
goto LAB_8f61db44;
}
}
uVar7 = (ulonglong)uVar5 << 0x20;
}
}
LAB_8f61db44:
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar7,(int)(uVar7 >> 0x20),piVar2);
}
void FUN_8f61dcdc(uint *param_1,int param_2,int param_3,int param_4)
{
int *piVar1;
int extraout_r1;
int extraout_r1_00;
int extraout_r1_01;
int iVar2;
uint *puVar3;
uint *puVar4;
int iVar5;
uint uVar6;
undefined4 *puVar7;
uint unaff_r6;
int iVar8;
uint *puVar9;
uint *puVar10;
undefined4 uVar11;
bool bVar12;
uint *local_144;
undefined4 auStack_12c [64];
int *local_2c;
bVar12 = param_1 != (uint *)0x0;
if (bVar12) {
unaff_r6 = param_1[0x18];
param_1 = (uint *)param_1[0x1a];
}
if (!bVar12) {
unaff_r6 = 0x1a94000;
}
local_2c = DAT_8f69d118;
local_144 = param_1;
if (!bVar12) {
local_144 = (uint *)0x1a96000;
}
uVar6 = (uint)auStack_12c & 7;
if (uVar6 != 0) {
uVar6 = 8 - uVar6;
}
puVar7 = (undefined4 *)((int)auStack_12c + uVar6);
if (param_3 < 1) {
uVar11 = 0;
}
else {
puVar9 = (uint *)(unaff_r6 + 0x110);
iVar5 = param_2 + 0xc;
iVar8 = 0;
puVar3 = (uint *)(unaff_r6 + 4);
puVar4 = puVar3;
puVar10 = local_144 + 0x44;
if (param_4 == 0) {
puVar10 = puVar9;
}
do {
if ((*puVar3 & 2) != 0) {
*puVar9 = *puVar9 | 0x30000;
DataSynchronizationBarrier(0xf);
iVar2 = 0xffff;
piVar1 = (int *)(*puVar9 & 0x10000);
while (piVar1 == (int *)0x0) {
iVar2 = iVar2 + -1;
piVar1 = (int *)(*puVar9 & 0x10000);
if (iVar2 == 0) {
dprintf((byte *)s_Panel_CMD__Did_not_recieve_video_8f660ba0,piVar1,0,puVar4);
uVar11 = 1;
param_2 = extraout_r1_01;
goto LAB_8f61def8;
}
}
*puVar9 = *puVar9 | 0x1000001;
FUN_8f6104a8(4);
}
uVar6 = *(uint *)(iVar5 + -0xc) & 3;
if (uVar6 != 0) {
uVar6 = 4 - uVar6;
}
uVar6 = uVar6 + *(uint *)(iVar5 + -0xc);
FUN_8f63685c(puVar7,*(undefined4 **)(iVar5 + -8),uVar6);
FUN_8f625b24((uint)puVar7,uVar6);
*(undefined4 **)(unaff_r6 + 0x48) = puVar7;
if (param_4 != 0) {
puVar4 = local_144;
}
*(uint *)(unaff_r6 + 0x4c) = uVar6;
if (param_4 != 0) {
puVar4[0x12] = (uint)puVar7;
puVar4[0x13] = uVar6;
}
DataSynchronizationBarrier(0xf);
*puVar9 = 0x3030303;
*(undefined4 *)(unaff_r6 + 0x90) = 1;
DataSynchronizationBarrier(0xf);
if (param_4 != 0) {
local_144[0x44] = 0x3030303;
local_144[0x24] = 1;
DataSynchronizationBarrier(0xf);
puVar4 = local_144;
}
if ((*puVar10 & 1) == 0) {
iVar2 = 0xffff;
piVar1 = (int *)(*puVar10 & 1);
do {
if (piVar1 == (int *)0x1) goto LAB_8f61de88;
iVar2 = iVar2 + -1;
piVar1 = (int *)(*puVar10 & 1);
} while (iVar2 != 0);
dprintf((byte *)s_Panel_CMD__command_mode_dma_test_8f660bd8,piVar1,0,puVar4);
uVar11 = 1;
}
else {
LAB_8f61de88:
uVar11 = 0;
*puVar10 = *puVar10 | 0x1000001;
}
if (*(uint *)(iVar5 + -4) == 0) {
FUN_8f6104fc(0x50);
param_2 = extraout_r1_00;
}
else {
FUN_8f6104a8(*(uint *)(iVar5 + -4));
param_2 = extraout_r1;
}
iVar8 = iVar8 + 1;
iVar5 = iVar5 + 0xc;
} while (iVar8 != param_3);
}
LAB_8f61def8:
if (local_2c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar11,param_2,local_2c);
}
return;
}
void FUN_8f61df24(int param_1,uint **param_2,int param_3,int param_4)
{
int *piVar1;
int iVar2;
int iVar3;
uint **ppuVar4;
int iVar5;
uint uVar6;
int iVar7;
uint **ppuVar8;
int iVar9;
uint *puVar10;
piVar1 = DAT_8f69d118;
if (param_1 == 0) {
iVar2 = 0x1a94000;
}
else {
iVar2 = *(int *)(param_1 + 0x60);
}
if (param_3 < param_4) {
param_4 = 0;
}
else {
ppuVar8 = (uint **)*param_2;
iVar5 = 0;
if (param_4 < 3) {
iVar9 = 0x6c;
iVar7 = 1;
}
else {
iVar9 = 0x74;
iVar7 = 3;
}
puVar10 = (uint *)(iVar9 + iVar2);
if (param_4 < 3) {
iVar3 = 0;
ppuVar4 = ppuVar8;
}
else {
iVar3 = 2;
ppuVar4 = ppuVar8;
}
do {
iVar5 = iVar5 + 1;
uVar6 = *puVar10;
param_2 = ppuVar4 + 1;
*ppuVar4 = (uint *)(uVar6 << 0x18 | (uVar6 >> 8 & 0xff) << 0x10 | (uVar6 >> 0x10 & 0xff) << 8
| uVar6 >> 0x18);
ppuVar4 = param_2;
puVar10 = puVar10 + -1;
} while (iVar5 < iVar7);
if (2 < param_4) {
param_2 = ppuVar8 + -1;
iVar2 = param_4 + iVar3;
do {
iVar5 = iVar3 >> 2;
iVar3 = iVar3 + 1;
param_2 = param_2 + 1;
*param_2 = ppuVar8[iVar5];
} while (iVar3 != iVar2);
}
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_4,param_2,piVar1);
}
void FUN_8f61dfec(char *param_1,int param_2,int param_3)
{
char cVar1;
char cVar2;
byte bVar3;
int *piVar4;
uint uVar5;
uint *puVar6;
uint uVar7;
uint uVar8;
uint uVar9;
piVar4 = DAT_8f69d118;
uVar5 = (byte)param_1[0xf] - 2 & 0xff;
cVar1 = param_1[0x1b];
cVar2 = param_1[0x1c];
if (uVar5 < 3) {
uVar9 = (uint)*(byte *)(uVar5 + 0x8f660c7c);
}
else {
uVar9 = 0x10;
}
uVar8 = 0x103;
if (uVar5 < 3) {
uVar9 = uVar9 << 4;
}
if (*param_1 == '\0') {
uVar8 = 0x105;
}
bVar3 = param_1[0x52];
if (param_2 == 0) {
uVar7 = param_3 << 0x1f | 0x14000000;
}
else {
*(undefined4 *)(*(int *)(param_1 + 0x68) + 0x118) = 1;
uVar7 = param_3 << 0x1f | 0x14000000;
*(undefined4 *)(*(int *)(param_1 + 0x68) + 0x118) = 0;
*(undefined4 *)(*(int *)(param_1 + 0x68) + 0x11c) = 0x3f;
*(undefined4 *)(*(int *)(param_1 + 0x68) + 0x84) = 4;
*(uint *)(*(int *)(param_1 + 0x68) + 4) = uVar8 | uVar9;
*(uint *)(*(int *)(param_1 + 0x68) + 0x3c) = uVar7;
uVar5 = (uint)bVar3;
if (**(int **)(param_1 + 0x60) == 0x10030001) {
uVar5 = 7;
}
*(uint *)(*(int *)(param_1 + 0x68) + 0xb0) = uVar5;
*(uint *)(*(int *)(param_1 + 0x68) + 0xc4) = (uint)CONCAT11(cVar1,cVar2);
puVar6 = *(uint **)(param_1 + 0x68);
if ((param_1[1] == '\x01') && (0x1002ffff < *puVar6)) {
puVar6[0x6e] = puVar6[0x6e] | 0x10000;
puVar6 = *(uint **)(param_1 + 0x68);
}
puVar6[0x33] = (byte)param_1[0x1a] & 1 | ((byte)param_1[0x19] & 1) << 4;
}
*(undefined4 *)(*(int *)(param_1 + 0x60) + 0x118) = 1;
*(undefined4 *)(*(int *)(param_1 + 0x60) + 0x118) = 0;
*(undefined4 *)(*(int *)(param_1 + 0x60) + 0x11c) = 0x3f;
*(undefined4 *)(*(int *)(param_1 + 0x60) + 0x84) = 4;
*(uint *)(*(int *)(param_1 + 0x60) + 4) = uVar8 | uVar9;
*(uint *)(*(int *)(param_1 + 0x60) + 0x3c) = uVar7;
*(uint *)(*(int *)(param_1 + 0x60) + 0xb0) = (uint)bVar3;
*(uint *)(*(int *)(param_1 + 0x60) + 0xc4) = (uint)CONCAT11(cVar1,cVar2);
puVar6 = *(uint **)(param_1 + 0x60);
if ((param_1[1] == '\x01') && (0x1002ffff < *puVar6)) {
puVar6[0x6e] = puVar6[0x6e] | 0x10000;
puVar6 = *(uint **)(param_1 + 0x60);
}
puVar6[0x33] = (byte)param_1[0x1a] & 1 | ((byte)param_1[0x19] & 1) << 4;
if (piVar4 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,puVar6,piVar4);
}
void FUN_8f61e1e4(int *param_1)
{
int iVar1;
int iVar2;
uint uVar3;
int iVar4;
iVar1 = DAT_8f69d118;
iVar2 = param_1[0xa6];
iVar4 = param_1[0xa8];
if (param_1[0x9b] == 0) {
return;
}
if (param_1[3] == 8) {
uVar3 = *(uint *)(iVar2 + 4);
*(uint *)(iVar2 + 4) = uVar3 & 0xfffffffe;
*(undefined4 *)(iVar2 + 0x118) = 1;
DataSynchronizationBarrier(0xf);
*(undefined4 *)(iVar2 + 0x118) = 0;
DataSynchronizationBarrier(0xf);
*(uint *)(iVar2 + 4) = uVar3 & 0xfffffff9 | 4;
}
uVar3 = (uint)*(byte *)((int)param_1 + 0x28d);
if ((uVar3 != 0) && (param_1[3] == 8)) {
uVar3 = *(uint *)(iVar4 + 4);
*(uint *)(iVar4 + 4) = uVar3 & 0xfffffffe;
*(undefined4 *)(iVar4 + 0x118) = 1;
DataSynchronizationBarrier(0xf);
*(undefined4 *)(iVar4 + 0x118) = 0;
DataSynchronizationBarrier(0xf);
*(uint *)(iVar4 + 4) = uVar3 & 0xfffffff9 | 4;
uVar3 = (uint)*(byte *)((int)param_1 + 0x28d);
}
if (iVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar1,DAT_8f69d118,param_1);
}
FUN_8f61dcdc((uint *)(param_1 + 0x8e),param_1[0x9b],param_1[0x9c],uVar3);
return;
}
void FUN_8f61e2e8(uint *param_1,uint param_2)
{
int *piVar1;
uint uVar2;
uint uVar3;
ulonglong uVar4;
ulonglong uVar5;
uint *local_24;
uint uStack_20;
int *local_1c;
uVar2 = param_1[0xb];
local_1c = DAT_8f69d118;
piVar1 = DAT_8f69d118;
if (uVar2 != 0) {
uVar3 = *(uint *)(param_1[0x18] + 4);
*(uint *)(param_1[0x18] + 4) = uVar3 | 4;
if (param_2 != 0) {
*(uint *)(param_1[0x1a] + 4) = uVar3 | 4;
uVar4 = FUN_8f61dcdc(param_1,uVar2,param_1[0xc],param_2 & 0xff);
*(uint *)(param_1[0x18] + 4) = uVar3;
*(uint *)(param_1[0x1a] + 4) = uVar3;
goto LAB_8f61e358;
}
uVar4 = FUN_8f61dcdc(param_1,uVar2,param_1[0xc],0);
*(uint *)(param_1[0x18] + 4) = uVar3;
if ((int)uVar4 != 0) goto LAB_8f61e358;
uVar5 = FUN_8f626570(0,(int)(uVar4 >> 0x20));
piVar1 = (int *)(uVar5 >> 0x20);
uVar4 = uVar5 & 0xffffffff00000000 | (ulonglong)DAT_8f68a208;
if ((int)uVar5 != 0) {
uVar2 = param_1[0x16];
local_24 = &uStack_20;
if ((DAT_8f68a208 == uVar2 || DAT_8f68a208 == 0) &&
(uVar4 = FUN_8f61dcdc(param_1,(int)&DAT_8f67f10c,1,0), (int)uVar4 == 0)) {
uVar5 = FUN_8f61df24((int)param_1,&local_24,1,1);
uVar4 = uVar5 & 0xffffffff00000000 | uVar4 & 0xffffffff;
if ((int)uVar5 != 0) {
uVar3 = *local_24;
DAT_8f68a208 = (uVar3 << 0x18 | (uVar3 >> 8 & 0xff) << 0x10 | (uVar3 >> 0x10 & 0xff) << 8)
>> 8;
uVar4 = uVar5 & 0xffffffff00000000 | (ulonglong)DAT_8f68a208;
if (uVar2 == DAT_8f68a208) {
uVar4 = uVar5 & 0xffffffff00000000;
}
}
}
if (uVar2 == 0 || uVar2 == 0xffff) {
uVar4 = uVar4 & 0xffffffff00000000;
}
goto LAB_8f61e358;
}
}
uVar4 = ZEXT48(piVar1) << 0x20;
LAB_8f61e358:
if (local_1c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)(uVar4 >> 0x20),local_1c);
}
return;
}
void FUN_8f61e43c(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5,
ushort param_6,ushort param_7,ushort param_8,ushort param_9,ushort param_10,
ushort param_11,ushort param_12,ushort param_13,byte param_14,byte param_15,
int param_16,byte param_17,byte param_18,uint *param_19)
{
int *piVar1;
int iVar2;
undefined4 uVar3;
undefined4 extraout_r1;
uint uVar4;
int unaff_r5;
uint uVar5;
uint uVar6;
bool bVar7;
piVar1 = DAT_8f69d118;
bVar7 = *(int *)(param_1 + 0x20) == 1;
if (bVar7) {
unaff_r5 = param_1 + 0xe0;
}
if (!bVar7) {
unaff_r5 = 0;
}
param_19[0x47] = 0;
param_19[0x47] = 2;
param_19[0x47] = 6;
param_19[0x47] = 0xe;
uVar6 = (uint)param_7;
uVar5 = (uint)param_9;
uVar4 = (uint)param_17;
param_19[0x47] = 0x1e;
param_19[0x47] = 0x23f;
param_19[0x43] = 0x3f03fe0;
param_19[0x44] = 0x2020202;
if ((0x1002ffff < *param_19) && (iVar2 = FUN_8f61bcec(), iVar2 != 6)) {
param_19[0x7a] = 1;
}
param_19[9] = uVar6 | (param_2 + uVar6) * 0x10000;
param_19[10] = uVar5 | (param_3 + uVar5) * 0x10000;
iVar2 = FUN_8f61bcec();
if (((iVar2 < 9) && (iVar2 = FUN_8f61bcec(), iVar2 != 5)) && (iVar2 = FUN_8f61bcec(), iVar2 != 6))
{
param_19[0xb] = uVar6 + param_2 + (uint)param_6 | (uVar5 + param_3 + (uint)param_8) * 0x10000;
}
else {
param_19[0xb] =
(uVar6 + param_2 + (uint)param_6) - 1 | (uVar5 + param_3 + (uint)param_8 + -1) * 0x10000;
}
param_19[0xc] = (uint)param_10 << 0x10;
param_19[0xd] = 0;
param_19[0xe] = (uint)param_11 << 0x10;
if ((0x1002ffff < *param_19) && (iVar2 = FUN_8f61bcec(), iVar2 != 6)) {
param_19[0x79] = 1;
}
param_19[0x29] = 0x100;
iVar2 = FUN_8f61bcec();
if ((iVar2 < 9) && (iVar2 = FUN_8f61bcec(), iVar2 != 6)) {
param_19[4] = (uint)param_12 << 4 | param_16 << 0x10 | 0x11100000 | (uint)param_13 << 8 |
uVar4 << 0xc;
}
else {
param_19[4] = param_16 << 0x10 | (uint)param_12 << 4 | (uint)param_13 << 8 | uVar4 << 0xc |
((uint)param_15 | uVar4 & 8) << 0x1c;
}
param_19[0x2f] = 0x3fd08;
uVar3 = 0x2030303;
param_19[0x29] = 0x10100;
param_19[0x44] = 0x10100;
param_19[0x44] = 0x2010202;
param_19[0x44] = 0x2030303;
param_19[1] = (uint)param_14 << 4 | 0x103 | (uint)param_18 << 0x1e;
if ((unaff_r5 != 0) && (*(code **)(unaff_r5 + 0x150) != (code *)0x0)) {
(**(code **)(unaff_r5 + 0x150))(*(undefined4 *)(param_1 + 0x298),0,unaff_r5);
uVar3 = extraout_r1;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,uVar3,piVar1);
}
void FUN_8f61e73c(int param_1,int *param_2)
{
byte bVar1;
int *extraout_r1;
int *extraout_r1_00;
int *extraout_r1_01;
int *extraout_r1_02;
int *extraout_r1_03;
int *extraout_r1_04;
int *extraout_r1_05;
uint uVar2;
code *pcVar3;
code *pcVar4;
uint uVar5;
uint *puVar6;
int iVar7;
undefined8 uVar8;
undefined4 local_28;
int local_24;
undefined4 local_20;
int *local_1c;
local_1c = DAT_8f69d118;
if (param_1 == 0) {
pcVar3 = (code *)0xfffffff8;
}
else {
pcVar3 = *(code **)(param_1 + 0x20);
puVar6 = (uint *)(param_1 + 0x238);
if (pcVar3 == (code *)0x1) {
pcVar3 = *(code **)(param_1 + 0x22c);
iVar7 = param_1 + 0xe0;
if (pcVar3 != (code *)0x0) {
(*pcVar3)();
}
}
else {
iVar7 = 0;
}
FUN_8f61f258((int)puVar6);
uVar2 = (uint)*(byte *)(param_1 + 0x28d);
uVar8 = FUN_8f61dfec((char *)puVar6,(uint)*(byte *)(param_1 + 0x28b),uVar2);
if ((code *)uVar8 == (code *)0x0) {
FUN_8f61f1f0((int)puVar6,*(int *)(param_1 + 0x29c));
param_2 = extraout_r1;
if (*(char *)(param_1 + 0x28b) != '\0') {
FUN_8f61f1f0((int)puVar6,*(int *)(param_1 + 0x2a4));
param_2 = extraout_r1_04;
}
pcVar3 = *(code **)(param_1 + 0x55c);
if (pcVar3 != (code *)0x0) {
uVar8 = (*pcVar3)();
param_2 = (int *)((ulonglong)uVar8 >> 0x20);
if ((code *)uVar8 != (code *)0x0) {
dprintf((byte *)s_pre_init_func_error_8f660c1c,param_2,uVar2,pcVar3);
pcVar3 = (code *)uVar8;
param_2 = extraout_r1_05;
goto LAB_8f61e844;
}
}
if (*(char *)(param_1 + 0x289) == '\0') {
bVar1 = *(byte *)(param_1 + 0x238);
}
else {
if (*(char *)(param_1 + 0x28b) != '\0') {
*(uint *)(*(int *)(param_1 + 0x2a0) + 0xac) =
*(uint *)(*(int *)(param_1 + 0x2a0) + 0xac) | 0x10000000;
}
uVar2 = *(uint *)(*(int *)(param_1 + 0x298) + 0xac) | 0x10000000;
*(uint *)(*(int *)(param_1 + 0x298) + 0xac) = uVar2;
bVar1 = *(byte *)(param_1 + 0x238);
}
uVar5 = (uint)bVar1;
if (uVar5 == 0) {
uVar8 = FUN_8f61e2e8(puVar6,(uint)*(byte *)(param_1 + 0x28d));
param_2 = (int *)((ulonglong)uVar8 >> 0x20);
if ((code *)uVar8 != (code *)0x0) {
dprintf((byte *)s_dsi_panel_init_error_8f660c34,param_2,uVar2,uVar5);
pcVar3 = (code *)uVar8;
param_2 = extraout_r1_03;
goto LAB_8f61e844;
}
}
if (iVar7 != 0) {
local_24 = iVar7 + 0xc4;
local_28 = 0x84;
local_20 = 0x10;
FUN_8f61dcdc(puVar6,(int)&local_28,1,(uint)*(byte *)(param_1 + 0x28d));
param_2 = extraout_r1_00;
}
pcVar4 = *(code **)(param_1 + 0x510);
pcVar3 = pcVar4;
if ((pcVar4 != (code *)0x0) &&
(pcVar3 = *(code **)(param_1 + 0x540), *(code **)(param_1 + 0x540) != (code *)0x0)) {
(*pcVar4)();
pcVar3 = (code *)0x0;
param_2 = extraout_r1_01;
}
}
else {
dprintf((byte *)s_dsi_host_init_error_8f660c04,(int *)((ulonglong)uVar8 >> 0x20),uVar2,pcVar3)
;
pcVar3 = (code *)uVar8;
param_2 = extraout_r1_02;
}
}
LAB_8f61e844:
if (local_1c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(pcVar3,param_2,local_1c);
}
return;
}
void FUN_8f61e900(int param_1,int *param_2)
{
int *piVar1;
uint uVar2;
int *extraout_r1;
int *piVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
uVar2 = (uint)*(byte *)(param_1 + 0x238);
if (uVar2 != 0) {
piVar3 = DAT_8f69d118;
uVar4 = FUN_8f61e2e8((uint *)(param_1 + 0x238),(uint)*(byte *)(param_1 + 0x28d));
param_2 = (int *)((ulonglong)uVar4 >> 0x20);
uVar2 = (uint)uVar4;
if (uVar2 != 0) {
dprintf((byte *)s_dsi_panel_init_error_8f660c34,param_2,piVar3,param_1);
param_2 = extraout_r1;
}
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,param_2,piVar1);
}
void FUN_8f61e970(int param_1,undefined4 param_2,undefined4 param_3,uint param_4,ushort param_5,
ushort param_6,byte param_7,byte param_8,byte param_9,int param_10)
{
int *piVar1;
undefined4 uVar2;
int iVar3;
int extraout_r1;
int extraout_r1_00;
uint uVar4;
uint uVar5;
code *pcVar6;
piVar1 = DAT_8f69d118;
switch((uint)param_6) {
case 0:
iVar3 = 6;
break;
case 1:
case 2:
iVar3 = 7;
break;
case 3:
iVar3 = 8;
break;
default:
dprintf((byte *)s_unsupported_dst_format_8f660c4c,DAT_8f69d118,(uint)param_6,param_4);
uVar2 = 0xffffffff;
iVar3 = extraout_r1;
goto LAB_8f61ea80;
}
*(undefined4 *)(param_10 + 0x11c) = 0;
*(undefined4 *)(param_10 + 0x11c) = 0;
*(undefined4 *)(param_10 + 0x11c) = 0;
*(undefined4 *)(param_10 + 0x11c) = 0;
*(undefined4 *)(param_10 + 0x11c) = 2;
*(undefined4 *)(param_10 + 0x11c) = 6;
*(undefined4 *)(param_10 + 0x11c) = 0xe;
*(undefined4 *)(param_10 + 0x11c) = 0x1e;
*(undefined4 *)(param_10 + 0x11c) = 0x23f;
*(undefined4 *)(param_10 + 4) = 0;
*(undefined4 *)(param_10 + 0x10c) = 0x3f03fe0;
*(undefined4 *)(param_10 + 0x110) = 0x2020202;
*(int *)(param_10 + 0x40) = iVar3;
if (*(int *)(param_1 + 0x20) == 1) {
iVar3 = *(int *)(param_1 + 0x13c);
pcVar6 = *(code **)(param_1 + 0x230);
if (*(char *)(param_1 + 0x27d) != '\0') {
iVar3 = iVar3 + 1;
}
uVar4 = iVar3 << 0x10 | 0x39;
*(uint *)(param_10 + 0x58) = uVar4;
*(uint *)(param_10 + 0x60) = uVar4;
iVar3 = *(int *)(param_1 + 0x120);
uVar4 = *(uint *)(param_1 + 0x144) | iVar3 << 0x10;
*(uint *)(param_10 + 0x5c) = uVar4;
*(uint *)(param_10 + 100) = uVar4;
if (pcVar6 != (code *)0x0) {
(*pcVar6)(*(undefined4 *)(param_1 + 0x298),1,param_1 + 0xe0);
iVar3 = extraout_r1_00;
}
}
else {
uVar4 = param_4 | (uint)param_5 << 0x10;
uVar5 = (param_7 * param_4 + 1) * 0x10000 | 0x39;
*(uint *)(param_10 + 0x58) = uVar5;
*(uint *)(param_10 + 0x60) = uVar5;
*(uint *)(param_10 + 0x5c) = uVar4;
*(uint *)(param_10 + 100) = uVar4;
}
uVar2 = 0;
*(undefined4 *)(param_10 + 0x44) = 0x13c2c;
*(uint *)(param_10 + 4) = (uint)param_8 << 4 | 0x105 | (uint)param_9 << 0x1e;
*(undefined4 *)(param_10 + 0x3c) = 0x14000000;
*(undefined4 *)(param_10 + 0xa0) = 0x10000000;
LAB_8f61ea80:
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,iVar3,piVar1);
}
return;
}
void FUN_8f61eb14(int param_1)
{
int *piVar1;
undefined4 uVar2;
uint *extraout_r1;
uint *puVar3;
uint *extraout_r1_00;
int iVar4;
uint uVar5;
piVar1 = DAT_8f69d118;
uVar5 = *(uint *)(*(int *)(param_1 + 0x298) + 0x110);
FUN_8f6104a8(10);
puVar3 = extraout_r1;
if ((uVar5 & 0x10000) == 0) {
iVar4 = 0xffff;
puVar3 = (uint *)(*(int *)(param_1 + 0x298) + 0x110);
uVar5 = *(uint *)(*(int *)(param_1 + 0x298) + 0x110) & 0x10000;
do {
if (uVar5 == 0x10000) goto LAB_8f61eb78;
iVar4 = iVar4 + -1;
uVar5 = *puVar3 & 0x10000;
} while (iVar4 != 0);
dprintf((byte *)s_Video_lane_test_failed_8f660c64,(int *)puVar3,uVar5,0);
uVar2 = 0xffffffff;
puVar3 = extraout_r1_00;
}
else {
LAB_8f61eb78:
uVar2 = 0;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,puVar3,piVar1);
}
void FUN_8f61ebac(int *param_1,undefined4 param_2)
{
int *piVar1;
undefined4 uVar2;
undefined4 extraout_r1;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
uVar3 = FUN_8f60106c(param_1,param_2);
uVar2 = (undefined4)((ulonglong)uVar3 >> 0x20);
if ((int)uVar3 == 0) {
FUN_8f61e1e4(param_1);
*(undefined4 *)(param_1[0xa6] + 0x11c) = 0;
*(undefined4 *)(param_1[0xa6] + 4) = 0;
uVar2 = extraout_r1;
}
*(undefined4 *)(param_1[0xa6] + 0x110) = 0x1115501;
if (*(char *)((int)param_1 + 0x28b) != '\0') {
*(undefined4 *)(param_1[0xa8] + 0x110) = 0x1115501;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(0,uVar2,piVar1);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f61ec64)
void FUN_8f61ec30(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f61ec9c)
void FUN_8f61ec68(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f61eca0(undefined4 *param_1,uint *param_2,undefined4 *param_3)
{
int *piVar1;
byte *pbVar2;
uint *puVar3;
uint *puVar4;
uint *puVar5;
int iVar6;
byte *pbVar7;
piVar1 = DAT_8f69d118;
if (*(char *)((int)param_1 + 0x127) == '\x01') {
param_2[0x77] = 0x1d;
}
else {
param_3[1] = param_1[1];
param_3[2] = param_1[2];
param_3[3] = param_1[3];
param_3[4] = param_1[4];
param_3[6] = param_1[6];
param_2[0x77] = 0;
*param_3 = *param_1;
DataMemoryBarrier(0xf);
}
pbVar7 = (byte *)((int)param_1 + 0xf9);
iVar6 = 0;
param_2[0x61] = param_1[0x33];
param_2[0x75] = 0;
puVar5 = param_2;
do {
pbVar2 = pbVar7;
puVar3 = puVar5;
do {
pbVar2 = pbVar2 + 1;
puVar4 = puVar3 + 1;
*puVar3 = (uint)*pbVar2;
DataMemoryBarrier(0xf);
puVar3 = puVar4;
} while (puVar4 != puVar5 + 9);
iVar6 = iVar6 + 1;
pbVar7 = pbVar7 + 9;
puVar5 = puVar5 + 0x10;
} while (iVar6 != 5);
iVar6 = 0x140;
do {
*(undefined4 *)(iVar6 + (int)param_2) = param_1[7];
DataMemoryBarrier(0xf);
iVar6 = iVar6 + 4;
param_1 = param_1 + 1;
} while (iVar6 != 0x170);
param_2[0x5d] = 0;
DataMemoryBarrier(0xf);
param_2[0x5c] = 0x7f;
DataMemoryBarrier(0xf);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,param_2,piVar1);
}
void FUN_8f61edb0(int param_1)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
*(undefined4 *)(param_1 + 300) = 1;
FUN_8f6104fc(1000);
DataMemoryBarrier(0xf);
*(undefined4 *)(param_1 + 300) = 0;
uVar2 = FUN_8f6104fc(100);
DataMemoryBarrier(0xf);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
void FUN_8f61ef94(int param_1,int *param_2,uint *param_3,undefined4 *param_4)
{
int *piVar1;
char cVar2;
int *piVar3;
uint *puVar4;
byte *pbVar5;
uint uVar6;
int *piVar7;
int *piVar8;
uint *puVar9;
uint *puVar10;
int iVar11;
int iVar12;
undefined4 *puVar13;
undefined4 *puVar14;
byte *pbVar15;
longlong lVar16;
undefined8 uVar17;
piVar7 = DAT_8f69d118;
lVar16 = FUN_8f61bcec();
piVar3 = DAT_8f69d118;
if ((int)lVar16 == 5) {
if (piVar7 == DAT_8f69d118) {
iVar12 = *(int *)(param_1 + 0x24);
iVar11 = 0;
param_2[0x120] = *(int *)(iVar12 + 0xcc);
param_2[0x122] = *(int *)(iVar12 + 0xd0);
param_2[0x11f] = 0x10;
param_2[0x11c] = 0x5f;
param_2[300] = 0x25;
do {
*(undefined4 *)((int)param_2 + iVar11 + 0x500) = *(undefined4 *)(iVar12 + iVar11);
iVar11 = iVar11 + 4;
} while (iVar11 != 0x14);
param_2[0x146] = 1;
param_2[0x14d] = 0;
param_2[0x14f] = 0x5a;
param_2[0x151] = 0x10;
param_2[0x152] = 1;
param_2[0x14e] = 1;
param_2[0x14a] = 1;
param_2[0x14a] = 0;
if ((param_2[0x154] & 0x10U) != 0) {
iVar11 = 5000;
do {
if ((param_2[0x154] & 0x10U) == 0) goto LAB_8f61eee0;
iVar11 = iVar11 + -1;
} while (iVar11 != 0);
dprintf((byte *)s_DSI1_PHY_REGULATOR_NOT_READY_exc_8f660c80,param_2,param_2[0x154],0);
}
LAB_8f61eee0:
pbVar5 = (byte *)(iVar12 + 0xf9);
puVar4 = (uint *)(param_2 + 0xc0);
iVar11 = 5;
do {
pbVar15 = pbVar5;
puVar9 = puVar4;
do {
pbVar15 = pbVar15 + 1;
puVar10 = puVar9 + 1;
*puVar9 = (uint)*pbVar15;
DataMemoryBarrier(0xf);
puVar9 = puVar10;
} while (puVar10 != puVar4 + 9);
iVar11 = iVar11 + -1;
pbVar5 = pbVar5 + 9;
puVar4 = puVar4 + 0x10;
} while (iVar11 != 0);
piVar7 = param_2 + 0x110;
do {
piVar1 = (int *)(iVar12 + 0x1c);
iVar12 = iVar12 + 4;
piVar8 = piVar7 + 1;
*piVar7 = *piVar1;
piVar7 = piVar8;
} while (param_2 + 0x11c != piVar8);
if (*(char *)(param_1 + 0xf) == '\x01') {
param_2[0x8b] = 8;
}
if (*(byte *)(param_1 + 0x52) != 0) {
param_2[0x2b] = (uint)*(byte *)(param_1 + 0x52);
}
param_2[0x30] = 0x41b;
if (piVar3 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,param_2,piVar3);
}
goto LAB_8f61f1ec;
}
puVar13 = *(undefined4 **)(param_1 + 0x24);
param_3[0x5c] = 0x5b;
cVar2 = *(char *)((int)puVar13 + 0x127);
param_3[0x61] = puVar13[0x33];
if (cVar2 == '\x01') {
*param_4 = 0;
param_4[6] = puVar13[6];
FUN_8f6104fc(1000);
param_4[5] = puVar13[5];
param_4[3] = puVar13[3];
param_4[2] = puVar13[2];
param_4[1] = puVar13[1];
param_4[4] = puVar13[4];
if ((*param_2 == 0x10030001) || (*param_2 == 0x10040002)) {
param_3[0x77] = 5;
}
else {
param_3[0x77] = 0xd;
}
}
else {
*param_4 = 0;
param_4[6] = puVar13[6];
FUN_8f6104fc(1000);
param_4[1] = puVar13[1];
param_4[2] = puVar13[2];
param_4[3] = puVar13[3];
param_4[4] = puVar13[4];
param_3[0x77] = 0;
*param_4 = *puVar13;
}
DataMemoryBarrier(0xf);
iVar11 = 0x140;
puVar14 = puVar13;
do {
*(undefined4 *)(iVar11 + (int)param_3) = puVar14[7];
DataMemoryBarrier(0xf);
iVar11 = iVar11 + 4;
puVar14 = puVar14 + 1;
} while (iVar11 != 0x170);
pbVar5 = (byte *)((int)puVar13 + 0xf9);
uVar6 = 0;
puVar4 = param_3;
do {
puVar9 = puVar4;
pbVar15 = pbVar5;
do {
pbVar15 = pbVar15 + 1;
puVar10 = puVar9 + 1;
*puVar9 = (uint)*pbVar15;
DataMemoryBarrier(0xf);
puVar9 = puVar10;
} while (puVar10 != puVar4 + 9);
uVar6 = uVar6 + 1;
pbVar5 = pbVar5 + 9;
puVar4 = puVar4 + 0x10;
} while (uVar6 != 5);
param_3[0x60] = 10;
DataMemoryBarrier(0xf);
if (*(char *)(param_1 + 0x53) == '\0') {
LAB_8f61f0ac:
param_3[0x75] = 1;
}
else {
uVar17 = FUN_8f601760(0x1a94400,5);
uVar6 = (uint)((ulonglong)uVar17 >> 0x20);
if ((param_3 == (uint *)((int)uVar17 + 0x1a94400)) || (**(int **)(param_1 + 0x60) == 0x10030001)
) goto LAB_8f61f0ac;
param_3[0x75] = 0;
}
DataMemoryBarrier(0xf);
param_3[0x5c] = 0x5f;
DataMemoryBarrier(0xf);
iVar11 = 0x1b4;
do {
puVar14 = puVar13 + 0x3d;
puVar13 = (undefined4 *)((int)puVar13 + 1);
*(uint *)(iVar11 + (int)param_3) = (uint)*(byte *)puVar14;
iVar11 = iVar11 + 4;
} while (iVar11 != 0x1cc);
DataMemoryBarrier(0xf);
param_2[0x31] = 0x41b;
DataMemoryBarrier(0xf);
lVar16 = (ulonglong)uVar6 << 0x20;
if (piVar7 == DAT_8f69d118) {
return;
}
LAB_8f61f1ec:
// WARNING: Subroutine does not return
FUN_8f635428((int)lVar16,(int)((ulonglong)lVar16 >> 0x20),piVar7);
}
void FUN_8f61f1f0(int param_1,int param_2)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = CONCAT44(param_2,param_1);
if ((*(int *)(*(int *)(param_1 + 0x24) + 0x128) != 2) && (uVar2 = FUN_8f61bcec(), (int)uVar2 != 5)
) {
*(undefined4 *)(param_2 + 0x188) = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0xd0);
DataMemoryBarrier(0xf);
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
void FUN_8f61f258(int param_1)
{
int *piVar1;
undefined4 uVar2;
int *piVar3;
int iVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
iVar4 = (*(undefined4 **)(param_1 + 0x24))[0x4a];
if (iVar4 == 1) {
uVar5 = FUN_8f61eca0(*(undefined4 **)(param_1 + 0x24),*(uint **)(param_1 + 100),
*(undefined4 **)(param_1 + 0x70));
piVar3 = (int *)((ulonglong)uVar5 >> 0x20);
uVar2 = (undefined4)uVar5;
if (*(char *)(param_1 + 0x53) != '\0') {
if (piVar1 == DAT_8f69d118) {
FUN_8f61eca0(*(undefined4 **)(param_1 + 0x24),*(uint **)(param_1 + 0x6c),
*(undefined4 **)(param_1 + 0x70));
return;
}
goto LAB_8f61f334;
}
}
else if (iVar4 == 2) {
uVar2 = 0;
piVar3 = DAT_8f69d118;
}
else {
uVar5 = FUN_8f61ef94(param_1,*(int **)(param_1 + 0x60),*(uint **)(param_1 + 100),
*(undefined4 **)(param_1 + 0x70));
uVar2 = (undefined4)uVar5;
piVar3 = (int *)((ulonglong)uVar5 >> 0x20);
if (*(char *)(param_1 + 0x53) != '\0') {
if (piVar1 == DAT_8f69d118) {
FUN_8f61ef94(param_1,*(int **)(param_1 + 0x68),*(uint **)(param_1 + 0x6c),
*(undefined4 **)(param_1 + 0x70));
return;
}
goto LAB_8f61f334;
}
}
uVar5 = CONCAT44(piVar3,uVar2);
if (piVar1 == DAT_8f69d118) {
return;
}
LAB_8f61f334:
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),piVar1);
}
void FUN_8f61f338(int param_1,int param_2)
{
int *piVar1;
piVar1 = DAT_8f69d118;
*(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_2 + 0xcc);
*(undefined4 *)(param_1 + 0x428) = 0;
*(undefined4 *)(param_1 + 0x4c0) = *(undefined4 *)(param_2 + 0x84);
*(undefined4 *)(param_1 + 0x42c) = *(undefined4 *)(param_2 + 0xb4);
*(undefined4 *)(param_1 + 0x430) = *(undefined4 *)(param_2 + 0xb8);
*(undefined4 *)(param_1 + 0x43c) = *(undefined4 *)(param_2 + 0xbc);
*(uint *)(param_1 + 0x46c) = (uint)*(byte *)(param_2 + 0x9c);
*(uint *)(param_1 + 0x470) = (uint)(*(int *)(param_2 + 0x9c) << 0x16) >> 0x1e;
*(uint *)(param_1 + 0x440) = (uint)*(byte *)(param_2 + 0xa4);
*(uint *)(param_1 + 0x444) = (uint)(*(int *)(param_2 + 0xa4) << 0x16) >> 0x1e;
*(undefined4 *)(param_1 + 0x4e8) = *(undefined4 *)(param_2 + 0xac);
*(undefined4 *)(param_1 + 0x400) = *(undefined4 *)(param_2 + 0x44);
*(undefined4 *)(param_1 + 0x404) = *(undefined4 *)(param_2 + 0x48);
*(uint *)(param_1 + 0x4f0) = *(uint *)(param_2 + 0x50) | *(int *)(param_2 + 0x54) << 3;
*(uint *)(param_1 + 0x4f8) = *(uint *)(param_2 + 0x6c) | *(int *)(param_2 + 0x68) << 3;
*(uint *)(param_1 + 0x4f4) = *(uint *)(param_2 + 0x6c) | *(int *)(param_2 + 0x60) << 3;
*(uint *)(param_1 + 0x4fc) = *(uint *)(param_2 + 0x5c) | *(int *)(param_2 + 0x58) << 3;
*(uint *)(param_1 + 0x500) = *(uint *)(param_2 + 0x74) | *(int *)(param_2 + 0x78) << 4;
*(undefined4 *)(param_1 + 0x410) = *(undefined4 *)(param_2 + 0x4c);
*(uint *)(param_1 + 0x4c4) = *(uint *)(param_2 + 0x7c) | *(int *)(param_2 + 0x80) << 4;
DataMemoryBarrier(0xf);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1,param_2,piVar1);
}
void FUN_8f61f450(int param_1,int param_2)
{
int *piVar1;
piVar1 = DAT_8f69d118;
*(uint *)(param_1 + 0x498) = (uint)*(byte *)(param_2 + 0x38);
*(uint *)(param_1 + 0x49c) = (uint)(*(int *)(param_2 + 0x38) << 0x16) >> 0x1e;
*(uint *)(param_1 + 0x4a0) = (uint)*(byte *)(param_2 + 0x90);
*(uint *)(param_1 + 0x4a4) = (uint)*(byte *)(param_2 + 0x91);
*(uint *)(param_1 + 0x4a8) = (uint)*(byte *)(param_2 + 0x94);
*(uint *)(param_1 + 0x4ac) = (uint)*(byte *)(param_2 + 0x95);
*(uint *)(param_1 + 0x494) = (*(uint *)(param_2 + 0x34) & 1) << 1 | 1;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1,param_2,piVar1);
}
void FUN_8f61f4cc(int param_1,int param_2)
{
int *piVar1;
undefined4 extraout_r1;
uint *puVar2;
byte *pbVar3;
int iVar4;
byte *pbVar5;
int iVar6;
int iVar7;
int iVar8;
uint *puVar9;
piVar1 = DAT_8f69d118;
iVar7 = *(int *)(param_1 + 0x25c);
*(undefined4 *)(param_2 + 0x4c) = 0x1c;
*(undefined4 *)(param_2 + 0x18) = 1;
pbVar3 = (byte *)(iVar7 + 0xf9);
iVar6 = iVar7;
iVar8 = iVar7;
puVar9 = (uint *)(param_2 + 0x100);
do {
pbVar5 = pbVar3 + 4;
puVar2 = puVar9;
do {
pbVar3 = pbVar3 + 1;
*puVar2 = (uint)*pbVar3;
puVar2 = puVar2 + 1;
} while (pbVar3 != pbVar5);
iVar4 = 0;
puVar9[5] = 0x88;
do {
*(undefined4 *)((int)puVar9 + iVar4 + 0x18) = *(undefined4 *)(iVar8 + iVar4 + 0x1c);
iVar4 = iVar4 + 4;
} while (iVar4 != 0x20);
iVar4 = iVar6 + 8;
iVar8 = iVar8 + 0x20;
puVar9[0xe] = *(uint *)(iVar6 + 0xcc);
puVar9[0xf] = *(uint *)(iVar6 + 0xd0);
puVar9[0x19] = *(uint *)(iVar7 + 8);
pbVar3 = pbVar5;
iVar6 = iVar4;
puVar9 = puVar9 + 0x20;
} while (iVar4 != iVar7 + 0x28);
DataMemoryBarrier(0xf);
*(undefined4 *)(param_2 + 0x20) = 0x80;
DataMemoryBarrier(0xf);
FUN_8f6104fc(100);
*(undefined4 *)(param_2 + 0x20) = 0;
if (*(char *)(param_1 + 0x95) == '\0') {
*(undefined4 *)(param_2 + 0x41c) = 1;
*(uint *)(param_2 + 0x18) = *(uint *)(param_2 + 0x18) & 0xfffffffb;
}
else if (*(int *)(param_1 + 0x29c) == param_2) {
*(undefined4 *)(param_2 + 0x41c) = 3;
*(uint *)(param_2 + 0x18) = *(uint *)(param_2 + 0x18) & 0xfffffffb;
}
else {
*(undefined4 *)(param_2 + 0x41c) = 0;
*(uint *)(param_2 + 0x18) = *(uint *)(param_2 + 0x18) | 4;
*(undefined4 *)(param_2 + 0x508) = 3;
}
DataMemoryBarrier(0xf);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,extraout_r1,piVar1);
}
void FUN_8f61f628(int param_1,int param_2)
{
int *piVar1;
uint uVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
*(undefined4 *)(param_1 + 0x48) = 0;
*(undefined4 *)(param_1 + 0x20) = 0x20;
DataMemoryBarrier(0xf);
uVar3 = FUN_8f6104fc(10);
*(undefined4 *)(param_1 + 0x20) = 0;
DataMemoryBarrier(0xf);
*(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(param_2 + 8);
*(undefined4 *)(param_1 + 0x1c) = 0xff;
*(undefined4 *)(param_1 + 0x490) = *(undefined4 *)(param_2 + 0x88);
*(uint *)(param_1 + 0x4b4) = (uint)*(byte *)(param_2 + 0x8c);
*(uint *)(param_1 + 0x4b8) = (uint)*(byte *)(param_2 + 0x8d);
*(uint *)(param_1 + 0x4bc) = *(ushort *)(param_2 + 0x8e) & 0xf;
*(uint *)(param_1 + 0x47c) = (uint)*(byte *)(param_2 + 0x98);
*(uint *)(param_1 + 0x480) = (uint)*(byte *)(param_2 + 0x99);
*(uint *)(param_1 + 0x484) = *(ushort *)(param_2 + 0x9a) & 3;
*(int *)(param_1 + 0x488) = *(int *)(param_2 + 0x2c) << 1 | *(int *)(param_2 + 0x30) << 3;
*(uint *)(param_1 + 0x474) = (uint)*(byte *)(param_2 + 0xa0);
*(uint *)(param_1 + 0x478) = (uint)*(byte *)(param_2 + 0xa1);
*(uint *)(param_1 + 0x448) = (uint)*(byte *)(param_2 + 0xa8);
*(uint *)(param_1 + 0x44c) = (uint)(*(int *)(param_2 + 0xa8) << 0x16) >> 0x1e;
*(undefined4 *)(param_1 + 0x458) = *(undefined4 *)(param_2 + 0xc0);
if (*(int *)(param_2 + 0xd0) == 0) {
uVar2 = *(uint *)(param_2 + 0x70);
}
else {
uVar2 = *(uint *)(param_2 + 0x70) | (*(int *)(param_2 + 0xd0) + -1) * 0x10;
}
*(uint *)(param_1 + 0x504) = uVar2;
*(uint *)(param_1 + 0x10) = *(uint *)(param_2 + 0xd4) | *(int *)(param_2 + 0xd8) << 4;
DataMemoryBarrier(0xf);
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),piVar1);
}
return;
}
void FUN_8f61f74c(int param_1)
{
uint uVar1;
undefined4 uVar2;
int iVar3;
int iVar4;
uint uVar5;
int iVar6;
int iVar7;
longlong lVar8;
undefined8 uVar9;
ulonglong uVar10;
undefined4 local_10c;
undefined4 local_108;
undefined4 local_104;
int local_fc;
undefined4 local_f8;
undefined4 local_f4;
undefined4 local_f0;
undefined4 local_ec;
undefined4 local_e8;
undefined4 local_e4;
undefined4 local_e0;
undefined4 local_dc;
undefined4 local_d8;
undefined4 local_d4;
undefined4 local_d0;
undefined4 local_cc;
undefined4 local_c8;
undefined4 local_c4;
undefined4 local_c0;
undefined4 local_bc;
undefined4 local_b8;
undefined4 local_b4;
undefined4 local_b0;
undefined4 local_ac;
undefined4 local_a8;
undefined4 local_a4;
undefined4 local_a0;
undefined4 local_9c;
undefined4 local_98;
undefined4 local_94;
undefined4 local_90;
undefined4 local_8c;
undefined4 local_88;
uint local_84;
uint local_80;
undefined4 local_7c;
uint local_78;
undefined4 local_74;
undefined4 local_70;
undefined4 local_6c;
undefined4 local_68;
undefined4 local_64;
undefined4 local_60;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
undefined4 local_4c;
undefined4 local_40;
uint local_3c;
undefined4 local_38;
int local_34;
int *local_2c;
iVar3 = *(int *)(param_1 + 0x2a4);
local_2c = DAT_8f69d118;
iVar4 = *(int *)(param_1 + 0x260);
iVar7 = *(int *)(param_1 + 0x29c);
FUN_8f61edb0(*(int *)(param_1 + 0x298));
if (*(char *)(param_1 + 0x28b) != '\0') {
FUN_8f61edb0(*(int *)(param_1 + 0x2a0));
}
FUN_8f61f4cc(param_1,iVar7);
if (*(char *)(param_1 + 0x28b) != '\0') {
FUN_8f61f4cc(param_1,iVar3);
}
local_ac = 0;
local_b4 = 4;
local_b0 = 4;
local_9c = 3;
local_a8 = 0;
local_c0 = 7;
local_90 = 2;
local_a4 = 0;
local_a0 = 0;
local_bc = 1;
local_b8 = 1;
local_94 = 1;
local_8c = 1;
local_98 = 0xb;
local_3c = (uint)*(byte *)(iVar4 + 0x4f);
local_e8 = 4;
local_c8 = 4;
local_c4 = 4;
local_10c = 19200000;
local_f0 = 5;
local_ec = 5;
local_e4 = 5;
local_d0 = 5;
local_d4 = 0x25;
local_cc = 0x7b0c;
local_108 = 0;
local_f8 = 0;
local_f4 = 0;
local_dc = 0;
local_d8 = 0;
local_104 = 1;
local_fc = 1;
local_e0 = 1;
uVar5 = *(uint *)(iVar4 + 0x14);
local_38 = *(undefined4 *)(iVar4 + 0x54);
iVar6 = *(int *)(iVar4 + 0x58);
local_34 = iVar6;
lVar8 = FUN_8f658e24(uVar5 << 0x14,uVar5 >> 0xc,19200000,0);
local_80 = (uint)lVar8 & 0xfffff;
local_84 = (uint)lVar8 >> 0x14 | (int)((ulonglong)lVar8 >> 0x20) << 0xc;
uVar9 = FUN_8f658e24((uint)(lVar8 << 8),(uint)((ulonglong)lVar8 >> 0x18),0xa00000,0);
local_74 = (undefined4)uVar9;
local_40 = 0x3c;
local_7c = 0x130;
local_88 = 1;
lVar8 = FUN_8f658e24(uVar5,0,0x4b00,0);
lVar8 = FUN_8f658e24((uint)(lVar8 << 0x14),(uint)((ulonglong)(lVar8 << 0x14) >> 0x20),1000,0);
uVar10 = FUN_8f658e24((uint)(lVar8 * 5),(uint)((ulonglong)(lVar8 * 5) >> 0x20),1000,0);
iVar4 = 0x131;
lVar8 = (uVar10 & 0xffffffff) * 0x26;
local_78 = (uint)lVar8;
FUN_8f658e24(local_78,(int)(uVar10 >> 0x20) * 0x26 + (int)((ulonglong)lVar8 >> 0x20),0x131,0);
if (iVar4 != 0) {
local_78 = local_78 + 1;
}
local_70 = 0x5e;
local_78 = local_78 & 0xffff;
uVar1 = uVar5 / 1000000;
uVar9 = FUN_8f658e24(uVar1 * 5,(uint)CARRY4(uVar1 * 4,uVar1),10,0);
local_6c = (undefined4)uVar9;
local_68 = 0x5f;
if (uVar5 + 0xb28392ff < 500000000) {
local_64 = 0x3c;
}
else if (uVar5 + 0x94b62dff < 499999999) {
local_64 = 0x28;
}
else if (uVar5 + 0x76e8c8ff < 299999999) {
local_64 = 0x19;
}
else {
local_64 = 0;
}
local_60 = 0x10;
local_58 = 0x30;
local_54 = 0x20;
local_50 = 5;
if (uVar5 + 0x76e8c900 < 0x11e1a301) {
local_4c = 0x2f;
}
else if (uVar5 + 0x94b62e00 < 500000000) {
local_4c = 0x2c;
}
else {
local_4c = 0x28;
}
*(uint *)(iVar7 + 0x10) = *(uint *)(iVar7 + 0x10) & 0xffffff0f | iVar6 << 4;
DataMemoryBarrier(0xf);
*(undefined4 *)(iVar7 + 0x14) = local_104;
if (*(char *)(param_1 + 0x95) != '\0') {
*(uint *)(iVar3 + 0x10) = *(uint *)(iVar3 + 0x10) & 0xffffff0f | local_34 << 4;
DataMemoryBarrier(0xf);
}
FUN_8f61f338(iVar7,(int)&local_10c);
uVar2 = FUN_8f61f628(iVar7,(int)&local_10c);
if (local_fc != 0) {
uVar2 = FUN_8f61f450(iVar7,(int)&local_10c);
}
if (*(char *)(param_1 + 0x95) != '\0') {
FUN_8f61f338(iVar3,(int)&local_10c);
uVar2 = FUN_8f61f628(iVar3,(int)&local_10c);
if (local_fc != 0) {
uVar2 = FUN_8f61f450(iVar3,(int)&local_10c);
}
}
if (local_2c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,&DAT_8f69d118,local_2c);
}
return;
}
void FUN_8f61fb60(int param_1,uint param_2)
{
int iVar1;
int iVar2;
int iVar3;
int *in_lr;
iVar1 = DAT_8f69d118;
if (7 < param_2) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x60a);
}
iVar3 = param_2 * 0x238 + param_1;
if (iVar3 == -8) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x60c);
}
iVar2 = DAT_8f69d118;
*(undefined4 *)(iVar3 + 0x228) = 0;
*(undefined4 *)(iVar3 + 0x22c) = 0;
*(undefined *)(iVar3 + 0x230) = 0;
*(undefined4 *)(iVar3 + 0x238) = 0;
*(undefined4 *)(iVar3 + 0x234) = 0;
*(undefined *)(iVar3 + 0x216) = 0;
*(undefined4 *)(iVar3 + 0x220) = 0;
*(undefined4 *)(iVar3 + 0x224) = 0;
*(undefined *)(iVar3 + 0x23c) = 1;
if (iVar1 == iVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar1,iVar2,(int *)0x1);
}
void FUN_8f61fc3c(int param_1,int *param_2,undefined4 param_3)
{
int *piVar1;
int *extraout_r1;
int *piVar2;
int *extraout_r1_00;
uint uVar3;
undefined4 *puVar4;
int *piVar5;
undefined8 uVar6;
piVar1 = DAT_8f69d118;
piVar5 = (int *)0x0;
piVar2 = DAT_8f69d118;
dprintf((byte *)(s__Press_volume_key_to_select__and_8f65e8a0 + 0x3c),param_2,param_3,DAT_8f69d118)
;
dprintf((byte *)s_dwc_core___0x_x_8f660d18,*(int **)(param_1 + 4),param_3,piVar2);
puVar4 = &DAT_8f69db74;
uVar3 = (&DAT_8f69db74)[(int)(int *)(uint)*(byte *)(param_1 + 0x11d4)];
dprintf((byte *)s_ctrl_state____d___s_8f660d2c,(int *)(uint)*(byte *)(param_1 + 0x11d4),uVar3,
&DAT_8f69db74);
piVar2 = extraout_r1;
do {
dprintf((byte *)(s__Press_volume_key_to_select__and_8f65e8a0 + 0x3c),piVar2,uVar3,puVar4);
dprintf((byte *)s_EP___index____d__status__8f660d44,piVar5,uVar3,puVar4);
dprintf((byte *)s_phy_num____d_8f660d60,(int *)(uint)*(byte *)(param_1 + 0x14),uVar3,puVar4);
dprintf((byte *)s_usb_ep_num____d_8f660d74,(int *)(uint)*(byte *)(param_1 + 8),uVar3,puVar4);
dprintf((byte *)s_dir____d_8f660d88,(int *)(uint)*(byte *)(param_1 + 9),uVar3,puVar4);
dprintf((byte *)s_type____d_8f660d9c,(int *)(uint)*(byte *)(param_1 + 10),uVar3,puVar4);
dprintf((byte *)s_resource_idx____d_8f660db0,(int *)(uint)*(byte *)(param_1 + 0x216),uVar3,
puVar4);
dprintf((byte *)s_trb_queued____d_8f660dc4,*(int **)(param_1 + 0x220),uVar3,puVar4);
dprintf((byte *)s_bytes_queued____d_8f660dd8,*(int **)(param_1 + 0x224),uVar3,puVar4);
piVar5 = (int *)((int)piVar5 + 1);
dprintf((byte *)s_state____d___s_8f660dec,(int *)(uint)*(byte *)(param_1 + 0x23c),
(&DAT_8f69dad4)[(int)(int *)(uint)*(byte *)(param_1 + 0x23c)],puVar4);
uVar3 = (uint)*(byte *)(param_1 + 0x230);
dprintf((byte *)s_ep_req_len____d_trbctl____d_8f660e04,*(int **)(param_1 + 0x22c),uVar3,puVar4);
uVar6 = dprintf((byte *)(s__Press_volume_key_to_select__and_8f65e8a0 + 0x3c),extraout_r1_00,
uVar3,puVar4);
piVar2 = (int *)((ulonglong)uVar6 >> 0x20);
param_1 = param_1 + 0x238;
} while (piVar5 != (int *)0x8);
if (piVar1 == DAT_8f69d118) {
dprintf((byte *)(s__Press_volume_key_to_select__and_8f65e8a0 + 0x3c),piVar2,piVar1,DAT_8f69d118)
;
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar6,piVar2,piVar1);
}
void FUN_8f61fd9c(int *param_1,int *param_2,uint **param_3)
{
char cVar1;
int *piVar2;
uint *puVar3;
uint *puVar4;
int *extraout_r1;
int *extraout_r1_00;
int *extraout_r1_01;
int *piVar5;
int *extraout_r1_02;
int *extraout_r1_03;
int *extraout_r1_04;
uint **ppuVar6;
uint *puVar7;
undefined uVar8;
uint *puVar9;
int iVar10;
int *piVar11;
int iVar12;
uint *puVar13;
uint uVar14;
uint *puVar15;
uint **ppuVar16;
uint *puVar17;
uint uVar18;
int *in_lr;
ulonglong uVar19;
undefined8 uVar20;
piVar2 = DAT_8f69d118;
piVar5 = param_2;
if ((int *)0x7 < param_2) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x6b5);
piVar5 = extraout_r1_04;
}
piVar11 = param_1 + (int)param_2 * 0x8e;
if (piVar11 == (int *)0xfffffff8) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x6b7);
piVar5 = extraout_r1_03;
}
uVar18 = (uint)*(byte *)(param_3 + 2);
ppuVar16 = (uint **)piVar11[0x86];
puVar15 = *param_3;
puVar13 = param_3[1];
if (*(char *)(piVar11 + 0x8f) != '\x01') {
iVar12 = -1;
goto LAB_8f61ff10;
}
if (piVar11[0x88] != 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x6c8);
}
puVar4 = param_3[1];
ppuVar6 = (uint **)param_3[2];
puVar9 = param_3[3];
cVar1 = *(char *)((int)piVar11 + 10);
piVar11[0x8a] = (int)*param_3;
piVar11[0x8b] = (int)puVar4;
piVar11[0x8c] = (int)ppuVar6;
piVar11[0x8d] = (int)puVar9;
piVar11[0x8e] = (int)param_3[4];
piVar11[0x89] = 0;
if (cVar1 == '\0' || cVar1 == '\x03') {
FUN_8f636968((uint *)ppuVar16,0,0x10);
iVar10 = piVar11[0x88] + 1;
iVar12 = piVar11[0x89];
*ppuVar16 = puVar15;
ppuVar16[1] = (uint *)0x0;
ppuVar16[3] = (uint *)((uint)ppuVar16[3] & 0xfffffc03 | 0x803 | uVar18 << 4);
ppuVar16[2] = (uint *)((uint)ppuVar16[2] & 0xff000000 | (uint)puVar13);
piVar11[0x88] = iVar10;
piVar11[0x89] = iVar12 + (int)puVar13;
}
else if (cVar1 == '\x02') {
iVar12 = piVar11[0x87];
if (iVar12 != 1 && puVar13 != (uint *)0x0) {
puVar17 = (uint *)(iVar12 - 2);
puVar9 = puVar13;
do {
ppuVar6 = ppuVar16 + 4;
FUN_8f636968((uint *)ppuVar16,0,0x10);
puVar7 = (uint *)piVar11[0x88];
if (puVar7 == (uint *)0x0) {
puVar3 = puVar7;
puVar13 = puVar7;
if ((uint *)0xfffff8 < puVar9) {
puVar4 = (uint *)(0xfffff8 - ((uint)puVar15 & 7));
puVar13 = (uint *)((int)puVar9 - (int)puVar4);
puVar3 = puVar17;
puVar9 = puVar4;
if (puVar17 != (uint *)0x0) {
puVar3 = (uint *)0x1;
}
}
}
else {
puVar4 = puVar9;
if ((uint *)0xfffff7 < puVar9) {
puVar4 = (uint *)0xfffff8;
}
puVar13 = (uint *)((int)puVar9 - (int)puVar4);
puVar3 = (uint *)(uint)(puVar9 != puVar4 && puVar17 != (uint *)0x0);
puVar9 = puVar4;
}
*ppuVar16 = puVar15;
ppuVar16[1] = (uint *)0x0;
ppuVar16[3] = (uint *)((uVar18 << 4 | 4 | (uint)ppuVar16[3] & 0xfffffc05) & 0xfffff7ff | 1);
ppuVar16[2] = (uint *)((uint)puVar9 | (uint)ppuVar16[2] & 0xff000000);
puVar4 = (uint *)piVar11[0x89];
puVar15 = (uint *)((int)puVar15 + (int)puVar9);
piVar11[0x88] = (int)puVar7 + 1;
iVar12 = (int)puVar4 + (int)puVar9;
puVar17 = (uint *)((int)puVar17 - 1);
piVar11[0x89] = iVar12;
puVar9 = puVar13;
ppuVar16 = ppuVar6;
} while (puVar3 != (uint *)0x0);
}
if (puVar13 != (uint *)0x0) {
dprintf((byte *)s__ERROR__Enough_TRBs_are_not_avai_8f660e38,(int *)puVar4,ppuVar6,iVar12);
dprintf((byte *)s__ERROR__Increase_TRB_chain_for_t_8f660e74,extraout_r1_02,ppuVar6,iVar12);
dprintf((byte *)s__ERROR__phy_ep_num____d_xfer_len_8f660ea0,param_2,param_3[1],iVar12);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x729);
}
uVar14 = (uint)*(ushort *)(piVar11 + 3);
if (*(char *)((int)piVar11 + 9) == '\0') {
uVar19 = FUN_8f658354((uint)param_3[1],uVar14);
iVar12 = (int)(uVar19 >> 0x20);
if (iVar12 == 0) {
if (*(char *)((int)piVar11 + 0xe) == '\0') goto LAB_8f620184;
}
else {
uVar14 = uVar14 - iVar12;
}
FUN_8f636968((uint *)ppuVar16,0,0x10);
FUN_8f636968((uint *)((int)piVar11 + 0x16),0,0x200);
iVar10 = piVar11[0x88] + 1;
iVar12 = piVar11[0x89];
*ppuVar16 = (uint *)((int)piVar11 + 0x16);
ppuVar16[3] = (uint *)((uint)ppuVar16[3] & 0xfffffc03 | 0x803 | uVar18 << 4);
ppuVar16[2] = (uint *)(uVar14 | (uint)ppuVar16[2] & 0xff000000);
ppuVar16[1] = (uint *)0x0;
piVar11[0x88] = iVar10;
piVar11[0x89] = iVar12 + uVar14;
}
else {
LAB_8f620184:
iVar10 = piVar11[0x88];
ppuVar16[-1] = (uint *)((uint)ppuVar16[-1] & 0xfffffffb | 0x802);
}
}
else {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x769);
iVar10 = piVar11[0x88];
}
FUN_8f625b24(piVar11[0x86],iVar10 << 4);
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
}
uVar18 = (uint)*(byte *)(piVar11 + 0x8f);
if (uVar18 == 1) {
FUN_8f621ed8(param_1,(int)param_2);
uVar20 = FUN_8f6223bc(param_1);
piVar5 = (int *)((ulonglong)uVar20 >> 0x20);
if ((int)uVar20 == 0) {
uVar8 = 3;
}
else {
uVar8 = 2;
}
*(undefined *)(piVar11 + 0x8f) = uVar8;
}
else {
dprintf((byte *)s__Attempting_START_TRANSFER_in_in_8f660ec8,(int *)(&DAT_8f69dad4)[uVar18],
uVar18,&DAT_8f69dad4);
FUN_8f61fc3c((int)param_1,extraout_r1,uVar18);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x78e);
piVar5 = extraout_r1_00;
}
iVar12 = DAT_8f67f324 + -1;
DAT_8f67f324 = iVar12;
if (iVar12 == 0) {
FUN_8f625b8c();
piVar5 = extraout_r1_01;
}
else {
iVar12 = 0;
}
LAB_8f61ff10:
if (piVar2 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar12,piVar5,piVar2);
}
return;
}
void FUN_8f620290(int *param_1)
{
int *piVar1;
uint *local_28;
undefined4 local_24;
undefined local_20;
undefined4 local_1c;
undefined4 local_18;
int *local_14;
local_14 = DAT_8f69d118;
FUN_8f636968((uint *)param_1[0x476],0,8);
FUN_8f625b24(param_1[0x476],8);
local_28 = (uint *)param_1[0x476];
local_18 = 0;
local_1c = 0;
local_24 = 8;
local_20 = 2;
FUN_8f61fd9c(param_1,(int *)0x0,&local_28);
piVar1 = DAT_8f69d118;
*(undefined *)(param_1 + 0x475) = 1;
if (local_14 == piVar1) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(1,0x11d4,local_14);
}
void FUN_8f620328(int *param_1,uint param_2)
{
byte bVar1;
int *piVar2;
int *piVar3;
int iVar4;
uint uVar5;
int *in_lr;
undefined8 uVar6;
piVar2 = DAT_8f69d118;
if (7 < param_2) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x5ac);
}
bVar1 = *(byte *)(param_1 + param_2 * 0x8e + 5);
FUN_8f622038(param_1,param_2,0);
*(undefined *)(param_1 + param_2 * 0x8e + 0x8f) = 1;
uVar6 = FUN_8f621fe0(param_1,(uint)bVar1);
piVar3 = DAT_8f69d118;
if (piVar2 == DAT_8f69d118) {
iVar4 = *param_1;
uVar5 = *(uint *)(iVar4 + 0xc720) | 1 << (uint)bVar1;
*(uint *)(iVar4 + 0xc720) = uVar5;
if (piVar3 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar4,uVar5,piVar3);
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar6,(int)((ulonglong)uVar6 >> 0x20),piVar2);
}
void FUN_8f6203dc(int **param_1,int *param_2,undefined4 param_3)
{
int *piVar1;
int *piVar2;
undefined4 uVar3;
undefined *puVar4;
undefined4 *puVar5;
int *piVar6;
uint uVar7;
undefined8 uVar8;
piVar1 = DAT_8f69d118;
piVar6 = *param_1;
piVar2 = DAT_8f69d118;
dprintf((byte *)(s_ERROR__JUN____USB_connect____8f663b3c + 0x1c),param_2,param_3,DAT_8f69d118);
uVar7 = (uint)((int)piVar6 << 0xc) >> 0x18;
dprintf((byte *)s_EP_event__0x_x__details_8f660f20,*param_1,param_3,piVar2);
piVar2 = (int *)((uint)((int)piVar6 << 0x16) >> 0x1c);
puVar4 = &DAT_8f69dbc4;
uVar3 = *(undefined4 *)(&DAT_8f69dbc4 + (int)piVar2 * 4);
dprintf((byte *)s_event_id____d___s_8f660f3c,piVar2,uVar3,&DAT_8f69dbc4);
dprintf((byte *)s_ep_phy_num____d_8f660f58,(int *)((uint)((int)piVar6 << 0x1a) >> 0x1b),uVar3,
puVar4);
piVar2 = (int *)(uVar7 & 3);
puVar5 = &DAT_8f69db74;
uVar3 = (&DAT_8f69db74)[(int)piVar2];
dprintf((byte *)s_event_ctrl_stage____d___s_8f660f70,piVar2,uVar3,&DAT_8f69db74);
dprintf((byte *)s_event_status____d_8f660f8c,(int *)(uVar7 & 0xf),uVar3,puVar5);
dprintf((byte *)s_xfer_res_idx____d_8f660fa4,(int *)((uint)(int *)((uint)piVar6 >> 0x10) & 0x7f),
uVar3,puVar5);
dprintf((byte *)s_event_param____d_8f660fbc,(int *)((uint)piVar6 >> 0x10),uVar3,puVar5);
piVar2 = (int *)((uint)((int)piVar6 << 4) >> 0x1c);
uVar8 = dprintf((byte *)s_event_cmd_type____d___s_8f660fd4,piVar2,
*(undefined4 *)(&DAT_8f69d994 + (int)piVar2 * 4),&DAT_8f69d994);
piVar2 = (int *)((ulonglong)uVar8 >> 0x20);
if (piVar1 == DAT_8f69d118) {
dprintf((byte *)(s__Press_volume_key_to_select__and_8f65e8a0 + 0x3c),piVar2,piVar1,DAT_8f69d118)
;
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar8,piVar2,piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f62082c)
void FUN_8f6204dc(void)
{
DAT_8f69dbe0 = s_DWC_EVENT_EP_CMD_COMPLETE_8f660ff0;
DAT_8f69dbd0 = s_DWC_EVENT_EP_XFER_NOT_READY_8f661010;
DAT_8f69dbcc = s_DWC_EVENT_EP_XFER_IN_PROGRESS_8f661030;
DAT_8f69dbc8 = s_DWC_EVENT_EP_XFER_COMPLETE_8f661050;
DAT_8f69da14 = s_DWC_EVENT_DEVICE_EVENT_ID_VENDOR_8f661070;
DAT_8f69da10 = s_DWC_EVENT_DEVICE_EVENT_ID_BUFFER_8f6610a4;
DAT_8f69da0c = s_DWC_EVENT_DEVICE_EVENT_ID_GENERI_8f6610d8;
DAT_8f69da08 = s_DWC_EVENT_DEVICE_EVENT_ID_ERRATI_8f66110c;
DAT_8f69da00 = s_DWC_EVENT_DEVICE_EVENT_ID_SOF_8f661140;
DAT_8f69d9fc = s_DWC_EVENT_DEVICE_EVENT_ID_SUSPEN_8f661174;
DAT_8f69d9f8 = s_DWC_EVENT_DEVICE_EVENT_ID_HIBER_8f6611a8;
DAT_8f69d9f4 = s_DWC_EVENT_DEVICE_EVENT_ID_WAKEUP_8f6611dc;
DAT_8f69d9f0 = s_DWC_EVENT_DEVICE_EVENT_ID_USB_LI_8f661210;
DAT_8f69d9ec = s_DWC_EVENT_DEVICE_EVENT_ID_CONNEC_8f661244;
DAT_8f69d9e8 = s_DWC_EVENT_DEVICE_EVENT_ID_USB_RE_8f661278;
DAT_8f69d9e4 = s_DWC_EVENT_DEVICE_EVENT_ID_DISCON_8f6612ac;
DAT_8f69db74 = s_EP_FSM_INIT_8f6612e0;
DAT_8f69db78 = s_EP_FSM_SETUP_8f6612f8;
DAT_8f69db7c = s_EP_FSM_CTRL_DATA_8f661310;
DAT_8f69db80 = s_EP_FSM_WAIT_FOR_HOST_2_8f661328;
DAT_8f69db84 = s_EP_FSM_WAIT_FOR_HOST_3_8f661340;
DAT_8f69db88 = s_EP_FSM_STATUS_2_8f661358;
DAT_8f69db8c = s_EP_FSM_STATUS_3_8f661370;
DAT_8f69db90 = s_EP_FSM_STALL_8f661388;
DAT_8f69dad4 = s_EP_STATE_INIT_8f6613a0;
DAT_8f69dad8 = s_EP_STATE_INACTIVE_8f6613b0;
DAT_8f69dadc = s_EP_STATE_START_TRANSFER_8f6613c4;
DAT_8f69dae0 = s_EP_STATE_XFER_IN_PROG_8f6613dc;
DAT_8f69da34 = s_ON_8f6613f4;
DAT_8f69da3c = &DAT_8f661404;
DAT_8f69da40 = s_L2_8f661414;
DAT_8f69da44 = s_DISCONNECTED_8f661424;
DAT_8f69da48 = s_EARLY_SUSPEND_8f661434;
DAT_8f69da6c = s_RESET_8f661444;
DAT_8f69da70 = s_RESUME_8f661454;
DAT_8f69da84 = s_U0_8f661464;
DAT_8f69da8c = s_U2_8f661484;
DAT_8f69da88 = s_U1_8f661474;
DAT_8f69da94 = s_SS_DIS_8f6614a4;
DAT_8f69da90 = s_U3_8f661494;
DAT_8f69da9c = s_SS_INACT_8f6614c4;
DAT_8f69da98 = s_RX_DET_8f6614b4;
DAT_8f69daa4 = s_RECOV_8f6614e4;
DAT_8f69daa0 = s_POLL_8f6614d4;
DAT_8f69daac = s_CMPLY_8f661504;
DAT_8f69daa8 = s_HRESET_8f6614f4;
DAT_8f69dac0 = s_RESUME_RESET_8f661524;
DAT_8f69dab0 = s_LPBK_8f661514;
DAT_8f69db24 = s_DSTS_CONNECTSPD_HS_8f661534;
DAT_8f69db2c = s_DSTS_CONNECTSPD_LS_8f66155c;
DAT_8f69db34 = s_DSTS_CONNECTSPD_SS_8f661570;
DAT_8f69db28 = s_DSTS_CONNECTSPD_FS1_8f661548;
DAT_8f69db30 = s_DSTS_CONNECTSPD_FS1_8f661548;
DAT_8f69d99c = s_DEPCMD_CMD_SET_TR_CONF_8f6615a0;
DAT_8f69d9a0 = s_DEPCMD_CMD_GET_EP_STATE_8f6615bc;
DAT_8f69d9a4 = s_DEPCMD_CMD_SET_STALL_8f6615d8;
DAT_8f69d9a8 = s_DEPCMD_CMD_CLEAR_STALL_8f6615f4;
DAT_8f69d9ac = s_DEPCMD_CMD_START_TRANSFER_8f661610;
DAT_8f69d9b0 = s_DEPCMD_CMD_UPDATE_TRANSFER_8f66162c;
DAT_8f69d998 = s_DEPCMD_CMD_SET_EP_CONF_8f661584;
DAT_8f69d9b4 = s_DEPCMD_CMD_END_TRANSFER_8f661648;
DAT_8f69d9b8 = s_DEPCMD_CMD_START_NEW_CONF_8f661664;
return;
}
void FUN_8f620830(uint *param_1,undefined4 param_2)
{
ushort uVar1;
int *piVar2;
uint *puVar3;
undefined4 extraout_r1;
uint uVar4;
uint uVar5;
int *in_lr;
uint uVar6;
piVar2 = DAT_8f69d118;
puVar3 = (uint *)FUN_8f63666c(0x11f4,param_2);
if (puVar3 == (uint *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0xd4);
}
FUN_8f636968(puVar3,0,0x11f4);
uVar1 = *(ushort *)(param_1 + 2);
uVar4 = param_1[1];
uVar6 = param_1[3];
uVar5 = param_1[4];
*puVar3 = *param_1;
*(ushort *)(puVar3 + 0x473) = uVar1;
puVar3[0x472] = uVar4;
*(ushort *)((int)puVar3 + 0x11ce) = (uVar1 >> 2) - 1;
puVar3[0x477] = uVar6;
puVar3[0x478] = uVar5;
*(undefined2 *)(puVar3 + 0x474) = 0;
uVar4 = FUN_8f6366a8((int *)0x40,0x40);
puVar3[0x476] = uVar4;
if (uVar4 == 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0xe4);
}
uVar4 = param_1[6];
puVar3[0x479] = param_1[5];
puVar3[0x47a] = uVar4;
uVar4 = FUN_8f6229cc((int *)puVar3);
puVar3[1] = uVar4;
FUN_8f61097c(0xac,FUN_8f620b24,(int *)puVar3);
FUN_8f6204dc();
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(puVar3,extraout_r1,piVar2);
}
void FUN_8f620994(int param_1,int *param_2,uint param_3,uint *param_4)
{
bool bVar1;
int *piVar2;
int *piVar3;
uint uVar4;
uint uVar5;
int iVar6;
uint uVar7;
uint uVar8;
int iVar9;
int *in_lr;
piVar2 = DAT_8f69d118;
iVar6 = *param_2;
if (7 < param_3) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x242);
}
iVar9 = param_3 * 0x238 + param_1;
if (iVar9 == -8) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x244);
}
uVar5 = *(uint *)(iVar9 + 0x220);
uVar4 = *(uint *)(iVar9 + 0x218);
if (uVar5 == 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x24b);
FUN_8f625b4c(uVar4,0);
uVar8 = uVar5;
}
else {
FUN_8f625b4c(uVar4,uVar5 << 4);
uVar7 = 0;
bVar1 = false;
uVar8 = 0;
do {
if (uVar8 == 0) {
uVar8 = *(uint *)(uVar4 + 8) >> 0x1c;
}
uVar7 = uVar7 + (*(uint *)(uVar4 + 8) & 0xffffff);
if ((((uint)(iVar6 << 0xc) >> 0x18 & 2) != 0) && ((*(uint *)(uVar4 + 0xc) & 1) != 0)) {
*(uint *)(uVar4 + 0xc) = *(uint *)(uVar4 + 0xc) & 0xfffffffe;
bVar1 = true;
}
uVar5 = uVar5 - 1;
uVar4 = uVar4 + 0x10;
} while (uVar5 != 0);
uVar5 = uVar7;
if (bVar1) {
FUN_8f625b24(*(uint *)(iVar9 + 0x218),*(int *)(iVar9 + 0x220) << 4);
}
}
piVar3 = DAT_8f69d118;
*(undefined4 *)(iVar9 + 0x220) = 0;
*param_4 = uVar5;
if (piVar2 != piVar3) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar8,0,piVar2);
}
return;
}
void FUN_8f620b24(int **param_1)
{
int *piVar1;
int *extraout_r1;
int *extraout_r1_00;
int *extraout_r1_01;
int *piVar2;
int *extraout_r1_02;
int *extraout_r1_03;
int *extraout_r1_04;
int *extraout_r1_05;
int *extraout_r1_06;
int *extraout_r1_07;
char *pcVar3;
undefined4 uVar4;
char *pcVar5;
int iVar6;
int **ppiVar7;
uint uVar8;
int **ppiVar9;
uint uVar10;
int **ppiVar11;
int *in_lr;
undefined8 uVar12;
uint *local_4c;
undefined4 local_48;
undefined local_44;
undefined4 local_40;
undefined4 local_3c;
undefined4 local_38;
undefined4 local_34;
undefined4 local_30;
int *local_2c;
local_38 = (int *)0x0;
local_34 = 0;
local_2c = DAT_8f69d118;
local_30 = 0;
pcVar3 = s_ep____NULL_8f660d0c;
do {
uVar12 = FUN_8f622634(param_1,&local_38);
piVar2 = local_38;
piVar1 = (int *)((ulonglong)uVar12 >> 0x20);
if ((int)uVar12 == 0) {
if (local_2c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(0,piVar1,local_2c);
}
return;
}
if (((uint)local_38 & 1) == 0) {
ppiVar9 = (int **)((uint)((int)local_38 << 0x1a) >> 0x1b);
if (ppiVar9 < (int **)0x2) {
iVar6 = (int)(int *)(uint)*(byte *)(param_1 + 0x475) + -1;
switch(iVar6) {
case 0:
ppiVar7 = (int **)((uint)((int)local_38 << 0x16) >> 0x1c);
pcVar3 = (char *)(param_1 + (int)ppiVar9 * 0x8e);
ppiVar11 = (int **)((int)pcVar3 + 8);
if (ppiVar7 == (int **)0x3) {
LAB_8f621334:
FUN_8f6220d8((int *)param_1,(int)ppiVar9);
*(undefined *)(param_1 + 0x475) = 7;
pcVar3 = (char *)(int **)0x7;
}
else if (ppiVar7 == (int **)0x7) {
if ((uint)((int)local_38 << 4) >> 0x1c == 6) {
if (*(char *)((int)pcVar3 + 0x23c) != '\x02') {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x295);
}
if (((uint)piVar2 & 0xf000) != 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x297);
}
LAB_8f621114:
*(undefined *)(ppiVar11 + 0x8d) = 3;
*(byte *)((int)ppiVar11 + 0x20e) = (byte)((uint)local_38 >> 0x10) & 0x7f;
pcVar3 = (char *)(int **)0x3;
}
}
else {
if (ppiVar7 != (int **)0x1) goto LAB_8f620e3c;
local_4c = (uint *)0x0;
if (ppiVar9 != (int **)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x2b6);
}
if (*(char *)((int)pcVar3 + 0x23c) != '\x03') {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x2b9);
}
*(undefined *)((int)pcVar3 + 0x23c) = 1;
pcVar3 = (char *)ppiVar9;
iVar6 = FUN_8f620994((int)param_1,&local_38,(uint)ppiVar9,(uint *)&local_4c);
if ((iVar6 != 0) || (local_4c != (uint *)0x0)) goto LAB_8f6213c4;
piVar2 = param_1[0x476];
FUN_8f625b4c((uint)piVar2,8);
iVar6 = (*(code *)param_1[0x47a])(param_1[0x479],piVar2);
if (iVar6 != 2) {
if (iVar6 == 3) goto LAB_8f6210c4;
goto LAB_8f621334;
}
pcVar3 = (char *)0x3;
*(undefined *)(param_1 + 0x475) = 3;
}
break;
case 1:
ppiVar7 = (int **)((uint)((int)local_38 << 0x16) >> 0x1c);
uVar8 = (uint)((int)local_38 << 0xc) >> 0x18;
ppiVar11 = param_1 + (int)ppiVar9 * 0x8e + 2;
if (ppiVar7 == (int **)0x3) {
if ((uVar8 & 3) != 1) {
pcVar3 = s_platform_msm_shared_usb30_dwc_c_8f660cb8;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x31e);
}
if (1 < (byte)(*(char *)(param_1 + (int)ppiVar9 * 0x8e + 0x8f) - 2U)) {
FUN_8f621f7c((int *)param_1,(uint)ppiVar9 ^ 1);
FUN_8f6220d8((int *)param_1,(uint)ppiVar9 ^ 1);
pcVar3 = (char *)0x7;
*(undefined *)(param_1 + 0x475) = 7;
}
}
else if (ppiVar7 == (int **)0x7) {
if ((uint)((int)local_38 << 4) >> 0x1c == 6) {
if (*(char *)(param_1 + (int)ppiVar9 * 0x8e + 0x8f) != '\x02') {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x308);
}
if ((uVar8 & 0xf) != 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x30a);
}
goto LAB_8f621114;
}
}
else {
if (ppiVar7 != (int **)0x1) goto LAB_8f620e3c;
if (*(char *)(param_1 + (int)ppiVar9 * 0x8e + 0x8f) != '\x03') {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x347);
}
*(undefined *)(param_1 + (int)ppiVar9 * 0x8e + 0x8f) = 1;
FUN_8f620994((int)param_1,&local_38,(uint)ppiVar9,(uint *)&local_4c);
pcVar3 = &DAT_00000004;
*(undefined *)(param_1 + 0x475) = 4;
}
break;
case 2:
ppiVar7 = (int **)((uint)((int)local_38 << 0x16) >> 0x1c);
if (ppiVar7 == (int **)0x3) {
uVar8 = (uint)((int)local_38 << 0x12) >> 0x1e;
if (uVar8 == 1) goto LAB_8f621334;
if (uVar8 == 2) {
if (ppiVar9 != (int **)0x1) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x385);
}
local_3c = 0;
local_40 = 0;
local_4c = (uint *)0x0;
local_48 = 0;
local_44 = 3;
FUN_8f61fd9c((int *)param_1,(int *)ppiVar9,&local_4c);
pcVar3 = &DAT_00000005;
*(undefined *)(param_1 + 0x475) = 5;
}
else {
pcVar3 = s_platform_msm_shared_usb30_dwc_c_8f660cb8;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x395);
}
}
else {
LAB_8f620e34:
if (ppiVar7 != (int **)0x7) {
LAB_8f620e3c:
piVar2 = *(int **)(&DAT_8f69dbc4 + (int)ppiVar7 * 4);
goto LAB_8f620e40;
}
}
break;
case 3:
ppiVar7 = (int **)((uint)((int)local_38 << 0x16) >> 0x1c);
if (ppiVar7 != (int **)0x3) goto LAB_8f620e34;
uVar8 = (uint)((int)local_38 << 0x12) >> 0x1e;
if (uVar8 == 1) {
if (1 < (byte)(*(char *)(param_1 + (int)ppiVar9 * 0x8e + 0x8f) - 2U)) goto LAB_8f621334;
local_3c = 0;
local_40 = 0;
local_4c = (uint *)0x0;
local_48 = 0;
local_44 = 5;
FUN_8f61fd9c((int *)param_1,(int *)ppiVar9,&local_4c);
LAB_8f6210c4:
pcVar3 = (char *)0x2;
*(undefined *)(param_1 + 0x475) = 2;
}
else if (uVar8 == 2) {
local_3c = 0;
local_40 = 0;
local_4c = (uint *)0x0;
local_48 = 0;
local_44 = 4;
FUN_8f61fd9c((int *)param_1,(int *)ppiVar9,&local_4c);
pcVar3 = &DAT_00000006;
*(undefined *)(param_1 + 0x475) = 6;
}
else {
pcVar3 = s_platform_msm_shared_usb30_dwc_c_8f660cb8;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x3e6);
}
break;
case 4:
ppiVar7 = (int **)((uint)((int)local_38 << 0x16) >> 0x1c);
pcVar3 = (char *)(param_1 + (int)ppiVar9 * 0x8e);
ppiVar11 = (int **)((int)pcVar3 + 8);
if (ppiVar7 == (int **)0x1) {
pcVar5 = pcVar3;
if (ppiVar9 != (int **)0x1) {
pcVar5 = s_platform_msm_shared_usb30_dwc_c_8f660cb8;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x41d);
}
if (*(char *)((int)pcVar3 + 0x23c) != '\x03') {
pcVar5 = s_platform_msm_shared_usb30_dwc_c_8f660cb8;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x422);
}
if (param_1[0x47b] == (int *)0x0) {
*(undefined *)((int)pcVar3 + 0x23c) = 1;
FUN_8f620994((int)param_1,&local_38,(uint)ppiVar9,(uint *)&local_4c);
FUN_8f620290((int *)param_1);
pcVar3 = (char *)ppiVar9;
}
else {
FUN_8f622400((int *)param_1);
pcVar3 = pcVar5;
}
}
else {
if (ppiVar7 != (int **)0x7) goto LAB_8f620e3c;
if ((uint)((int)local_38 << 4) >> 0x1c == 6) {
if (*(char *)((int)pcVar3 + 0x23c) != '\x02') {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x409);
}
if (((uint)piVar2 & 0xf000) != 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x40b);
}
goto LAB_8f621114;
}
}
break;
case 5:
ppiVar7 = (int **)((uint)((int)local_38 << 0x16) >> 0x1c);
pcVar3 = (char *)(param_1 + (int)ppiVar9 * 0x8e);
ppiVar11 = (int **)((int)pcVar3 + 8);
if (ppiVar7 == (int **)0x1) {
if (*(char *)((int)pcVar3 + 0x23c) != '\x03') {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x471);
}
*(undefined *)((int)pcVar3 + 0x23c) = 1;
pcVar3 = (char *)ppiVar9;
iVar6 = FUN_8f620994((int)param_1,&local_38,(uint)ppiVar9,(uint *)&local_4c);
if ((iVar6 != 0) || (local_4c != (uint *)0x0)) goto LAB_8f621334;
LAB_8f6213c4:
FUN_8f620290((int *)param_1);
}
else {
if (ppiVar7 != (int **)0x7) goto LAB_8f620e3c;
if ((uint)((int)local_38 << 4) >> 0x1c == 6) {
if (*(char *)((int)pcVar3 + 0x23c) != '\x02') {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x45b);
}
if (((uint)piVar2 & 0xf000) != 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x45d);
}
goto LAB_8f621114;
}
}
break;
case 6:
if ((uint)((int)local_38 << 0x16) >> 0x1c == 7) {
uVar8 = (uint)((int)local_38 << 4) >> 0x1c;
if (uVar8 == 4) goto LAB_8f6213c4;
if (uVar8 == 8) {
*(undefined *)(param_1 + (int)ppiVar9 * 0x8e + 0x8f) = 1;
*(undefined *)((int)param_1 + (int)ppiVar9 * 0x238 + 0x216) = 0;
pcVar3 = (char *)(int **)0x0;
}
}
break;
default:
dprintf((byte *)s_Invalid_ctrl_state____d_8f661794,(int *)(uint)*(byte *)(param_1 + 0x475)
,pcVar3,iVar6);
FUN_8f6203dc((int **)&local_38,extraout_r1_04,pcVar3);
FUN_8f61fc3c((int)param_1,extraout_r1_05,pcVar3);
pcVar3 = s_platform_msm_shared_usb30_dwc_c_8f660cb8;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x227);
}
}
else {
if ((int **)0x7 < ppiVar9) {
pcVar3 = s_platform_msm_shared_usb30_dwc_c_8f660cb8;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x570);
piVar1 = extraout_r1_06;
}
if (param_1 + (int)ppiVar9 * 0x8e == (int **)0xfffffff8) {
pcVar3 = s_platform_msm_shared_usb30_dwc_c_8f660cb8;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x572);
piVar1 = extraout_r1_07;
}
piVar2 = local_38;
uVar8 = (uint)*(byte *)(param_1 + (int)ppiVar9 * 0x8e + 0x8f);
if (uVar8 == 2) {
uVar8 = (uint)((int)local_38 << 0x1a) >> 0x1b;
uVar10 = (uint)((int)local_38 << 0x16) >> 0x1c;
if (7 < uVar8) {
pcVar3 = s_platform_msm_shared_usb30_dwc_c_8f660cb8;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x4ea);
}
ppiVar9 = param_1 + uVar8 * 0x8e;
ppiVar7 = ppiVar9;
if (ppiVar9 == (int **)0xfffffff8) {
ppiVar7 = (int **)0x4ec;
pcVar3 = s_platform_msm_shared_usb30_dwc_c_8f660cb8;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x4ec);
}
if (uVar10 == 7) {
pcVar3 = (char *)((uint)((int)local_38 << 4) >> 0x1c);
if (pcVar3 == &DAT_00000006) {
if (((uint)piVar2 & 0xf000) == 0) {
*(byte *)((int)ppiVar9 + 0x216) = (byte)((uint)((int)local_38 << 9) >> 0x19);
*(undefined *)(ppiVar9 + 0x8f) = 3;
pcVar3 = (char *)(int **)0x3;
}
else {
if (ppiVar9[0x8e] != (int *)0x0) {
pcVar3 = (char *)0xffffffff;
(*(code *)ppiVar9[0x8e])(ppiVar9[0x8d],0);
}
FUN_8f61fb60((int)param_1,uVar8);
}
}
}
else {
piVar2 = *(int **)(&DAT_8f69dbc4 + uVar10 * 4);
LAB_8f620e40:
dprintf((byte *)s__Ignore_the_unexpected_EP_event__8f661730,piVar2,pcVar3,ppiVar7);
FUN_8f6203dc((int **)&local_38,extraout_r1_02,pcVar3);
FUN_8f61fc3c((int)param_1,extraout_r1_03,pcVar3);
}
}
else if (uVar8 == 3) {
ppiVar9 = (int **)((uint)((int)local_38 << 0x1a) >> 0x1b);
uVar8 = (uint)((int)local_38 << 0x16) >> 0x1c;
if ((int **)0x7 < ppiVar9) {
pcVar3 = s_platform_msm_shared_usb30_dwc_c_8f660cb8;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x51c);
}
ppiVar11 = param_1 + (int)ppiVar9 * 0x8e;
ppiVar7 = ppiVar11;
if (ppiVar11 == (int **)0xfffffff8) {
ppiVar7 = (int **)0x51e;
pcVar3 = s_platform_msm_shared_usb30_dwc_c_8f660cb8;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x51e);
}
if (uVar8 != 3) {
if (uVar8 == 7) {
if ((local_38._3_1_ & 0xf) != 8) goto LAB_8f620bfc;
if (ppiVar11[0x8e] != (int *)0x0) {
pcVar3 = (char *)0xffffffff;
(*(code *)ppiVar11[0x8e])(ppiVar11[0x8d],0);
}
}
else {
if (uVar8 != 1) {
piVar2 = *(int **)(&DAT_8f69dbc4 + uVar8 * 4);
goto LAB_8f620e40;
}
pcVar3 = (char *)ppiVar9;
ppiVar7 = (int **)FUN_8f620994((int)param_1,&local_38,(uint)ppiVar9,(uint *)&local_4c)
;
if (ppiVar11[0x8e] != (int *)0x0) {
pcVar3 = (char *)ppiVar7;
if (ppiVar7 != (int **)0x0) {
pcVar3 = (char *)0xffffffff;
}
(*(code *)ppiVar11[0x8e])(ppiVar11[0x8d],(int)ppiVar11[0x89] - (int)local_4c);
}
}
FUN_8f61fb60((int)param_1,(uint)ppiVar9);
}
}
else if (uVar8 == 1) {
ppiVar7 = (int **)((uint)((int)local_38 << 0x16) >> 0x1c);
if (ppiVar7 != (int **)0x3) goto LAB_8f620e34;
}
else {
dprintf((byte *)s__EP_state_is_invalid__Asserting__8f6617b0,piVar1,pcVar3,uVar8);
FUN_8f6203dc((int **)&local_38,extraout_r1,pcVar3);
FUN_8f61fc3c((int)param_1,extraout_r1_00,pcVar3);
pcVar3 = s_platform_msm_shared_usb30_dwc_c_8f660cb8;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x594);
}
}
}
else {
uVar8 = (uint)((int)local_38 << 0x14) >> 0x1c;
// WARNING: Could not recover jumptable at 0x8f620c30. Too many branches
// WARNING: Treating indirect jump as call
if (uVar8 < 0xd) {
(*(code *)(&PTR_LAB_8f620c38)[uVar8])();
return;
}
uVar4 = (&DAT_8f69db74)[*(byte *)(param_1 + 0x475)];
dprintf((byte *)s__Unhandled_DEVICE_EVENT___s_in___8f66169c,(int *)(&DAT_8f69d9e4)[uVar8],
uVar4,&DAT_8f69d9e4);
FUN_8f61fc3c((int)param_1,extraout_r1_01,uVar4);
pcVar3 = s_platform_msm_shared_usb30_dwc_c_8f660cb8;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x151);
}
LAB_8f620bfc:
FUN_8f6227e8((int *)param_1,(int)uVar12);
} while( true );
}
void FUN_8f6218f4(int *param_1)
{
int *piVar1;
int *piVar2;
int iVar3;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
int *in_lr;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
FUN_8f622318(param_1);
FUN_8f622b38(param_1);
FUN_8f622970(param_1,extraout_r1);
FUN_8f6225c8(param_1);
FUN_8f622828(param_1,0x47);
FUN_8f622180(param_1,0,0);
*(undefined2 *)(param_1 + 3) = 0x200;
param_1[0x87] = 1;
*(undefined *)(param_1 + 2) = 0;
*(undefined *)((int)param_1 + 9) = 0;
*(undefined *)(param_1 + 5) = 0;
*(undefined *)((int)param_1 + 10) = 0;
*(undefined *)(param_1 + 0x8f) = 0;
param_1[4] = 0;
*(undefined *)((int)param_1 + 0x15) = 0;
*(undefined *)((int)param_1 + 0xe) = 0;
piVar2 = (int *)FUN_8f635d28(0x40,0x10);
iVar3 = FUN_8f6366a8(piVar2,param_1[0x87] * 0x10 + 0x3fU & 0xffffffc0);
param_1[0x86] = iVar3;
if (iVar3 == 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x5d2);
}
*(undefined2 *)(param_1 + 0x91) = 0x200;
param_1[0x88] = 0;
param_1[0x89] = 0;
*(undefined *)(param_1 + 0x90) = 0;
*(undefined *)((int)param_1 + 0x242) = 0;
*(undefined *)(param_1 + 0x11d) = 0;
param_1[0x92] = 0;
*(undefined *)((int)param_1 + 0x24d) = 0;
*(undefined *)((int)param_1 + 0x246) = 0;
*(undefined *)((int)param_1 + 0x241) = 1;
*(undefined *)(param_1 + 0x93) = 1;
param_1[0x115] = 1;
piVar2 = (int *)FUN_8f635d28(0x40,0x10);
iVar3 = FUN_8f6366a8(piVar2,param_1[0x115] * 0x10 + 0x3fU & 0xffffffc0);
param_1[0x114] = iVar3;
if (iVar3 == 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x5e6);
}
param_1[0x116] = 0;
param_1[0x117] = 0;
FUN_8f620328(param_1,0);
FUN_8f620328(param_1,1);
uVar4 = FUN_8f610944(0xac,extraout_r1_00);
if (piVar1 == DAT_8f69d118) {
FUN_8f620290(param_1);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
void FUN_8f621ac0(int param_1,byte *param_2)
{
byte bVar1;
byte bVar2;
byte bVar3;
byte bVar4;
undefined2 uVar5;
int *piVar6;
int *piVar7;
uint uVar8;
undefined4 uVar9;
uint uVar10;
char cVar11;
uint *puVar12;
uint *puVar13;
uint uVar14;
uint uVar15;
int iVar16;
int *in_lr;
piVar6 = DAT_8f69d118;
uVar15 = (uint)param_2[1] | (*param_2 & 0x7f) << 1;
if (7 < uVar15) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x65d);
}
iVar16 = uVar15 * 0x238 + 8;
puVar13 = (uint *)(param_1 + iVar16);
if (puVar13 == (uint *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x65f);
}
FUN_8f636968(puVar13,0,4);
puVar12 = *(uint **)(param_2 + 0x210);
bVar1 = *param_2;
bVar2 = param_2[1];
bVar3 = param_2[2];
uVar5 = *(undefined2 *)(param_2 + 4);
uVar8 = *(uint *)(param_2 + 8);
bVar4 = param_2[6];
uVar14 = *(uint *)(param_2 + 0x214);
*(byte *)(param_1 + iVar16) = bVar1;
*(byte *)((int)puVar13 + 1) = bVar2;
*(byte *)((int)puVar13 + 2) = bVar3;
uVar10 = (uint)bVar1;
if (puVar12 != (uint *)0x0) {
uVar10 = uVar14;
}
*(undefined2 *)(puVar13 + 1) = uVar5;
puVar13[2] = uVar8;
puVar13[0x84] = (uint)puVar12;
*(byte *)((int)puVar13 + 6) = bVar4;
puVar13[0x85] = uVar14;
if (puVar12 == (uint *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_c_8f660cb8,0x66e);
puVar12 = (uint *)puVar13[0x84];
uVar10 = puVar13[0x85];
}
FUN_8f636968(puVar12,0,uVar10 << 2);
uVar9 = FUN_8f625b24(puVar13[0x84],puVar13[0x85] << 2);
piVar7 = DAT_8f69d118;
cVar11 = *(char *)((int)puVar13 + 1);
*(char *)(puVar13 + 3) = (char)uVar15;
if (cVar11 != '\x01') {
cVar11 = '\0';
}
*(char *)((int)puVar13 + 0xd) = cVar11;
puVar13[0x86] = 0;
puVar13[0x87] = 0;
*(undefined *)((int)puVar13 + 0x20e) = 0;
*(undefined *)(puVar13 + 0x8d) = 0;
if (piVar6 == piVar7) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar9,piVar6,piVar7);
}
void FUN_8f621c5c(int *param_1)
{
int *piVar1;
uint uVar2;
int *piVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
uVar2 = 2;
FUN_8f622a50(param_1);
FUN_8f622038(param_1,1,2);
uVar4 = FUN_8f622180(param_1,0,2);
piVar3 = param_1;
do {
if (*(char *)(piVar3 + 0x121) != '\0') {
uVar4 = FUN_8f620328(param_1,uVar2);
}
piVar3 = piVar3 + 0x8e;
uVar2 = uVar2 + 1 & 0xff;
} while (uVar2 != 8);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
void FUN_8f621cf4(int *param_1,int param_2,uint param_3,uint *param_4,undefined4 param_5,
undefined4 param_6,undefined4 param_7)
{
uint *puVar1;
undefined8 uVar2;
uint *local_28;
undefined4 local_24;
undefined local_20;
undefined4 local_1c;
undefined4 local_18;
int *local_14;
puVar1 = param_4;
if (param_2 == 0) {
puVar1 = (uint *)&DAT_00000005;
}
local_20 = SUB41(puVar1,0);
if (param_2 != 0) {
local_20 = 1;
}
local_14 = DAT_8f69d118;
local_24 = param_5;
local_18 = param_6;
local_1c = param_7;
local_28 = param_4;
uVar2 = FUN_8f61fd9c(param_1,(int *)((param_3 | param_2 << 1) & 0xff),&local_28);
if (local_14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),local_14);
}
void FUN_8f621d64(int *param_1,int param_2,uint *param_3)
{
short sVar1;
int *piVar2;
int iVar3;
uint uVar4;
uint *puVar5;
int iVar6;
int *in_lr;
piVar2 = DAT_8f69d118;
iVar6 = *param_1;
if ((*(uint *)(iVar6 + 0xc200) & 0x40) != 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_hw_8f6617f4,0x51);
iVar6 = *param_1;
}
puVar5 = (uint *)(param_2 * 0x10 + iVar6 + 0xc80c);
do {
} while ((*puVar5 & 0x400) != 0);
sVar1 = (short)param_2;
iVar3 = sVar1 * 0x10 + 0xc800;
*puVar5 = 0;
*(uint *)(iVar6 + iVar3) = param_3[2];
*(uint *)(iVar6 + sVar1 * 0x10 + 0xc804) = param_3[3];
*(uint *)(iVar6 + sVar1 * 0x10 + 0xc808) = param_3[4];
uVar4 = *param_3;
*puVar5 = *puVar5 & 0xfffffff0 | uVar4;
if (*param_3 - 7 < 3) {
uVar4 = (uint)*(byte *)(param_3 + 1);
*puVar5 = *puVar5 & 0xffff | uVar4 << 0x10;
}
if (*(int *)(iVar6 + 0xc704) < 0) {
*puVar5 = *puVar5 | 0x100;
}
*puVar5 = *puVar5 | 0x400;
do {
} while ((*puVar5 & 0x400) != 0);
if (piVar2 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar3,uVar4,piVar2);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f621ed4)
void FUN_8f621ea0(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f621ed8(int *param_1,int param_2)
{
int *in_lr;
undefined8 uVar1;
uint local_30 [2];
undefined4 local_28;
uint local_24;
undefined4 local_20;
int *local_1c;
local_24 = param_1[param_2 * 0x8e + 0x86];
local_1c = DAT_8f69d118;
if ((local_24 & 0xf) != 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_hw_8f6617f4,0x93);
}
local_28 = 0;
local_20 = 0;
local_30[0] = 6;
uVar1 = FUN_8f621d64(param_1,param_2,local_30);
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar1,(int)((ulonglong)uVar1 >> 0x20),local_1c);
}
void FUN_8f621f7c(int *param_1,int param_2)
{
undefined8 uVar1;
uint local_28;
undefined local_24;
undefined4 local_20;
undefined4 local_1c;
undefined4 local_18;
int *local_14;
local_24 = *(undefined *)((int)param_1 + param_2 * 0x238 + 0x216);
local_20 = 0;
local_1c = 0;
local_18 = 0;
local_28 = 8;
local_14 = DAT_8f69d118;
uVar1 = FUN_8f621d64(param_1,param_2,&local_28);
if (local_14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar1,(int)((ulonglong)uVar1 >> 0x20),local_14);
}
void FUN_8f621fe0(int *param_1,int param_2)
{
undefined8 uVar1;
uint local_20 [2];
undefined4 local_18;
undefined4 local_14;
undefined4 local_10;
int *local_c;
local_20[0] = 2;
local_18 = 0;
local_14 = 0;
local_c = DAT_8f69d118;
local_10 = 1;
uVar1 = FUN_8f621d64(param_1,param_2,local_20);
if (local_c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar1,(int)((ulonglong)uVar1 >> 0x20),local_c);
}
void FUN_8f622038(int *param_1,int param_2,int param_3)
{
int iVar1;
undefined8 uVar2;
uint local_30 [2];
undefined4 local_28;
uint local_24;
uint local_20;
int *local_1c;
iVar1 = param_2 * 0x238;
local_30[0] = 1;
local_28 = 0;
local_20 = (uint)*(byte *)((int)param_1 + iVar1 + 10) << 1 |
(uint)*(byte *)((int)param_1 + iVar1 + 0x15) << 0x11 |
param_1[param_2 * 0x8e + 4] << 0x16 |
(uint)*(ushort *)(param_1 + param_2 * 0x8e + 3) << 3 | param_3 << 0x1e;
local_24 = (uint)*(byte *)((int)param_1 + iVar1 + 9) << 0x19 |
(uint)*(byte *)(param_1 + param_2 * 0x8e + 2) << 0x1a | 0x500;
local_1c = DAT_8f69d118;
uVar2 = FUN_8f621d64(param_1,(uint)*(byte *)(param_1 + param_2 * 0x8e + 5),local_30);
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),local_1c);
}
void FUN_8f6220d8(int *param_1,int param_2)
{
undefined8 uVar1;
uint local_20 [2];
undefined4 local_18;
undefined4 local_14;
undefined4 local_10;
int *local_c;
local_18 = 0;
local_14 = 0;
local_10 = 0;
local_20[0] = 4;
local_c = DAT_8f69d118;
uVar1 = FUN_8f621d64(param_1,param_2,local_20);
if (local_c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar1,(int)((ulonglong)uVar1 >> 0x20),local_c);
}
void FUN_8f62212c(int *param_1,int param_2)
{
undefined8 uVar1;
uint local_20 [2];
undefined4 local_18;
undefined4 local_14;
undefined4 local_10;
int *local_c;
local_18 = 0;
local_14 = 0;
local_10 = 0;
local_20[0] = 5;
local_c = DAT_8f69d118;
uVar1 = FUN_8f621d64(param_1,param_2,local_20);
if (local_c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar1,(int)((ulonglong)uVar1 >> 0x20),local_c);
}
void FUN_8f622180(int *param_1,int param_2,undefined param_3)
{
undefined8 uVar1;
uint local_20;
undefined local_1c;
undefined4 local_18;
undefined4 local_14;
undefined4 local_10;
int *local_c;
local_18 = 0;
local_14 = 0;
local_10 = 0;
local_20 = 9;
local_c = DAT_8f69d118;
local_1c = param_3;
uVar1 = FUN_8f621d64(param_1,param_2,&local_20);
if (local_c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar1,(int)((ulonglong)uVar1 >> 0x20),local_c);
}
void FUN_8f6221d8(int *param_1,undefined4 param_2)
{
int *piVar1;
int *piVar2;
int iVar3;
int *in_lr;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
iVar3 = *param_1;
piVar2 = DAT_8f69d118;
if ((*(uint *)(iVar3 + 0xc714) & 0x400) == 0) {
piVar2 = (int *)FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_hw_8f6617f4,0x14b);
iVar3 = *param_1;
}
*(undefined4 *)(iVar3 + 0xc710) = param_2;
*(uint *)(iVar3 + 0xc714) = *(uint *)(iVar3 + 0xc714) & 0xffffff00 | 2;
do {
uVar4 = CONCAT44(0xc714,piVar2);
} while ((*(uint *)(iVar3 + 0xc714) & 0x400) == 0);
if ((*(uint *)(iVar3 + 0xc714) & 0xf000) != 0) {
dprintf((byte *)s__device_command_failed__8f66183c,(int *)0xc714,iVar3,*(uint *)(iVar3 + 0xc714)
);
uVar4 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_hw_8f6617f4,0x156);
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
void FUN_8f6222cc(int *param_1,int param_2)
{
int *piVar1;
int iVar2;
uint uVar3;
piVar1 = DAT_8f69d118;
iVar2 = *param_1;
uVar3 = *(uint *)(iVar2 + 0xc700) & 0xfffffc07 | param_2 << 3;
*(uint *)(iVar2 + 0xc700) = uVar3;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,uVar3,piVar1);
}
void FUN_8f622318(int *param_1)
{
int *piVar1;
uint uVar2;
int iVar3;
piVar1 = DAT_8f69d118;
iVar3 = *param_1;
uVar2 = *(uint *)(iVar3 + 0xc704) | 0x40000000;
*(uint *)(iVar3 + 0xc704) = uVar2;
do {
} while ((*(uint *)(iVar3 + 0xc704) & 0x40000000) != 0);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,0xc704,piVar1);
}
void FUN_8f622370(int *param_1,int param_2)
{
int *piVar1;
int iVar2;
uint uVar3;
piVar1 = DAT_8f69d118;
iVar2 = *param_1;
uVar3 = *(uint *)(iVar2 + 0xc704) & 0x7fffffff | param_2 << 0x1f;
*(uint *)(iVar2 + 0xc704) = uVar3;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,uVar3,piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f6223fc)
void FUN_8f6223bc(int *param_1)
{
return;
}
void FUN_8f622400(int *param_1)
{
int *piVar1;
uint uVar2;
int iVar3;
piVar1 = DAT_8f69d118;
iVar3 = *param_1;
uVar2 = *(uint *)(iVar3 + 0xc704) & 0xffffffe1 | (uint)*(ushort *)(param_1 + 0x47c) << 1;
*(uint *)(iVar3 + 0xc704) = uVar2;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,iVar3,piVar1);
}
void FUN_8f622454(int *param_1,int param_2)
{
int *piVar1;
int iVar2;
uint uVar3;
piVar1 = DAT_8f69d118;
iVar2 = *param_1;
uVar3 = *(uint *)(iVar2 + 0xc704) & 0xfffffbff | param_2 << 10;
*(uint *)(iVar2 + 0xc704) = uVar3;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,uVar3,piVar1);
}
void FUN_8f6224a0(int *param_1,int param_2)
{
int *piVar1;
int iVar2;
uint uVar3;
piVar1 = DAT_8f69d118;
iVar2 = *param_1;
uVar3 = *(uint *)(iVar2 + 0xc704) & 0xffffefff | param_2 << 0xc;
*(uint *)(iVar2 + 0xc704) = uVar3;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,uVar3,piVar1);
}
void FUN_8f6224ec(int *param_1)
{
int *piVar1;
uint uVar2;
int iVar3;
piVar1 = DAT_8f69d118;
iVar3 = *param_1;
*(uint *)(iVar3 + 0xc704) = *(uint *)(iVar3 + 0xc704) | 0x200;
uVar2 = *(uint *)(iVar3 + 0xc704) | 0x800;
*(uint *)(iVar3 + 0xc704) = uVar2;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,iVar3,piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f622580)
void FUN_8f622540(int *param_1)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6225c4)
void FUN_8f622584(int *param_1)
{
return;
}
void FUN_8f6225c8(int *param_1)
{
ushort uVar1;
int *piVar2;
int iVar3;
piVar2 = DAT_8f69d118;
iVar3 = *param_1;
uVar1 = *(ushort *)(param_1 + 0x473);
*(int *)(iVar3 + 0xc400) = param_1[0x472];
*(undefined4 *)(iVar3 + 0xc404) = 0;
*(uint *)(iVar3 + 0xc408) = (uint)uVar1;
*(undefined4 *)(iVar3 + 0xc40c) = 0;
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0xc40c,0,piVar2);
}
void FUN_8f622634(int **param_1,uint *param_2)
{
uint *puVar1;
int *piVar2;
int iVar3;
int *piVar4;
int *extraout_r1;
short sVar5;
uint uVar6;
ushort uVar7;
uint uVar8;
int *piVar9;
int *in_lr;
bool bVar10;
piVar2 = DAT_8f69d118;
piVar4 = *param_1;
uVar8 = piVar4[0x3103] & 0xffff;
if (uVar8 != 0) {
if (uVar8 < 4) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_hw_8f6617f4,0x1e8);
}
piVar9 = param_1[0x472];
FUN_8f625b4c((uint)(piVar9 + *(ushort *)(param_1 + 0x474)),4);
uVar7 = *(ushort *)(param_1 + 0x474);
piVar4 = (int *)(uint)*(ushort *)((int)param_1 + 0x11ce);
uVar8 = piVar9[(int)(int *)(uint)uVar7];
if (piVar4 == (int *)(uint)uVar7) {
sVar5 = 0;
}
else {
sVar5 = uVar7 + 1;
}
*param_2 = uVar8;
*(short *)(param_1 + 0x474) = sVar5;
uVar6 = (uVar8 << 0x14) >> 0x1c;
if (uVar6 == 0xb) {
dprintf((byte *)s__Event_buffer_is_full__Need_to_i_8f661868,piVar4,0xb,uVar8);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_dwc_hw_8f6617f4,0x1fb);
uVar8 = *param_2;
uVar6 = (uVar8 << 0x14) >> 0x1c;
piVar4 = extraout_r1;
}
if (uVar6 == 0xc) {
uVar8 = uVar8 & 1;
}
else {
uVar8 = 0;
}
if (uVar8 == 0) {
uVar8 = 4;
}
else {
iVar3 = FUN_8f625b4c((uint)(piVar9 + *(ushort *)(param_1 + 0x474)),4);
uVar8 = (uint)*(ushort *)(param_1 + 0x474);
bVar10 = *(ushort *)(param_1 + 0x473) != uVar8;
puVar1 = (uint *)(piVar9 + uVar8);
if (bVar10) {
uVar8 = uVar8 + 1 & 0xffff;
}
else {
iVar3 = 0;
}
param_2[1] = *puVar1;
if (bVar10) {
*(short *)(param_1 + 0x474) = (short)uVar8;
iVar3 = uVar8 << 2;
}
else {
*(short *)(param_1 + 0x474) = (short)iVar3;
}
FUN_8f625b4c((int)piVar9 + iVar3,4);
uVar7 = *(ushort *)(param_1 + 0x474);
uVar6 = (uint)uVar7;
piVar4 = (int *)piVar9[uVar6];
if (*(ushort *)(param_1 + 0x473) != uVar6) {
uVar7 = uVar7 + 1;
}
uVar8 = 0xc;
if (*(ushort *)(param_1 + 0x473) == uVar6) {
uVar7 = 0;
}
param_2[1] = (uint)piVar4;
*(ushort *)(param_1 + 0x474) = uVar7;
}
}
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar8,piVar4,piVar2);
}
void FUN_8f6227e8(int *param_1,undefined4 param_2)
{
int *piVar1;
int iVar2;
piVar1 = DAT_8f69d118;
iVar2 = *param_1;
*(undefined4 *)(iVar2 + 0xc40c) = param_2;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,param_2,piVar1);
}
void FUN_8f622828(int *param_1,undefined4 param_2)
{
int *piVar1;
int iVar2;
piVar1 = DAT_8f69d118;
iVar2 = *param_1;
*(undefined4 *)(iVar2 + 0xc708) = param_2;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,param_2,piVar1);
}
void FUN_8f622868(int *param_1)
{
int *piVar1;
int iVar2;
uint uVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
*(uint *)(*param_1 + 0xc200) = *(uint *)(*param_1 + 0xc200) | 0x80000000;
iVar2 = FUN_8f61ac70();
if (iVar2 == 0) {
*(uint *)(*param_1 + 0xc2c0) = *(uint *)(*param_1 + 0xc2c0) | 0x80000000;
}
FUN_8f6104fc(100);
*(uint *)(*param_1 + 0xc200) = *(uint *)(*param_1 + 0xc200) & 0x7fffffff;
uVar4 = FUN_8f61ac70();
uVar3 = (uint)((ulonglong)uVar4 >> 0x20);
if ((int)uVar4 == 0) {
uVar3 = *(uint *)(*param_1 + 0xc2c0) & 0x7fffffff;
*(uint *)(*param_1 + 0xc2c0) = uVar3;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,uVar3,piVar1);
}
FUN_8f6104fc(100);
return;
}
void FUN_8f622910(uint *param_1,undefined4 param_2)
{
int *piVar1;
ulonglong uVar2;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f621ea0(param_1,param_2);
if (((int)uVar2 != 0) && (uVar2 = FUN_8f611aac(), (uint)uVar2 < 0x20000)) {
uVar2 = uVar2 & 0xffffffff | (ulonglong)*param_1 << 0x20;
*(undefined4 *)(*param_1 + 0xc2c0) = 0x30c0003;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)(uVar2 >> 0x20),piVar1);
}
return;
}
void FUN_8f622970(int *param_1,undefined4 param_2)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f621ea0(param_1,param_2);
if (((int)uVar2 != 0) && (uVar2 = FUN_8f611aac(), (uint)uVar2 < 0x20000)) {
uVar2 = CONCAT44(0xe,(uint)uVar2);
*(undefined4 *)(*param_1 + 0xc100) = 0xe;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f622a08)
void FUN_8f6229cc(int *param_1)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f622a4c)
void FUN_8f622a0c(int *param_1)
{
return;
}
void FUN_8f622a50(int *param_1)
{
int *piVar1;
uint uVar2;
int iVar3;
piVar1 = DAT_8f69d118;
iVar3 = *param_1;
uVar2 = *(uint *)(iVar3 + 0xc720) & 3;
*(uint *)(iVar3 + 0xc720) = uVar2;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,iVar3,piVar1);
}
void FUN_8f622ae4(int *param_1,int param_2)
{
int *piVar1;
int iVar2;
uint uVar3;
piVar1 = DAT_8f69d118;
iVar2 = *param_1;
uVar3 = *(uint *)(iVar2 + 0xc110) & 0xfffff7ff | param_2 << 0xb;
*(uint *)(iVar2 + 0xc110) = uVar3;
if (piVar1 == DAT_8f69d118) {
FUN_8f6104fc(100);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,uVar3,piVar1);
}
void FUN_8f622b38(int *param_1)
{
int *piVar1;
uint uVar2;
int iVar3;
piVar1 = DAT_8f69d118;
iVar3 = *param_1;
*(uint *)(iVar3 + 0xc110) = *(uint *)(iVar3 + 0xc110) & 0xfffffeff;
*(uint *)(iVar3 + 0xc110) = *(uint *)(iVar3 + 0xc110) & 0xfffff7ff;
*(uint *)(iVar3 + 0xc110) = *(uint *)(iVar3 + 0xc110) & 0xffffcfff | 0x2000;
*(uint *)(iVar3 + 0xc110) = *(uint *)(iVar3 + 0xc110) & 0xffff3fff;
*(uint *)(iVar3 + 0xc110) = *(uint *)(iVar3 + 0xc110) | 0x10000;
*(uint *)(iVar3 + 0xc110) = *(uint *)(iVar3 + 0xc110) & 0x7ffff | 0x100000;
uVar2 = *(uint *)(iVar3 + 0xc110) & 0xfffffbff;
*(uint *)(iVar3 + 0xc110) = uVar2;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,&DAT_8f69d118,piVar1);
}
void FUN_8f622c24(uint param_1,int *param_2,int param_3,undefined4 param_4)
{
int *piVar1;
undefined4 *puVar2;
int *piVar3;
int *extraout_r1;
int *in_lr;
bool bVar4;
bool bVar5;
piVar1 = DAT_8f69d118;
if (param_3 - 2U < 0xfe) {
bVar5 = 0xfe < param_1;
bVar4 = param_1 == 0xff;
if (param_1 < 0x100) {
bVar5 = (int *)0xfe < param_2;
bVar4 = param_2 == (int *)0xff;
}
piVar3 = param_2;
if (!bVar5 || bVar4) goto LAB_8f622c68;
}
dprintf((byte *)s_Invalid_parameters_for_descripto_8f65b6c0,param_2,DAT_8f69d118,param_4);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0x569);
piVar3 = extraout_r1;
LAB_8f622c68:
puVar2 = (undefined4 *)FUN_8f63666c(param_3 + 0xc,piVar3);
if (puVar2 == (undefined4 *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0x56d);
}
piVar3 = DAT_8f69d118;
*(ushort *)(puVar2 + 1) = (ushort)param_2 | (ushort)(param_1 << 8);
*(short *)((int)puVar2 + 6) = (short)param_3;
*(char *)(puVar2 + 2) = (char)param_4;
*(char *)((int)puVar2 + 9) = (char)param_3;
*(char *)((int)puVar2 + 10) = (char)param_1;
*puVar2 = 0;
if (piVar1 == piVar3) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(puVar2,piVar1,piVar3);
}
void FUN_8f622d1c(int param_1,byte *param_2)
{
byte bVar1;
int *piVar2;
int iVar3;
undefined4 *puVar4;
uint uVar5;
byte *pbVar6;
byte *pbVar7;
byte *pbVar8;
int *piVar9;
byte *in_r12;
bool bVar10;
undefined8 uVar11;
piVar2 = DAT_8f69d118;
piVar9 = *(int **)(param_1 + 0x18);
pbVar6 = param_2;
if ((piVar9 < (int *)0x100) && (param_2 != (byte *)0x0)) {
iVar3 = FUN_8f636de0(param_2);
uVar11 = FUN_8f622c24(3,piVar9,(iVar3 + 1) * 2,3);
pbVar6 = (byte *)((ulonglong)uVar11 >> 0x20);
puVar4 = (undefined4 *)uVar11;
if (puVar4 != (undefined4 *)0x0) {
bVar10 = iVar3 != 0;
if (bVar10) {
in_r12 = param_2 + iVar3;
}
if (bVar10) {
pbVar6 = (byte *)0x0;
}
*(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + 1;
pbVar7 = (byte *)((int)puVar4 + 0xb);
if (bVar10) {
do {
pbVar8 = param_2 + 1;
bVar1 = *param_2;
pbVar7[1] = (byte)pbVar6;
*pbVar7 = bVar1;
pbVar7 = pbVar7 + 2;
param_2 = pbVar8;
} while (pbVar8 != in_r12);
}
uVar5 = (uint)*(byte *)(puVar4 + 1);
*puVar4 = *(undefined4 *)(param_1 + 0xc);
*(undefined4 **)(param_1 + 0xc) = puVar4;
goto LAB_8f622dcc;
}
}
uVar5 = 0;
LAB_8f622dcc:
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar5,pbVar6,piVar2);
}
void FUN_8f622de8(int param_1,int param_2,uint param_3)
{
byte bVar1;
char cVar2;
int *piVar3;
int *piVar4;
undefined4 *puVar5;
undefined4 uVar6;
int iVar7;
undefined *puVar8;
byte bVar9;
undefined uVar10;
int iVar11;
int iVar12;
undefined uVar13;
uint uVar14;
int *in_lr;
bool bVar15;
piVar3 = DAT_8f69d118;
if (param_1 == 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0x440);
}
if (param_2 == 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0x441);
}
iVar11 = (uint)*(byte *)(param_2 + 0xb) * 7 + 0x12;
puVar5 = (undefined4 *)FUN_8f622c24(param_3,(int *)0x0,iVar11,1);
*(char *)((int)puVar5 + 0xb) = (char)iVar11;
*(undefined *)(puVar5 + 4) = 0xc0;
*(undefined *)((int)puVar5 + 0x13) = 4;
*(char *)((int)puVar5 + 10) = (char)param_3;
*(undefined *)((int)puVar5 + 9) = 9;
*(char *)(puVar5 + 3) = (char)((uint)iVar11 >> 8);
*(undefined *)((int)puVar5 + 0x12) = 9;
*(undefined *)((int)puVar5 + 0xd) = 1;
*(undefined *)((int)puVar5 + 0xe) = 1;
*(undefined *)((int)puVar5 + 0xf) = 0;
*(undefined *)((int)puVar5 + 0x11) = 0;
*(undefined *)(puVar5 + 5) = 0;
*(undefined *)((int)puVar5 + 0x15) = 0;
*(undefined *)((int)puVar5 + 0x16) = *(undefined *)(param_2 + 0xb);
*(undefined *)((int)puVar5 + 0x17) = *(undefined *)(param_2 + 8);
*(undefined *)(puVar5 + 6) = *(undefined *)(param_2 + 9);
*(undefined *)((int)puVar5 + 0x19) = *(undefined *)(param_2 + 10);
uVar6 = FUN_8f622d1c(param_1,*(byte **)(param_2 + 0xc));
*(char *)((int)puVar5 + 0x1a) = (char)uVar6;
iVar11 = DAT_8f68a20c;
if (*(char *)(param_2 + 0xb) != '\0') {
uVar14 = 0;
uVar6 = 5;
puVar8 = (undefined *)((int)puVar5 + 0x1b);
do {
iVar7 = *(int *)(*(int *)(param_2 + 0x14) + uVar14 * 4);
if ((param_3 == 7) && (cVar2 = *(char *)(iVar11 + 0x24), cVar2 != '\x03')) {
iVar12 = iVar11;
if (cVar2 != '\x01') {
iVar12 = 0;
}
uVar10 = (undefined)iVar12;
if (cVar2 != '\x01') {
uVar13 = 0x40;
}
else {
uVar10 = 2;
uVar13 = 0;
}
}
else {
uVar13 = (undefined)*(undefined2 *)(iVar7 + 8);
uVar10 = (undefined)((ushort)*(undefined2 *)(iVar7 + 8) >> 8);
}
*puVar8 = 7;
puVar8[1] = 5;
cVar2 = *(char *)(iVar7 + 6);
uVar14 = uVar14 + 1 & 0xff;
bVar1 = *(byte *)(iVar7 + 4);
puVar8[3] = 2;
puVar8[4] = uVar13;
if (cVar2 == '\0') {
bVar9 = 0;
}
else {
bVar9 = 0x80;
}
puVar8[5] = uVar10;
puVar8[6] = 0;
puVar8[2] = bVar9 | bVar1;
puVar8 = puVar8 + 7;
} while (uVar14 < *(byte *)(param_2 + 0xb));
}
piVar4 = DAT_8f69d118;
bVar15 = piVar3 == DAT_8f69d118;
*puVar5 = *(undefined4 *)(param_1 + 0xc);
*(undefined4 **)(param_1 + 0xc) = puVar5;
if (bVar15) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar6,piVar3,piVar4);
}
void FUN_8f623018(int param_1,byte *param_2)
{
byte bVar1;
ushort uVar2;
ushort uVar3;
undefined2 uVar4;
ushort uVar5;
byte *pbVar6;
int iVar7;
undefined4 uVar8;
char *pcVar9;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 extraout_r1_03;
undefined4 extraout_r1_04;
undefined4 extraout_r1_05;
undefined4 extraout_r1_06;
undefined4 extraout_r1_07;
undefined4 extraout_r1_08;
undefined4 extraout_r1_09;
undefined4 extraout_r1_10;
undefined4 extraout_r1_11;
undefined4 extraout_r1_12;
undefined4 extraout_r1_13;
uint uVar10;
undefined uVar11;
uint uVar12;
int *piVar13;
int *piVar14;
uint uVar15;
uint uVar16;
uint uVar17;
int *in_lr;
undefined8 uVar18;
ushort local_38;
undefined2 local_36;
undefined4 local_34;
undefined2 local_30;
int *local_2c;
local_2c = DAT_8f69d118;
if (param_1 == 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0x1ac);
}
piVar14 = *(int **)(param_1 + 4);
if (piVar14 == (int *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0x1af);
}
uVar16 = (uint)*param_2;
uVar8 = 0x103;
uVar15 = (uint)param_2[1];
uVar2 = *(ushort *)(param_2 + 4);
uVar10 = (uint)uVar2;
uVar5 = CONCAT11(*param_2,param_2[1]);
uVar3 = *(ushort *)(param_2 + 2);
uVar12 = (uint)uVar3;
uVar17 = (uint)*(ushort *)(param_2 + 6);
if (uVar5 == 0x103) {
if ((uVar12 == 0) && (*(char *)(param_1 + 0x24) == '\x03')) {
LAB_8f623284:
uVar10 = 2;
goto LAB_8f623134;
}
}
else if (uVar5 < 0x104) {
if (uVar5 == 5) {
FUN_8f6222cc(piVar14,uVar12);
uVar10 = 2;
*(undefined *)(param_1 + 0x2c) = 1;
uVar8 = extraout_r1_02;
goto LAB_8f623134;
}
if (uVar5 < 6) {
if (uVar5 == 1) {
uVar10 = (uint)*(byte *)(param_1 + 0x2c);
if ((uVar10 == 2) && (*(char *)(param_1 + 0x24) == '\x03')) {
if (uVar12 == 0x30) {
FUN_8f622454(piVar14,0);
uVar8 = extraout_r1_11;
goto LAB_8f623134;
}
if (uVar12 == 0x31) {
FUN_8f6224a0(piVar14,0);
uVar8 = extraout_r1_10;
goto LAB_8f623134;
}
}
}
else if (uVar5 == 3) {
if (uVar12 == 2) {
if (uVar10 == 0x300) {
LAB_8f623730:
uVar8 = 0x11f0;
*(ushort *)(piVar14 + 0x47c) = uVar2 >> 8;
uVar10 = 2;
piVar14[0x47b] = 1;
}
else {
if (uVar10 < 0x301) {
if ((uVar10 == 0x100) || (uVar10 == 0x200)) goto LAB_8f623730;
}
else if ((uVar10 == 0x400) || (uVar10 == 0x500)) goto LAB_8f623730;
uVar10 = 2;
*(ushort *)(piVar14 + 0x47c) = uVar2;
}
goto LAB_8f623134;
}
if ((*(char *)(param_1 + 0x2c) == '\x02') && (*(char *)(param_1 + 0x24) == '\x03')) {
if (uVar12 == 0x30) {
FUN_8f622454(piVar14,1);
uVar10 = 2;
uVar8 = extraout_r1_13;
goto LAB_8f623134;
}
if (uVar12 == 0x31) {
FUN_8f6224a0(piVar14,1);
uVar10 = 2;
uVar8 = extraout_r1_04;
goto LAB_8f623134;
}
}
}
}
else if (uVar5 == 0x30) {
if (uVar17 != 0) {
FUN_8f621cf4(*(int **)(param_1 + 4),0,0,*(uint **)(param_1 + 0x1c),0x200,FUN_8f623810,
param_1);
uVar10 = 3;
uVar8 = extraout_r1_03;
goto LAB_8f623134;
}
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0x339);
}
else {
if (uVar5 == 0x31) goto LAB_8f623284;
if (uVar5 == 9) {
if (uVar12 == 0) {
*(char *)(param_1 + 0x25) = (char)uVar3;
uVar10 = 2;
*(undefined *)(param_1 + 0x2c) = 1;
}
else {
for (piVar13 = *(int **)(param_1 + 0x10); piVar13 != (int *)0x0; piVar13 = (int *)*piVar13
) {
uVar12 = (uint)*(byte *)(piVar13 + 1);
if (uVar12 != 0) {
uVar18 = FUN_8f63666c(0x238,uVar8);
pbVar6 = (byte *)uVar18;
if (pbVar6 == (byte *)0x0) {
dprintf((byte *)s_udc_handle_setup__DEVICE_WRITE___8f6618d0,
(int *)((ulonglong)uVar18 >> 0x20),uVar10,uVar12);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0x269);
}
*pbVar6 = *(byte *)(piVar13 + 1);
uVar4 = *(undefined2 *)(piVar13 + 2);
uVar10 = piVar13[3];
pbVar6[1] = *(byte *)((int)piVar13 + 6);
bVar1 = *(byte *)((int)piVar13 + 5);
pbVar6[6] = 0;
*(int *)(pbVar6 + 0x214) = piVar13[5];
uVar8 = piVar13[4];
pbVar6[2] = bVar1;
*(undefined2 *)(pbVar6 + 4) = uVar4;
*(undefined4 *)(pbVar6 + 0x210) = uVar8;
*(uint *)(pbVar6 + 8) = uVar10;
FUN_8f621ac0((int)piVar14,pbVar6);
FUN_8f636758((int)pbVar6);
uVar8 = extraout_r1_09;
}
}
FUN_8f621c5c(piVar14);
if (*(char *)(param_1 + 0x24) == '\x03') {
FUN_8f6224ec(piVar14);
}
(***(code ***)(param_1 + 8))(*(undefined4 *)(DAT_8f68a20c + 8),1);
uVar10 = 2;
*(undefined *)(param_1 + 0x2c) = 2;
*(undefined *)(param_1 + 0x25) = 1;
uVar8 = extraout_r1_08;
}
goto LAB_8f623134;
}
}
}
else if (uVar5 == 0x8006) {
if (uVar3 >> 8 == 6) {
if (*(char *)(param_1 + 0x24) != '\x03') {
local_38 = CONCAT11((char)(uVar3 >> 8),10);
if (9 < uVar17) {
uVar17 = 10;
}
local_36 = 0x200;
local_30 = 1;
if (*(char *)(DAT_8f68a20c + 0x24) == '\x02') {
uVar11 = 0x40;
}
else {
uVar11 = 0;
}
local_34 = CONCAT13(uVar11,*(undefined3 *)(*(int *)(DAT_8f68a20c + 8) + 8));
FUN_8f63685c(*(undefined4 **)(param_1 + 0x20),(undefined4 *)&local_38,uVar17);
FUN_8f625b24(*(uint *)(param_1 + 0x20),uVar17);
FUN_8f621cf4(*(int **)(param_1 + 4),0,1,*(uint **)(param_1 + 0x20),uVar17,0,0);
uVar10 = 3;
uVar8 = extraout_r1_12;
goto LAB_8f623134;
}
}
else if (((uVar3 >> 8 == 7) && (*(char *)(param_1 + 0x24) != '\x03')) && (DAT_8f68a214 == 0)) {
FUN_8f622de8(param_1,*(int *)(param_1 + 8),7);
DAT_8f68a214 = 1;
}
for (piVar14 = *(int **)(param_1 + 0xc); piVar14 != (int *)0x0; piVar14 = (int *)*piVar14) {
if (*(ushort *)(piVar14 + 1) == uVar12) {
if (*(char *)(param_1 + 0x24) == '\x03') {
bVar1 = *(byte *)(piVar14 + 2) & 2;
}
else {
bVar1 = *(byte *)(piVar14 + 2) & 1;
}
if (bVar1 != 0) {
uVar10 = (uint)*(ushort *)((int)piVar14 + 6);
if (uVar17 <= *(ushort *)((int)piVar14 + 6)) {
uVar10 = uVar17;
}
FUN_8f63685c(*(undefined4 **)(param_1 + 0x20),(undefined4 *)((int)piVar14 + 9),uVar10);
FUN_8f625b24(*(uint *)(param_1 + 0x20),uVar10);
FUN_8f621cf4(*(int **)(param_1 + 4),0,1,*(uint **)(param_1 + 0x20),uVar10,0,0);
uVar10 = 3;
uVar8 = extraout_r1_05;
goto LAB_8f623134;
}
}
}
}
else if (uVar5 < 0x8007) {
if (uVar5 == 0x203) {
if (uVar12 == 0) {
FUN_8f6220d8(piVar14,(uVar10 << 0x18) >> 0x1f | (uVar10 & 0xf) << 1);
uVar10 = 2;
DAT_8f68a218 = 1;
uVar8 = extraout_r1_07;
goto LAB_8f623134;
}
}
else {
if (uVar5 == 0x8000) goto LAB_8f623340;
if (uVar5 == 0x201) {
FUN_8f62212c(piVar14,(uVar10 << 0x18) >> 0x1f | (uVar10 & 0xf) << 1);
uVar10 = 2;
DAT_8f68a218 = 0;
uVar8 = extraout_r1_00;
goto LAB_8f623134;
}
}
}
else if ((uVar5 == 0x8100) || (uVar5 == 0x8200)) {
LAB_8f623340:
if (uVar17 == 2) {
local_38 = 0;
if ((uVar16 == 0x80) || ((uVar16 == 0x82 && (DAT_8f68a218 == 1)))) {
local_38 = 1;
}
if (((*(char *)(param_1 + 0x2c) == '\x02') && (*(char *)(param_1 + 0x24) == '\x03')) &&
(uVar16 == 0x80)) {
iVar7 = FUN_8f622540(piVar14);
if (iVar7 != 0) {
local_38 = local_38 | 4;
}
iVar7 = FUN_8f622584(piVar14);
if (iVar7 != 0) {
local_38 = local_38 | 8;
}
}
FUN_8f63685c(*(undefined4 **)(param_1 + 0x20),(undefined4 *)&local_38,2);
FUN_8f625b24(*(uint *)(param_1 + 0x20),2);
FUN_8f621cf4(*(int **)(param_1 + 4),0,1,*(uint **)(param_1 + 0x20),2,0,0);
uVar10 = 3;
uVar8 = extraout_r1_06;
goto LAB_8f623134;
}
}
else if (uVar5 == 0x8008) {
if (((uVar12 == 0) && (uVar10 == 0)) && (uVar17 == 1)) {
FUN_8f63685c(*(undefined4 **)(param_1 + 0x20),(undefined4 *)(param_1 + 0x25),1);
FUN_8f625b24(*(uint *)(param_1 + 0x20),1);
FUN_8f621cf4(*(int **)(param_1 + 4),0,1,*(uint **)(param_1 + 0x20),1,0,0);
uVar10 = 3;
uVar8 = extraout_r1_01;
goto LAB_8f623134;
}
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0x24f);
}
if (uVar15 < 0x31) {
pcVar9 = (&PTR_s_GET_STATUS_8f661a7c)[uVar15];
}
else {
pcVar9 = s__UNKNOWN__8f6618c4;
}
dprintf((byte *)s__STALL__Unsupported_setup_req____8f66191c,(int *)pcVar9,uVar16,uVar15);
uVar10 = 0xffffffff;
uVar8 = extraout_r1;
LAB_8f623134:
if (local_2c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar10,uVar8,local_2c);
}
void FUN_8f623810(int param_1,int param_2)
{
int *piVar1;
undefined4 uVar2;
undefined4 extraout_r1;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f625b4c(*(uint *)(param_1 + 0x1c),param_2);
if (piVar1 == DAT_8f69d118) {
FUN_8f6221d8(*(int **)(param_1 + 4),0x65);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,extraout_r1,piVar1);
}
void FUN_8f6238c8(int *param_1,int *param_2,undefined4 param_3)
{
undefined uVar1;
int *piVar2;
int *piVar3;
piVar2 = DAT_8f69d118;
if (param_1 != (int *)0x0) {
uVar1 = (undefined)((uint)param_3 >> 8);
do {
if (*(char *)((int)param_1 + 0x1e) == '\x02') {
*(char *)((int)param_1 + 0x1f) = (char)param_3;
*(undefined *)((int **)param_1 + 8) = uVar1;
}
if (*(char *)((int)param_1 + 0x2b) == '\x02') {
*(char *)((int **)param_1 + 0xb) = (char)param_3;
*(undefined *)((int)param_1 + 0x2d) = uVar1;
}
param_1 = (int *)*param_1;
} while ((int **)param_1 != (int **)0x0);
}
for (piVar3 = (int *)*param_2; piVar3 != (int *)0x0; piVar3 = (int *)*piVar3) {
*(short *)(piVar3 + 2) = (short)param_3;
}
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1,param_2,piVar2);
}
void FUN_8f623950(int param_1,uint param_2)
{
int **ppiVar1;
int *piVar2;
undefined4 uVar3;
int *piVar4;
code **in_lr;
undefined8 uVar5;
piVar4 = DAT_8f69d118;
switch(param_2) {
case 0:
case 5:
in_lr = *(code ***)(param_1 + 8);
*(undefined *)(param_1 + 0x25) = 0;
if ((in_lr != (code **)0x0) && (*in_lr != (code *)0x0)) {
uVar5 = (**in_lr)(in_lr,2);
param_2 = (uint)((ulonglong)uVar5 >> 0x20);
in_lr = (code **)uVar5;
}
break;
case 1:
*(undefined *)(param_1 + 0x24) = 0;
break;
case 2:
piVar2 = *(int **)(param_1 + 0xc);
uVar3 = 0x40;
*(undefined *)(param_1 + 0x24) = 1;
goto LAB_8f623a34;
case 3:
piVar2 = *(int **)(param_1 + 0xc);
*(undefined *)(param_1 + 0x24) = 2;
uVar3 = 0x200;
LAB_8f623a34:
uVar5 = FUN_8f6238c8(piVar2,(int *)(param_1 + 0x10),uVar3);
piVar2 = DAT_8f69d118;
param_2 = (uint)((ulonglong)uVar5 >> 0x20);
in_lr = (code **)uVar5;
if (DAT_8f68a210 == 0) {
if (piVar4 == DAT_8f69d118) {
ppiVar1 = (int **)(param_1 + 0xc);
piVar4 = *ppiVar1;
if (piVar4 != (int *)0x0) {
ppiVar1 = (int **)0x0;
do {
param_2 = piVar4[2] & 0xff00ff;
if (param_2 == 0x10001) {
*(undefined *)((int)piVar4 + 0xb) = 0;
}
piVar4 = (int *)*piVar4;
} while (piVar4 != (int *)0x0);
}
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(ppiVar1,param_2,piVar2);
}
goto LAB_8f623aac;
}
break;
case 4:
DAT_8f68a210 = 1;
*(undefined *)(param_1 + 0x24) = 3;
FUN_8f6238c8(*(int **)(param_1 + 0xc),(int *)(param_1 + 0x10),0x400);
return;
default:
uVar5 = FUN_8f6353a0((int *)in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0x3f1);
param_2 = (uint)((ulonglong)uVar5 >> 0x20);
in_lr = (code **)uVar5;
}
uVar5 = CONCAT44(param_2,in_lr);
if (piVar4 == DAT_8f69d118) {
return;
}
LAB_8f623aac:
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),piVar4);
}
// WARNING: Removing unreachable block (ram,0x8f623ae4)
void FUN_8f623ab0(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f623ae8(undefined4 *param_1,undefined4 param_2)
{
undefined uVar1;
int *piVar2;
int *piVar3;
uint *puVar4;
int **ppiVar5;
int **ppiVar6;
undefined4 uVar7;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
code *pcVar8;
int **ppiVar9;
int iVar10;
int *in_lr;
undefined8 uVar11;
int local_4c;
uint local_48;
int local_44;
undefined2 local_40;
int **local_3c;
code *local_38;
int **local_34;
code *local_30;
int local_2c;
local_2c = DAT_8f69d118;
DAT_8f68a20c = (int **)FUN_8f63666c(0x30,param_2);
if (DAT_8f68a20c == (int **)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0x12e);
}
FUN_8f636968((uint *)DAT_8f68a20c,0,0x30);
ppiVar6 = DAT_8f68a20c;
piVar2 = (int *)FUN_8f6366a8((int *)0x40,0x200);
ppiVar9 = DAT_8f68a20c;
ppiVar6[7] = piVar2;
if (ppiVar9[7] == (int *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0x135);
ppiVar9 = DAT_8f68a20c;
}
piVar2 = (int *)FUN_8f6366a8((int *)0x40,0x200);
ppiVar6 = DAT_8f68a20c;
ppiVar9[8] = piVar2;
if (ppiVar6[8] == (int *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0x138);
ppiVar6 = DAT_8f68a20c;
}
iVar10 = param_1[5];
ppiVar6[6] = (int *)0x1;
uVar7 = 0x10001;
pcVar8 = *(code **)(iVar10 + 0xc);
ppiVar6[5] = (int *)0x10001;
ppiVar6[4] = (int *)0x0;
if (pcVar8 != (code *)0x0) {
(*pcVar8)();
uVar7 = extraout_r1;
}
local_4c = 0x70f8800;
piVar2 = (int *)FUN_8f624b1c(&local_4c,uVar7);
if (piVar2 == (int *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0xc1);
}
*DAT_8f68a20c = piVar2;
local_48 = 0x7000000;
piVar3 = (int *)FUN_8f635d28(0x40,0x1000);
local_44 = FUN_8f6366a8(piVar3,0x1000);
if (local_44 == 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0xcc);
}
local_38 = FUN_8f623950;
local_30 = FUN_8f623018;
local_3c = DAT_8f68a20c;
local_34 = DAT_8f68a20c;
local_40 = 0x1000;
puVar4 = (uint *)FUN_8f620830(&local_48,DAT_8f68a20c);
if (puVar4 == (uint *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0xd9);
}
DAT_8f68a20c[1] = (int *)puVar4;
FUN_8f624778(piVar2,0);
FUN_8f6247c4(piVar2);
if (*(code **)param_1[5] != (code *)0x0) {
(**(code **)param_1[5])();
}
uVar11 = FUN_8f622ae4((int *)puVar4,1);
uVar11 = FUN_8f621ea0((int)uVar11,(int)((ulonglong)uVar11 >> 0x20));
if (((int)uVar11 == 0) && (iVar10 = FUN_8f623ab0(0,(int)((ulonglong)uVar11 >> 0x20)), iVar10 == 0)
) {
if (*(code **)(param_1[5] + 4) != (code *)0x0) {
(**(code **)(param_1[5] + 4))();
}
iVar10 = FUN_8f611778();
if (iVar10 == 0xb2) {
FUN_8f624bb4(piVar2);
}
}
else {
FUN_8f624804(piVar2);
}
iVar10 = FUN_8f61ac70();
if (iVar10 == 0) {
FUN_8f624864(piVar2);
}
FUN_8f62492c(piVar2);
FUN_8f62497c(piVar2);
FUN_8f622868((int *)puVar4);
FUN_8f622ae4((int *)puVar4,0);
FUN_8f6248f8(piVar2,extraout_r1_00);
if (*(code **)(param_1[5] + 8) != (code *)0x0) {
(**(code **)(param_1[5] + 8))();
}
iVar10 = FUN_8f61ac70();
if (iVar10 != 0) {
FUN_8f624bf4(piVar2);
}
FUN_8f6249c0(piVar2);
FUN_8f624a1c(piVar2,extraout_r1_01);
FUN_8f622910(puVar4,extraout_r1_02);
FUN_8f624a50(piVar2);
if (*(char *)(param_1[5] + 0x10) != '\0') {
FUN_8f624a98(*DAT_8f68a20c);
}
FUN_8f6218f4((int *)puVar4);
ppiVar6 = DAT_8f68a20c;
ppiVar5 = (int **)FUN_8f622c24(3,(int *)0x0,4,3);
ppiVar9 = DAT_8f68a20c;
*(undefined *)((int)ppiVar5 + 0xb) = 9;
*(undefined *)(ppiVar5 + 3) = 4;
*ppiVar5 = ppiVar6[3];
ppiVar6[3] = (int *)ppiVar5;
ppiVar5 = (int **)FUN_8f622c24(1,(int *)0x0,0x12,1);
*(undefined *)((int)ppiVar5 + 0xb) = 0x10;
*(undefined *)(ppiVar5 + 4) = 0x40;
*(undefined *)(ppiVar5 + 3) = 2;
*(undefined *)((int)ppiVar5 + 0xd) = 0;
*(undefined *)((int)ppiVar5 + 0xe) = 0;
*(undefined *)((int)ppiVar5 + 0xf) = 0;
FUN_8f63685c((undefined4 *)((int)ppiVar5 + 0x11),param_1,2);
FUN_8f63685c((undefined4 *)((int)ppiVar5 + 0x13),(undefined4 *)((int)param_1 + 2),2);
FUN_8f63685c((undefined4 *)((int)ppiVar5 + 0x15),param_1 + 1,2);
uVar1 = FUN_8f622d1c((int)ppiVar9,(byte *)param_1[2]);
*(undefined *)((int)ppiVar5 + 0x17) = uVar1;
uVar1 = FUN_8f622d1c((int)ppiVar9,(byte *)param_1[3]);
*(undefined *)(ppiVar5 + 6) = uVar1;
uVar1 = FUN_8f622d1c((int)ppiVar9,(byte *)param_1[4]);
*(undefined *)((int)ppiVar5 + 0x1a) = 1;
ppiVar6 = DAT_8f68a20c;
*(undefined *)((int)ppiVar5 + 0x19) = uVar1;
*ppiVar5 = ppiVar9[3];
ppiVar9[3] = (int *)ppiVar5;
ppiVar5 = (int **)FUN_8f622c24(1,(int *)0x0,0x12,2);
*(undefined *)((int)ppiVar5 + 0xb) = 0;
*(undefined *)(ppiVar5 + 4) = 9;
*(undefined *)(ppiVar5 + 3) = 3;
*(undefined *)((int)ppiVar5 + 0xd) = 0;
*(undefined *)((int)ppiVar5 + 0xe) = 0;
*(undefined *)((int)ppiVar5 + 0xf) = 0;
FUN_8f63685c((undefined4 *)((int)ppiVar5 + 0x11),param_1,2);
FUN_8f63685c((undefined4 *)((int)ppiVar5 + 0x13),(undefined4 *)((int)param_1 + 2),2);
FUN_8f63685c((undefined4 *)((int)ppiVar5 + 0x15),param_1 + 1,2);
uVar1 = FUN_8f622d1c((int)ppiVar6,(byte *)param_1[2]);
*(undefined *)((int)ppiVar5 + 0x17) = uVar1;
uVar1 = FUN_8f622d1c((int)ppiVar6,(byte *)param_1[3]);
*(undefined *)(ppiVar5 + 6) = uVar1;
uVar1 = FUN_8f622d1c((int)ppiVar6,(byte *)param_1[4]);
*(undefined *)((int)ppiVar5 + 0x1a) = 1;
ppiVar9 = DAT_8f68a20c;
*(undefined *)((int)ppiVar5 + 0x19) = uVar1;
*ppiVar5 = ppiVar6[3];
ppiVar6[3] = (int *)ppiVar5;
ppiVar6 = (int **)FUN_8f622c24(0xf,(int *)0x0,0x16,2);
iVar10 = DAT_8f69d118;
*(undefined *)((int)ppiVar6 + 0xd) = 2;
*(undefined *)((int)ppiVar6 + 0xf) = 0x10;
*(undefined *)(ppiVar6 + 4) = 2;
*(undefined *)((int)ppiVar6 + 0x11) = 2;
*(undefined *)(ppiVar6 + 3) = 0;
*(undefined *)((int)ppiVar6 + 0x16) = 0x10;
*(undefined *)((int)ppiVar6 + 0x12) = 0;
*(undefined *)((int)ppiVar6 + 0x17) = 3;
*(undefined *)((int)ppiVar6 + 0x13) = 0;
*(undefined *)(ppiVar6 + 5) = 0;
*(undefined *)(ppiVar6 + 6) = 0;
*(undefined *)((int)ppiVar6 + 0x1a) = 0;
*(undefined *)((int)ppiVar6 + 0x1b) = 1;
*(undefined *)(ppiVar6 + 7) = 0;
*(undefined *)((int)ppiVar6 + 0x1d) = 0;
*(undefined *)((int)ppiVar6 + 0x1e) = 0;
*(undefined *)((int)ppiVar6 + 9) = 5;
*(undefined *)((int)ppiVar6 + 0xb) = 0x16;
*(undefined *)((int)ppiVar6 + 0xe) = 7;
*(undefined *)((int)ppiVar6 + 0x15) = 10;
*(undefined *)((int)ppiVar6 + 10) = 0xf;
*(undefined *)((int)ppiVar6 + 0x19) = 0xf;
piVar2 = ppiVar9[3];
*ppiVar6 = piVar2;
ppiVar9[3] = (int *)ppiVar6;
if (local_2c == iVar10) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,10,piVar2);
}
void FUN_8f6243ec(int param_1,uint **param_2)
{
int iVar1;
int *piVar2;
uint **ppuVar3;
uint **extraout_r1;
uint uVar4;
int *piVar5;
int *in_lr;
undefined8 uVar6;
piVar2 = DAT_8f69d118;
piVar5 = *(int **)(DAT_8f68a20c + 4);
ppuVar3 = param_2;
if (piVar5 == (int *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0x36e);
ppuVar3 = extraout_r1;
}
iVar1 = DAT_8f68a20c;
if ((*(char *)(DAT_8f68a20c + 0x25) == '\0') || (*(int *)(DAT_8f68a20c + 0x28) != 0)) {
uVar6 = CONCAT44(ppuVar3,0xffffffff);
}
else {
*(uint ***)(DAT_8f68a20c + 0x28) = param_2;
uVar4 = (uint)*(byte *)(param_1 + 6);
if (uVar4 != 0) {
uVar4 = 1;
}
uVar6 = FUN_8f621cf4(piVar5,(uint)*(byte *)(param_1 + 4),uVar4,*param_2,param_2[1],&LAB_8f622bd0
,iVar1);
}
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar6,(int)((ulonglong)uVar6 >> 0x20),piVar2);
}
void FUN_8f6244c4(int param_1,undefined4 param_2)
{
int iVar1;
int *piVar2;
undefined4 *puVar3;
int *piVar4;
undefined4 extraout_r1;
uint uVar5;
uint uVar6;
int iVar7;
int iVar8;
int *in_lr;
undefined8 uVar9;
piVar2 = DAT_8f69d118;
iVar1 = DAT_8f68a20c;
if (param_1 == 1) {
iVar8 = 2;
iVar7 = param_1;
}
else {
iVar8 = param_1;
if (param_1 == 2) {
iVar7 = 0;
}
else if (param_1 == 3) {
iVar7 = 1;
}
else {
if (param_1 != 4) goto LAB_8f62454c;
iVar7 = 0;
iVar8 = 3;
}
}
uVar5 = 1;
do {
uVar6 = uVar5;
if (iVar7 != 0) {
uVar6 = uVar5 + 0x10;
}
uVar6 = 1 << (uVar6 & 0xff);
if ((uVar6 & *(uint *)(DAT_8f68a20c + 0x14)) == 0) {
puVar3 = (undefined4 *)FUN_8f63666c(0x18,param_2);
if (puVar3 == (undefined4 *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0x401);
}
puVar3[3] = 4;
puVar3[5] = 0x42;
*(short *)(puVar3 + 2) = (short)param_2;
*(char *)(puVar3 + 1) = (char)uVar5;
*(char *)((int)puVar3 + 5) = (char)iVar8;
*(char *)((int)puVar3 + 6) = (char)iVar7;
piVar4 = (int *)FUN_8f635d28(0x40,0x10);
uVar9 = FUN_8f6366a8(piVar4,puVar3[5] * 0x10 + 0x3fU & 0xffffffc0);
param_2 = (undefined4)((ulonglong)uVar9 >> 0x20);
puVar3[4] = (int)uVar9;
if ((int)uVar9 == 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0x40a);
param_2 = extraout_r1;
}
uVar5 = *(uint *)(iVar1 + 0x14);
*puVar3 = *(undefined4 *)(iVar1 + 0x10);
*(undefined4 **)(iVar1 + 0x10) = puVar3;
*(uint *)(iVar1 + 0x14) = uVar5 | uVar6;
goto LAB_8f624550;
}
uVar5 = uVar5 + 1;
} while (uVar5 != 0x10);
LAB_8f62454c:
puVar3 = (undefined4 *)0x0;
LAB_8f624550:
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(puVar3,param_2,piVar2);
}
void FUN_8f624664(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
int *piVar2;
undefined4 *puVar3;
int *in_lr;
piVar1 = DAT_8f69d118;
puVar3 = (undefined4 *)FUN_8f63666c(0x10,param_2);
if (puVar3 == (undefined4 *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_udc_c_8f661898,0x587);
}
piVar2 = DAT_8f69d118;
*puVar3 = 0;
puVar3[1] = 0;
puVar3[2] = 0;
puVar3[3] = 0;
if (piVar1 == piVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(puVar3,piVar1,piVar2);
}
void FUN_8f624778(int *param_1,int param_2)
{
int *piVar1;
uint uVar2;
piVar1 = DAT_8f69d118;
uVar2 = *(uint *)(*param_1 + 8);
if (param_2 == 0) {
uVar2 = uVar2 & 0xfffffffd;
}
else {
uVar2 = uVar2 | 2;
}
*(uint *)(*param_1 + 8) = uVar2;
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(param_1,uVar2,piVar1);
}
return;
}
void FUN_8f6247c4(int *param_1)
{
int iVar1;
iVar1 = DAT_8f69d118;
*(undefined4 *)(*param_1 + 0xc) = 0;
if (iVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar1,0,(int *)iVar1);
}
void FUN_8f624804(int *param_1)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
*(uint *)(*param_1 + 0x30) = *(uint *)(*param_1 + 0x30) | 0x80;
uVar2 = FUN_8f6104fc(10);
*(uint *)(*param_1 + 0x30) = *(uint *)(*param_1 + 0x30) & 0xffffff7f;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
void FUN_8f624864(int *param_1)
{
int *piVar1;
int iVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
iVar2 = *param_1;
*(uint *)(iVar2 + 0x30) = *(uint *)(iVar2 + 0x30) | 0x10000000;
*(uint *)(iVar2 + 0x30) = *(uint *)(iVar2 + 0x30) | 0x1000000;
*(uint *)(iVar2 + 0x30) = *(uint *)(iVar2 + 0x30) | 0x100;
uVar3 = FUN_8f611778();
if (((int)uVar3 == 0x7e) && (uVar3 = FUN_8f611aac(), (uint)uVar3 < 0x20000)) {
*(uint *)(*param_1 + 0x30) = *(uint *)(*param_1 + 0x30) & 0xffc01fff | 0x210000;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f624928)
void FUN_8f6248f8(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f62492c(int *param_1)
{
int *piVar1;
uint uVar2;
int iVar3;
piVar1 = DAT_8f69d118;
iVar3 = *param_1;
*(uint *)(iVar3 + 0x10) = *(uint *)(iVar3 + 0x10) & 0xfdffffff;
uVar2 = *(uint *)(iVar3 + 0x10) | 0x800;
*(uint *)(iVar3 + 0x10) = uVar2;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1,uVar2,piVar1);
}
void FUN_8f62497c(int *param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f69d118;
iVar2 = *param_1;
*(undefined4 *)(iVar2 + 0x14) = 0xd190e4;
if (iVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar1,iVar2,(int *)iVar1);
}
void FUN_8f6249c0(int *param_1)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f611778();
if (((int)uVar2 == 0x7e) && (uVar2 = FUN_8f611aac(), (uint)uVar2 < 0x20000)) {
*(undefined4 *)(*param_1 + 8) = 0x78;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f624a4c)
void FUN_8f624a1c(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f624a50(int *param_1)
{
int *piVar1;
uint uVar2;
piVar1 = DAT_8f69d118;
uVar2 = *(uint *)(*param_1 + 0x34) & 0xfffffff8 | 5;
*(uint *)(*param_1 + 0x34) = uVar2;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1,uVar2,piVar1);
}
void FUN_8f624a98(int *param_1)
{
int *piVar1;
int iVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
iVar2 = *param_1;
*(uint *)(iVar2 + 0xec) = *(uint *)(iVar2 + 0xec) | 0x1000;
*(uint *)(iVar2 + 0x10) = *(uint *)(iVar2 + 0x10) | 0x2000;
*(uint *)(iVar2 + 0x10) = *(uint *)(iVar2 + 0x10) | 0x100000;
*(uint *)(iVar2 + 0x10) = *(uint *)(iVar2 + 0x10) | 0x10000000;
uVar3 = FUN_8f61ac70();
if ((int)uVar3 == 0) {
*(uint *)(*param_1 + 0x30) = *(uint *)(*param_1 + 0x30) | 0x1000000;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),piVar1);
}
return;
}
void FUN_8f624b1c(int *param_1,undefined4 param_2)
{
int *piVar1;
int *piVar2;
uint uVar3;
int iVar4;
int *in_lr;
piVar1 = DAT_8f69d118;
piVar2 = (int *)FUN_8f63666c(4,param_2);
if (piVar2 == (int *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_usb30_wrappe_8f661b40,0xef);
}
iVar4 = *param_1;
uVar3 = *(uint *)(iVar4 + 8);
*piVar2 = iVar4;
uVar3 = uVar3 & 0xfffffffd;
*(uint *)(iVar4 + 8) = uVar3;
*(undefined4 *)(iVar4 + 0xc) = 0;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(piVar2,uVar3,piVar1);
}
void FUN_8f624bb4(int *param_1)
{
int iVar1;
iVar1 = DAT_8f69d118;
*(undefined4 *)(*param_1 + 0xec) = 0x1cb8;
if (iVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar1,0x1cb8,(int *)iVar1);
}
void FUN_8f624bf4(int *param_1)
{
int *piVar1;
int iVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
*(uint *)(*param_1 + 8) = *(uint *)(*param_1 + 8) | 0x100;
FUN_8f6104fc(1);
iVar2 = *param_1;
*(uint *)(iVar2 + 8) = *(uint *)(iVar2 + 8) | 1;
*(uint *)(iVar2 + 8) = *(uint *)(iVar2 + 8) | 8;
uVar3 = FUN_8f6104fc(1);
*(uint *)(*param_1 + 8) = *(uint *)(*param_1 + 8) & 0xfffffeff;
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),piVar1);
}
void FUN_8f624c78(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
int iVar2;
int iVar3;
undefined8 uVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
uVar4 = FUN_8f633350(param_1,param_2);
iVar2 = FUN_8f63338c((int)uVar4,(int)((ulonglong)uVar4 >> 0x20));
uVar5 = FUN_8f6334fc();
iVar3 = (int)uVar5;
if (iVar3 != 0) {
if ((int)uVar4 == 0x20 || iVar2 == 0x80) {
iVar3 = 1;
}
else {
iVar3 = 0;
}
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar3,(int)((ulonglong)uVar5 >> 0x20),piVar1);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f624d18)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f624cd8(void)
{
_DAT_0860065c = 0;
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f624d1c(uint param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
undefined uVar2;
int iVar3;
int *piVar4;
char *pcVar5;
uint uVar6;
bool bVar7;
undefined8 uVar8;
piVar1 = DAT_8f69d118;
uVar8 = FUN_8f600724(param_1,param_2,param_3);
piVar4 = (int *)((ulonglong)uVar8 >> 0x20);
iVar3 = (int)uVar8;
if (iVar3 != 0) {
if (piVar1 == DAT_8f69d118) {
pcVar5 = s_HALT__set_download_mode_not_supp_8f661b64;
goto LAB_8f624dc4;
}
goto LAB_8f624df0;
}
uVar6 = param_1 + 0xfffffff;
if (uVar6 < 2) {
LAB_8f624dd0:
uVar2 = 1;
}
else {
uVar6 = 0x77665500;
param_3 = 0x8600000;
bVar7 = (param_1 & 0xfffffffd) == 0x77665500;
if (!bVar7) {
iVar3 = 7;
}
uVar2 = (undefined)iVar3;
_DAT_0860065c = param_1;
if (bVar7) goto LAB_8f624dd0;
}
FUN_8f600f88(uVar2);
iVar3 = FUN_8f6151bc(9,1);
if ((0 < iVar3) && (piVar4 = (int *)FUN_8f6157b4(), piVar4 != (int *)0x0)) {
dprintf((byte *)s_Failed_to_halt_pmic_arbiter___d_8f661b8c,piVar4,param_3,uVar6);
}
_DAT_004ab000 = 0;
uVar8 = FUN_8f6104a8(5000);
piVar4 = (int *)((ulonglong)uVar8 >> 0x20);
if (piVar1 == DAT_8f69d118) {
pcVar5 = s_Rebooting_failed_8f661bb0;
LAB_8f624dc4:
dprintf((byte *)pcVar5,piVar4,piVar1,DAT_8f69d118);
return;
}
LAB_8f624df0:
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar8,(int)((ulonglong)uVar8 >> 0x20),piVar1);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f624e04(undefined4 param_1,int *param_2,undefined4 param_3)
{
int *piVar1;
int *extraout_r1;
undefined4 uVar2;
undefined *puVar3;
int *in_lr;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
dprintf((byte *)s_Going_down_for_shutdown__8f661bc4,param_2,param_3,DAT_8f69d118);
FUN_8f600f88(4);
puVar3 = &DAT_004ab000;
uVar2 = 0;
_DAT_004ab000 = 0;
FUN_8f6104a8(5000);
dprintf((byte *)s_Shutdown_failed_8f661be0,extraout_r1,uVar2,puVar3);
uVar4 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_reboot_c_8f661bf4,0xad);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
void FUN_8f624e9c(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
int iVar2;
int *piVar3;
int *extraout_r1;
int *piVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
piVar4 = DAT_8f69d118;
uVar5 = FUN_8f600364();
DAT_8f68a21c = (int)uVar5;
iVar2 = FUN_8f6263b8(DAT_8f68a21c,(int)((ulonglong)uVar5 >> 0x20));
if (iVar2 == 0) goto LAB_8f624f2c;
piVar4 = (int *)&DAT_8f69dc14;
iVar2 = *(int *)(DAT_8f68a21c + 0x58);
DAT_8f69dc14 = *(uint *)(DAT_8f68a21c + 0x74) >> 9;
if (iVar2 == 0) {
LAB_8f624f1c:
DAT_8f69dc18 = 0x20;
}
else if (*(byte *)(iVar2 + 0xc0) < 8) {
DAT_8f69dc18 = 1;
}
else {
if ((*(byte *)(iVar2 + 0xa6) & 0x10) != 0) goto LAB_8f624f1c;
DAT_8f69dc18 = 2;
}
param_3 = 3;
DAT_8f69dc1c = 3;
LAB_8f624f2c:
uVar5 = FUN_8f625408();
piVar3 = (int *)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 < 0) {
dprintf((byte *)s_Error_registering_the_handler_8f661c14,piVar3,param_3,piVar4);
piVar3 = extraout_r1;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,piVar3,piVar1);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f624fa0)
void FUN_8f624f68(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f624fa4(undefined4 param_1,int param_2,int param_3,int *param_4)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f6263b8(param_1,param_2);
if ((int)uVar2 != 0) {
uVar2 = FUN_8f6256d0(DAT_8f68a21c,param_1,param_2,param_3,param_4);
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
void FUN_8f625014(int param_1,uint param_2,int param_3,int param_4,undefined4 *param_5)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f6263b8(param_1,param_2);
if ((int)uVar2 != 0) {
uVar2 = FUN_8f6254dc(DAT_8f68a21c,param_1,param_2,param_3,param_4,param_5);
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
void FUN_8f62508c(uint param_1,int param_2)
{
int iVar1;
int *piVar2;
int *extraout_r1;
undefined4 uVar3;
undefined4 *puVar4;
undefined4 local_34;
uint local_30;
int local_2c;
undefined4 local_28;
undefined4 local_24;
int *local_20;
int *local_1c;
local_34 = 0x202;
local_1c = DAT_8f69d118;
local_28 = 0;
local_24 = 0;
local_20 = (int *)0x0;
local_30 = param_1;
local_2c = param_2;
FUN_8f625b24(param_1,param_2);
iVar1 = FUN_8f608478();
uVar3 = 0xc;
puVar4 = &local_28;
iVar1 = FUN_8f617098(iVar1,&local_34,(int *)0xc,puVar4,(int *)0xc);
FUN_8f625b4c(param_1,param_2);
if ((iVar1 < 0) || ((int)local_20 < 0)) {
dprintf((byte *)s_Reading_device_info_failed__Erro_8f661c34,local_20,uVar3,puVar4);
uVar3 = 0xffffffff;
piVar2 = extraout_r1;
}
else {
uVar3 = 0;
piVar2 = local_20;
}
if (local_1c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,piVar2,local_1c);
}
return;
}
void FUN_8f625144(uint param_1,int param_2)
{
int iVar1;
int *piVar2;
int *extraout_r1;
undefined4 uVar3;
undefined4 *puVar4;
undefined4 local_34;
uint local_30;
int local_2c;
undefined4 local_28;
undefined4 local_24;
int *local_20;
int *local_1c;
local_34 = 0x203;
local_1c = DAT_8f69d118;
local_28 = 0;
local_24 = 0;
local_20 = (int *)0x0;
local_30 = param_1;
local_2c = param_2;
FUN_8f625b24(param_1,param_2);
iVar1 = FUN_8f608478();
uVar3 = 0xc;
puVar4 = &local_28;
iVar1 = FUN_8f617098(iVar1,&local_34,(int *)0xc,puVar4,(int *)0xc);
FUN_8f625b4c(param_1,param_2);
if ((iVar1 < 0) || ((int)local_20 < 0)) {
dprintf((byte *)s_Writing_device_info_failed__Erro_8f661c5c,local_20,uVar3,puVar4);
uVar3 = 0xffffffff;
piVar2 = extraout_r1;
}
else {
uVar3 = 0;
piVar2 = local_20;
}
if (local_1c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,piVar2,local_1c);
}
return;
}
void FUN_8f6251fc(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
int *piVar2;
uint extraout_r1;
uint extraout_r1_00;
int *piVar3;
ulonglong uVar4;
piVar1 = DAT_8f69d118;
piVar3 = DAT_8f69d118;
uVar4 = FUN_8f625488((undefined4 *)0x2000,param_2,param_3);
piVar2 = (int *)(uVar4 >> 0x20);
if ((int)uVar4 < 0) {
dprintf((byte *)s_Failed_to_stop_Qseecom_Listener_8f661cd8,piVar2,param_3,piVar3);
uVar4 = uVar4 & 0xffffffff | (ulonglong)extraout_r1 << 0x20;
}
else {
uVar4 = FUN_8f617904((int)uVar4,piVar2,param_3);
if ((int)uVar4 < 0) {
dprintf((byte *)s_Failed_to_exit_qseecom_8f661cfc,(int *)(uVar4 >> 0x20),param_3,piVar3);
uVar4 = uVar4 & 0xffffffff | (ulonglong)extraout_r1_00 << 0x20;
}
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)(uVar4 >> 0x20),piVar1);
}
void FUN_8f625278(int **param_1,undefined4 param_2,char *param_3)
{
int *piVar1;
undefined4 uVar2;
int **ppiVar3;
int *piVar4;
int *extraout_r1;
undefined uVar5;
int iVar6;
int *piVar7;
int *piVar8;
int *in_lr;
undefined8 uVar9;
piVar1 = DAT_8f69d118;
ppiVar3 = param_1;
if (param_1 == (int **)0x0) {
param_3 = s_platform_msm_shared_rpmb_rpmb_li_8f661d18;
ppiVar3 = (int **)FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_rpmb_rpmb_li_8f661d18,0x90);
}
piVar4 = *param_1;
iVar6 = (int)piVar4 + -0x101;
switch(iVar6) {
case 0:
ppiVar3 = (int **)FUN_8f624f68(ppiVar3,piVar4);
uVar5 = (undefined)iVar6;
piVar7 = *ppiVar3;
if (ppiVar3 != (int **)0x0) {
uVar5 = 0;
}
piVar8 = ppiVar3[1];
piVar4 = ppiVar3[2];
if (ppiVar3 != (int **)0x0) {
*(undefined *)(param_1 + 2) = uVar5;
*(undefined *)((int)param_1 + 9) = uVar5;
*(undefined *)((int)param_1 + 10) = uVar5;
*(undefined *)((int)param_1 + 0xb) = uVar5;
}
uVar2 = 0;
param_1[3] = piVar7;
param_1[4] = piVar8;
param_1[5] = piVar4;
*(undefined *)((int)param_1 + 5) = 0;
*(undefined *)((int)param_1 + 6) = 0;
*(undefined *)((int)param_1 + 7) = 0;
*(undefined *)(param_1 + 1) = 2;
break;
case 1:
case 2:
if (piVar4 == (int *)0x103) {
uVar9 = FUN_8f625014((int)param_1 + (int)param_1[3],(uint)param_1[1],(int)param_1[5],
(int)(param_1 + 5),param_1 + 2);
piVar4 = (int *)((ulonglong)uVar9 >> 0x20);
param_1[1] = (int *)uVar9;
}
else {
uVar9 = FUN_8f624fa4((int)param_1 + (int)param_1[3],(int)param_1[1],(int)(param_1 + 5),
(int *)(param_1 + 2));
piVar4 = (int *)((ulonglong)uVar9 >> 0x20);
param_1[1] = (int *)uVar9;
}
uVar2 = 0;
*(undefined *)((int)param_1 + 0xd) = 0;
*(undefined *)((int)param_1 + 0xe) = 0;
*(undefined *)((int)param_1 + 0xf) = 0;
*(undefined *)(param_1 + 3) = 0x14;
break;
case 3:
uVar2 = 0xffffffff;
break;
default:
dprintf((byte *)s_Unsupported_Request_from_qseecom_8f661d44,piVar4,param_3,iVar6);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_platform_msm_shared_rpmb_rpmb_li_8f661d18,0xa9);
uVar2 = 0;
piVar4 = extraout_r1;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,piVar4,piVar1);
}
void FUN_8f625408(void)
{
int *piVar1;
int *extraout_r1;
undefined4 uVar2;
code *pcVar3;
undefined8 uVar4;
char *local_24;
undefined4 local_20;
undefined4 local_1c;
code *local_18;
int *local_14;
pcVar3 = FUN_8f625278;
local_24 = s_RPMB_system_services_8f661d6c;
local_14 = DAT_8f69d118;
uVar2 = 0x6400;
local_18 = FUN_8f625278;
local_20 = 0x2000;
local_1c = 0x6400;
uVar4 = FUN_8f6172f4((int)&local_24,0x2000,0x6400);
piVar1 = (int *)((ulonglong)uVar4 >> 0x20);
if ((int)uVar4 < 0) {
dprintf((byte *)s_Failed_to_register_rpmb_listener_8f661d84,piVar1,uVar2,pcVar3);
piVar1 = extraout_r1;
}
if (local_14 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,piVar1,local_14);
}
void FUN_8f625488(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
int *piVar2;
int *extraout_r1;
int *piVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
piVar3 = DAT_8f69d118;
uVar4 = FUN_8f61756c(param_1,param_2,param_3);
piVar2 = (int *)((ulonglong)uVar4 >> 0x20);
if ((int)uVar4 < 0) {
dprintf((byte *)s_Failed_to_unregister_rpmb_listen_8f661da8,piVar2,param_3,piVar3);
piVar2 = extraout_r1;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,piVar2,piVar1);
}
void FUN_8f6254dc(uint **param_1,int param_2,uint param_3,int param_4,int param_5,
undefined4 *param_6)
{
undefined4 uVar1;
int iVar2;
uint uVar3;
bool bVar4;
undefined8 uVar5;
uint local_11c;
undefined2 local_108;
undefined4 local_104;
undefined local_100;
undefined local_ff;
undefined2 local_fe;
undefined4 local_ec;
undefined4 local_d8;
int local_d4;
int iStack_cc;
undefined uStack_c8;
undefined2 local_c0;
undefined4 local_bc;
undefined local_b8;
undefined local_b7;
undefined2 local_b6;
undefined4 local_a4;
undefined4 local_90;
undefined *local_8c;
undefined4 local_84;
undefined2 local_78;
undefined4 local_74;
undefined local_70;
undefined local_6f;
undefined2 local_6e;
undefined4 local_5c;
undefined4 local_48;
int local_44;
undefined4 local_3c;
int *local_2c;
uVar1 = 0xd8;
local_2c = DAT_8f69d118;
FUN_8f636968((uint *)&local_108,0,0xd8);
if (param_4 == 2) {
local_11c = param_3 >> 1;
}
else {
local_11c = param_3;
if (param_4 != 1) {
if (param_4 != 0x20) goto LAB_8f62553c;
local_11c = param_3 >> 5;
}
}
if (local_11c != 0) {
uVar3 = 0;
iVar2 = param_2;
do {
local_d8 = 1;
local_108 = 0x19;
local_104 = 0;
local_ff = 0;
local_fe = 1;
local_ec = 0;
local_100 = 1;
if (param_4 == 1) {
uStack_c8 = 0;
iStack_cc = param_4;
}
else if (param_4 == 2 || param_4 == 0x20) {
uStack_c8 = 1;
iStack_cc = param_4;
}
local_90 = 0;
local_c0 = 0x19;
local_bc = 0;
local_b7 = 0;
local_b6 = 1;
local_a4 = 0;
local_b8 = 1;
local_8c = &DAT_8f67f11c;
local_84 = 1;
local_48 = 0;
local_78 = 0x12;
local_74 = 0;
local_6f = 0;
local_6e = 1;
local_5c = 1;
local_70 = 1;
local_44 = param_5;
local_3c = 1;
local_d4 = param_2;
uVar5 = FUN_8f60d238(param_1,(int *)&local_108);
if ((int)uVar5 != 0) {
dprintf((byte *)s_Failed_to_Send_the_RPMB_write_se_8f661dec,
(int *)((ulonglong)uVar5 >> 0x20),uVar1,iVar2);
break;
}
if (*(char *)(param_5 + 0x1fc) == -0x80) {
dprintf((byte *)s_Max_write_counter_reached__8f661e20,(int *)0x80,uVar1,iVar2);
break;
}
if (*(byte *)(param_5 + 0x1fd) != 0) {
dprintf((byte *)(s_SERIAL_NUMBER____s_8f65e864 + 0x10),
(int *)(&PTR_s_Operation_Ok_8f661dcc)[*(byte *)(param_5 + 0x1fd)],uVar1,
&PTR_s_Operation_Ok_8f661dcc);
break;
}
uVar3 = uVar3 + 1;
param_2 = param_2 + param_4 * 0x200;
iVar2 = param_4 * 0x200;
} while (uVar3 != local_11c);
}
LAB_8f62553c:
bVar4 = local_2c == DAT_8f69d118;
*param_6 = 0x200;
if (bVar4) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,0x200,local_2c);
}
void FUN_8f6256d0(uint **param_1,undefined4 param_2,int param_3,int param_4,int *param_5)
{
int *piVar1;
int *extraout_r1;
int *extraout_r1_00;
undefined4 uVar2;
undefined4 uVar3;
uint uVar4;
undefined8 uVar5;
undefined2 local_100;
undefined4 local_fc;
undefined local_f8;
undefined local_f7;
undefined2 local_f6;
undefined4 local_e4;
undefined4 local_d0;
undefined4 local_cc;
undefined4 local_c4;
undefined2 local_b8;
undefined4 local_b4;
undefined local_b0;
undefined local_af;
undefined2 local_ae;
undefined4 local_9c;
undefined4 local_94;
undefined4 local_88;
int local_84;
int local_7c;
int *local_24;
local_24 = DAT_8f69d118;
FUN_8f636968((uint *)&local_100,0,0xd8);
uVar2 = 0x19;
uVar3 = 0x12;
local_d0 = 0;
local_fc = 0;
local_f7 = 0;
local_e4 = 0;
local_88 = 0;
local_b4 = 0;
local_af = 0;
local_100 = 0x19;
local_f6 = 1;
local_f8 = 1;
local_c4 = 1;
local_ae = 1;
local_9c = 1;
local_b0 = 1;
local_94 = 1;
local_b8 = 0x12;
local_cc = param_2;
local_84 = param_4;
local_7c = param_3;
uVar5 = FUN_8f60d238(param_1,(int *)&local_100);
piVar1 = (int *)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 == 0) {
uVar4 = (uint)*(byte *)(param_4 + 0x1fd);
if (uVar4 != 0) {
dprintf((byte *)(s_SERIAL_NUMBER____s_8f65e864 + 0x10),
(int *)(&PTR_s_Operation_Ok_8f661dcc)[uVar4],&PTR_s_Operation_Ok_8f661dcc,uVar4);
piVar1 = extraout_r1;
}
uVar2 = 0;
*param_5 = param_3 << 9;
}
else {
dprintf((byte *)s_Failed_to_Send_the_RPMB_read_seq_8f661e40,piVar1,uVar2,uVar3);
uVar2 = 0xffffffff;
piVar1 = extraout_r1_00;
}
if (local_24 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,piVar1,local_24);
}
void FUN_8f6257e0(undefined4 param_1,undefined4 param_2,char *param_3)
{
int *piVar1;
undefined4 uVar2;
uint uVar3;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
uint uVar4;
undefined4 in_cr0;
undefined4 in_cr8;
undefined4 in_cr9;
undefined4 in_cr12;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f62591c(3);
coprocessor_moveto(0xf,0,0,0x8f600000,in_cr12,in_cr0);
FUN_8f62625c(uVar2,extraout_r1,param_3);
uVar3 = FUN_8f625984(3);
uVar4 = coproc_movefrom_Coprocessor_Access_Control();
coproc_moveto_Coprocessor_Access_Control(uVar4 | 0xf00000);
InstructionSynchronizationBarrier(0xf);
uVar4 = coprocessor_movefromRt(10,7,0,in_cr8,in_cr0);
coprocessor_moveto(10,7,0,uVar4 | 0x40000000,in_cr8,in_cr0);
uVar4 = coprocessor_movefromRt(0xf,0,0,in_cr9,in_cr12);
coprocessor_moveto(0xf,0,0,uVar4 & 0xfffffff7 | 1,in_cr9,in_cr12);
coprocessor_moveto(0xf,0,1,0x80000000,in_cr9,in_cr12);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,extraout_r1_00,piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f6258a0)
void FUN_8f625870(undefined4 param_1,undefined4 param_2)
{
return;
}
undefined8 FUN_8f6258c8(int param_1)
{
undefined4 in_lr;
char in_NG;
char in_ZR;
char in_CY;
char in_OV;
byte in_Q;
setFIQMode();
*(BADSPACEBASE **)param_1 = register0x00000054;
*(undefined4 *)(param_1 + 4) = in_lr;
setIRQMode();
*(BADSPACEBASE **)(param_1 + 8) = register0x00000054;
*(undefined4 *)(param_1 + 0xc) = in_lr;
setSupervisorMode();
*(BADSPACEBASE **)(param_1 + 0x10) = register0x00000054;
*(undefined4 *)(param_1 + 0x14) = in_lr;
setAbortMode();
*(BADSPACEBASE **)(param_1 + 0x18) = register0x00000054;
*(undefined4 *)(param_1 + 0x1c) = in_lr;
setUndefinedMode();
*(BADSPACEBASE **)(param_1 + 0x20) = register0x00000054;
*(undefined4 *)(param_1 + 0x24) = in_lr;
setSystemMode();
*(BADSPACEBASE **)(param_1 + 0x28) = register0x00000054;
*(undefined4 *)(param_1 + 0x2c) = in_lr;
return CONCAT44((uint)(byte)(in_NG << 4 | in_ZR << 3 | in_CY << 2 | in_OV << 1 | in_Q) << 0x1b,
param_1 + 0x30);
}
undefined4 FUN_8f62591c(uint param_1)
{
uint uVar1;
disableFIQinterrupts();
disableIRQinterrupts();
disableDataAbortInterrupts();
if ((param_1 & 2) != 0) {
uVar1 = coproc_movefrom_Control();
if ((uVar1 & 4) != 0) {
DataSynchronizationBarrier(0xf);
coproc_moveto_Control(uVar1 & 0xfffffffb);
InstructionSynchronizationBarrier(0xf);
FUN_8f6259dc();
}
FUN_8f625a70();
}
if ((param_1 & 1) != 0) {
uVar1 = coproc_movefrom_Control();
coproc_moveto_Control(uVar1 & 0xffffefff);
InstructionSynchronizationBarrier(0xf);
}
coproc_moveto_Invalidate_Entire_Instruction(0);
DataSynchronizationBarrier(0xf);
return 0;
}
uint FUN_8f625984(uint param_1)
{
uint uVar1;
disableFIQinterrupts();
disableIRQinterrupts();
disableDataAbortInterrupts();
uVar1 = param_1;
if (((param_1 & 2) != 0) && (uVar1 = coproc_movefrom_Control(), (uVar1 & 4) == 0)) {
FUN_8f625a70();
uVar1 = coproc_movefrom_Control();
uVar1 = uVar1 | 4;
coproc_moveto_Control(uVar1);
}
if ((param_1 & 1) != 0) {
coproc_moveto_Invalidate_Entire_Instruction(0);
uVar1 = coproc_movefrom_Control();
uVar1 = uVar1 | 0x1000;
coproc_moveto_Control(uVar1);
}
return uVar1;
}
void FUN_8f6259dc(void)
{
bool bVar1;
uint uVar2;
uint uVar3;
uint uVar4;
uint uVar5;
uint uVar6;
uint uVar7;
undefined4 in_cr0;
DataMemoryBarrier(0xf);
uVar2 = coprocessor_movefromRt(0xf,1,1,in_cr0,in_cr0);
if ((uVar2 & 0x7000000) != 0) {
uVar7 = 0;
do {
if (1 < (uVar2 >> (uVar7 + (uVar7 >> 1) & 0xff) & 7)) {
coprocessor_moveto(0xf,2,0,uVar7,in_cr0,in_cr0);
InstructionSynchronizationBarrier(0xf);
uVar3 = coprocessor_movefromRt(0xf,1,0,in_cr0,in_cr0);
uVar4 = DAT_8f625b84 & uVar3 >> 3;
uVar5 = count_leading_zeroes(uVar4);
do {
uVar6 = DAT_8f625b88 & uVar3 >> 0xd;
do {
coproc_moveto_Clean_Data_Cache_by_Index
(uVar7 | uVar4 << (uVar5 & 0xff) | uVar6 << (uVar3 & 7) + 4);
bVar1 = 0 < (int)uVar6;
uVar6 = uVar6 - 1;
} while (bVar1);
bVar1 = 0 < (int)uVar4;
uVar4 = uVar4 - 1;
} while (bVar1);
}
uVar7 = uVar7 + 2;
} while ((int)uVar7 < (int)((uVar2 & 0x7000000) >> 0x17));
}
coprocessor_moveto(0xf,2,0,0,in_cr0,in_cr0);
DataSynchronizationBarrier(0xf);
InstructionSynchronizationBarrier(0xf);
return;
}
void FUN_8f625a70(void)
{
bool bVar1;
uint uVar2;
uint uVar3;
uint uVar4;
uint uVar5;
uint uVar6;
uint uVar7;
undefined4 in_cr0;
undefined4 in_cr7;
undefined4 in_cr14;
uVar2 = coprocessor_movefromRt(0xf,1,1,in_cr0,in_cr0);
if ((uVar2 & 0x7000000) != 0) {
uVar7 = 0;
do {
if (1 < (uVar2 >> (uVar7 + (uVar7 >> 1) & 0xff) & 7)) {
coprocessor_moveto(0xf,2,0,uVar7,in_cr0,in_cr0);
InstructionSynchronizationBarrier(0xf);
uVar3 = coprocessor_movefromRt(0xf,1,0,in_cr0,in_cr0);
uVar4 = DAT_8f625b84 & uVar3 >> 3;
uVar5 = count_leading_zeroes(uVar4);
do {
uVar6 = DAT_8f625b88 & uVar3 >> 0xd;
do {
coprocessor_moveto(0xf,0,2,uVar7 | uVar4 << (uVar5 & 0xff) | uVar6 << (uVar3 & 7) + 4,
in_cr7,in_cr14);
bVar1 = 0 < (int)uVar6;
uVar6 = uVar6 - 1;
} while (bVar1);
bVar1 = 0 < (int)uVar4;
uVar4 = uVar4 - 1;
} while (bVar1);
}
uVar7 = uVar7 + 2;
} while ((int)uVar7 < (int)((uVar2 & 0x7000000) >> 0x17));
}
coprocessor_moveto(0xf,2,0,0,in_cr0,in_cr0);
DataSynchronizationBarrier(0xf);
InstructionSynchronizationBarrier(0xf);
return;
}
undefined4 FUN_8f625b00(uint param_1,int param_2)
{
uint uVar1;
uVar1 = param_1 & 0xffffffc0;
do {
coproc_moveto_Clean_Data_Cache_by_MVA(uVar1);
uVar1 = uVar1 + 0x40;
} while (uVar1 < param_1 + param_2);
DataSynchronizationBarrier(0xf);
return 0;
}
undefined4 FUN_8f625b24(uint param_1,int param_2)
{
uint uVar1;
DataSynchronizationBarrier(0xf);
uVar1 = param_1 & 0xffffffc0;
do {
coproc_moveto_Invalidate_Data_Cache_by_MVA(uVar1);
uVar1 = uVar1 + 0x40;
} while (uVar1 < param_1 + param_2);
DataSynchronizationBarrier(0xf);
return 0;
}
undefined4 FUN_8f625b4c(uint param_1,int param_2)
{
uint uVar1;
uVar1 = param_1 & 0xffffffc0;
do {
coproc_moveto_Invalidate_Entire_Data_by_MVA(uVar1);
uVar1 = uVar1 + 0x40;
} while (uVar1 < param_1 + param_2);
DataSynchronizationBarrier(0xf);
return 0;
}
int FUN_8f625b8c(void)
{
char in_NG;
char in_ZR;
char in_CY;
char in_OV;
byte in_Q;
return (uint)(byte)(in_NG << 4 | in_ZR << 3 | in_CY << 2 | in_OV << 1 | in_Q) << 0x1b;
}
uint FUN_8f625b9c(void)
{
char in_NG;
char in_ZR;
char in_CY;
char in_OV;
byte in_Q;
return (uint)(byte)(in_NG << 4 | in_ZR << 3 | in_CY << 2 | in_OV << 1 | in_Q) << 0x1b | 0x80;
}
void FUN_8f625c30(void)
{
WaitForInterrupt();
return;
}
undefined4 FUN_8f625c38(void)
{
undefined4 uVar1;
uVar1 = coproc_movefrom_Control();
return uVar1;
}
void FUN_8f625c40(undefined4 param_1)
{
coproc_moveto_Control(param_1);
InstructionSynchronizationBarrier(0xf);
return;
}
void FUN_8f625c5c(undefined4 param_1)
{
coproc_moveto_Translation_table_base_0(param_1);
return;
}
void FUN_8f625c64(undefined4 param_1)
{
coproc_moveto_Domain_Access_Control(param_1);
return;
}
undefined4 FUN_8f625c6c(void)
{
DataSynchronizationBarrier(0xf);
InstructionSynchronizationBarrier(0xf);
coproc_moveto_Invalidate_unified_TLB_unlocked(0);
DataSynchronizationBarrier(0xf);
InstructionSynchronizationBarrier(0xf);
return 0;
}
void FUN_8f625da0(int **param_1)
{
int *piVar1;
undefined *puVar2;
int *piVar3;
int iVar4;
undefined8 uVar5;
int *local_44 [2];
int *local_3c;
int *local_34;
int *local_24;
int *local_1c;
int *local_14;
local_14 = DAT_8f69d118;
dprintf((byte *)s_r0_0x_08x_r1_0x_08x_r2_0x_08x_r3_8f662000,param_1[3],param_1[4],param_1[5]);
dprintf((byte *)s_r4_0x_08x_r5_0x_08x_r6_0x_08x_r7_8f662030,param_1[7],param_1[8],param_1[9]);
dprintf((byte *)s_r8_0x_08x_r9_0x_08x_r10_0x_08x_r_8f662060,param_1[0xb],param_1[0xc],param_1[0xd]
);
piVar1 = param_1[1];
piVar3 = param_1[2];
dprintf((byte *)s_r12_0x_08x_usp_0x_08x_ulr_0x_08x_8f662090,param_1[0xf],piVar1,piVar3);
dprintf((byte *)s_spsr_0x_08x_8f6620c0,*param_1,piVar1,piVar3);
FUN_8f6258c8((int)local_44);
if (((uint)*param_1 & 0x1f) == 0x11) {
piVar1 = (int *)0x2a;
}
else {
piVar1 = (int *)0x20;
}
dprintf((byte *)s__c_s_r13_0x_08x_r14_0x_08x_8f6620d0,piVar1,&DAT_8f6620ec,local_44[0]);
if (((uint)*param_1 & 0x1f) == 0x12) {
piVar1 = (int *)0x2a;
}
else {
piVar1 = (int *)0x20;
}
dprintf((byte *)s__c_s_r13_0x_08x_r14_0x_08x_8f6620d0,piVar1,&DAT_8f6620f0,local_3c);
if (((uint)*param_1 & 0x1f) == 0x13) {
piVar1 = (int *)0x2a;
}
else {
piVar1 = (int *)0x20;
}
dprintf((byte *)s__c_s_r13_0x_08x_r14_0x_08x_8f6620d0,piVar1,&DAT_8f6620f4,local_34);
if (((uint)*param_1 & 0x1f) == 0x1b) {
piVar1 = (int *)0x2a;
}
else {
piVar1 = (int *)0x20;
}
dprintf((byte *)s__c_s_r13_0x_08x_r14_0x_08x_8f6620d0,piVar1,&DAT_8f6620f8,local_24);
if (((uint)*param_1 & 0x1f) == 0x1f) {
piVar1 = (int *)0x2a;
}
else {
piVar1 = (int *)0x20;
}
puVar2 = &DAT_8f6620fc;
uVar5 = dprintf((byte *)s__c_s_r13_0x_08x_r14_0x_08x_8f6620d0,piVar1,&DAT_8f6620fc,local_1c);
iVar4 = ((uint)*param_1 & 0x1f) - 0x11;
switch(iVar4) {
case 0:
local_1c = local_44[0];
break;
case 1:
local_1c = local_3c;
break;
case 2:
local_1c = local_34;
break;
default:
goto switchD_8f625f68_caseD_14;
case 10:
local_1c = local_24;
break;
case 0xe:
}
if (local_1c != (int *)0x0) {
dprintf((byte *)s_bottom_of_stack_at_0x_08x__8f662100,local_1c,puVar2,iVar4);
uVar5 = FUN_8f635454(local_1c,0x80,(int)puVar2);
}
switchD_8f625f68_caseD_14:
if (local_14 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),local_14);
}
return;
}
void FUN_8f626010(int **param_1,int param_2,byte *param_3)
{
int *piVar1;
piVar1 = param_1[0x10];
param_1[0x10] = (int *)((int)piVar1 + param_2);
DAT_8f67f324 = DAT_8f67f324 + 1;
dprintf(param_3,(int *)((int)piVar1 + param_2),DAT_8f67f324,&DAT_8f67f324);
FUN_8f625da0(param_1);
FUN_8f635184();
do {
// WARNING: Do nothing block with infinite loop
} while( true );
}
void FUN_8f62615c(int param_1)
{
int *piVar1;
int *piVar2;
uint *puVar3;
uint *puVar4;
uint uVar5;
piVar1 = DAT_8f69d118;
uVar5 = *(int *)(param_1 + 0x30) + *(int *)(param_1 + 0x34) & 0xfffffff8;
puVar4 = (uint *)(uVar5 - 0x2c);
puVar3 = FUN_8f636968(puVar4,0,0x2c);
piVar2 = DAT_8f69d118;
*(undefined **)(uVar5 - 0xc) = &LAB_8f626104;
*(uint **)(param_1 + 0x2c) = puVar4;
if (piVar1 == piVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(puVar3,piVar1,piVar2);
}
// WARNING: Removing unreachable block (ram,0x8f626258)
void FUN_8f626208(uint param_1,uint param_2,uint param_3)
{
(&DAT_8f68c000)[param_2 >> 0x14] = param_3 | 2 | param_1 & 0xfff00000;
FUN_8f625c6c();
return;
}
void FUN_8f62625c(undefined4 param_1,undefined4 param_2,char *param_3)
{
int *piVar1;
uint uVar2;
undefined4 uVar3;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
uint uVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f625c38();
uVar5 = FUN_8f625c40(uVar2 & 0xcffffffe);
uVar5 = FUN_8f602dc8((int)uVar5,(int)((ulonglong)uVar5 >> 0x20));
if ((int)uVar5 != 0) {
uVar2 = 0;
do {
param_3 = (char *)(uVar2 & 0xfff);
uVar4 = uVar2 + 1;
(&DAT_8f68c000)[(int)param_3] = uVar2 << 0x14 | 0xc02;
uVar3 = FUN_8f625c6c();
uVar5 = CONCAT44(extraout_r1,uVar3);
uVar2 = uVar4;
} while (uVar4 != 0x1000);
}
FUN_8f602e00((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),param_3);
FUN_8f625c5c(&DAT_8f68c000);
FUN_8f625c64(1);
uVar2 = FUN_8f625c38();
if (piVar1 == DAT_8f69d118) {
FUN_8f625c40(uVar2 | 1);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,extraout_r1_00,piVar1);
}
void FUN_8f6262fc(void)
{
int *piVar1;
uint uVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
DataSynchronizationBarrier(0xf);
uVar2 = FUN_8f625c38();
uVar3 = FUN_8f625c40(uVar2 & 0xfffffffe);
if (piVar1 == DAT_8f69d118) {
FUN_8f625c6c();
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,(int)((ulonglong)uVar3 >> 0x20),piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f62637c)
void FUN_8f62634c(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6263b4)
void FUN_8f626380(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6263ec)
void FUN_8f6263b8(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626424)
void FUN_8f6263f0(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f62645c)
void FUN_8f626428(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626494)
void FUN_8f626460(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6264cc)
void FUN_8f626498(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626504)
void FUN_8f6264d0(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626538)
void FUN_8f626508(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f62656c)
void FUN_8f62653c(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6265a4)
void FUN_8f626570(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6265dc)
void FUN_8f6265a8(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626614)
void FUN_8f6265e0(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f62664c)
void FUN_8f626618(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626688)
void FUN_8f626650(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f62668c(void)
{
int *piVar1;
undefined4 uVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
uVar3 = FUN_8f611778();
switch((int)uVar3) {
case 0x125:
case 0x126:
case 0x127:
case 0x12f:
case 0x130:
case 0x133:
case 0x134:
case 0x135:
case 0x139:
case 0x140:
case 0x152:
case 0x15f:
uVar2 = 0x1bc;
break;
default:
uVar2 = 0x1b8;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,(int)((ulonglong)uVar3 >> 0x20),piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f626804)
void FUN_8f6267d0(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f626808(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
uint uVar2;
undefined4 extraout_r1;
undefined4 uVar3;
int *piVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
piVar4 = DAT_8f69d118;
uVar5 = FUN_8f600fc0(param_1,param_2);
uVar2 = (int)uVar5 - 1;
if (uVar2 < 0x13) {
param_3 = 1;
uVar2 = 1 << (uVar2 & 0xff);
if ((uVar2 & 0x50200) != 0) {
uVar5 = FUN_8f632efc(0x21208);
uVar3 = (undefined4)((ulonglong)uVar5 >> 0x20);
uVar2 = (uint)((int)uVar5 << 0x11) >> 0x18;
goto LAB_8f62686c;
}
piVar4 = (int *)(uVar2 & 0x1401);
if (piVar4 != (int *)0x0) {
uVar5 = FUN_8f632efc(0x1208);
uVar3 = (undefined4)((ulonglong)uVar5 >> 0x20);
uVar2 = (uint)((int)uVar5 << 0x11) >> 0x18;
goto LAB_8f62686c;
}
}
dprintf((byte *)s_ERROR__Couldn_t_get_the_pmic_typ_8f662194,(int *)((ulonglong)uVar5 >> 0x20),
param_3,piVar4);
uVar2 = 0;
uVar3 = extraout_r1;
LAB_8f62686c:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,uVar3,piVar1);
}
void FUN_8f6268ac(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
uint uVar2;
uint uVar3;
int *piVar4;
undefined8 uVar5;
ulonglong uVar6;
uint local_10;
int *local_c;
local_10 = 0;
local_c = DAT_8f69d118;
piVar4 = DAT_8f69d118;
uVar5 = FUN_8f600fc0(param_1,param_2);
piVar1 = (int *)((ulonglong)uVar5 >> 0x20);
uVar2 = (int)uVar5 - 1;
if (uVar2 < 0x13) {
uVar2 = 1 << (uVar2 & 0xff);
uVar3 = uVar2 & 0x50200;
if (uVar3 != 0) {
uVar6 = FUN_8f634238(1,&local_10);
if ((int)uVar6 == 0) {
uVar6 = uVar6 & 0xffffffff00000000 | (ulonglong)(local_10 * 1000);
}
else {
dprintf((byte *)s_ERROR__Get_battery_voltage_faile_8f6621b8,(int *)(uVar6 >> 0x20),uVar2,
uVar3);
uVar6 = CONCAT44(extraout_r1_00,local_10);
}
goto LAB_8f626918;
}
piVar4 = (int *)(uVar2 & 0x1401);
if (piVar4 != (int *)0x0) {
uVar6 = FUN_8f633838(1,piVar1,uVar2);
goto LAB_8f626918;
}
}
dprintf((byte *)s_ERROR__Couldn_t_get_the_pmic_typ_8f662194,piVar1,uVar2,piVar4);
uVar6 = CONCAT44(extraout_r1,local_10);
LAB_8f626918:
if (local_c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar6,(int)(uVar6 >> 0x20),local_c);
}
void FUN_8f626970(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
undefined4 uVar2;
undefined4 uVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
uVar4 = FUN_8f626808(param_1,param_2,param_3);
uVar3 = (undefined4)((ulonglong)uVar4 >> 0x20);
if ((int)uVar4 == 0) {
uVar2 = 1;
}
else {
uVar4 = FUN_8f6268ac((int)uVar4,uVar3);
uVar3 = (undefined4)((ulonglong)uVar4 >> 0x20);
if ((uint)uVar4 < 3200000) {
uVar2 = 0;
}
else {
uVar2 = 1;
}
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,uVar3,piVar1);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f626a00)
void FUN_8f6269cc(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626a38)
void FUN_8f626a04(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626a70)
void FUN_8f626a3c(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626aa8)
void FUN_8f626a74(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626b18)
void FUN_8f626ae4(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626b88)
void FUN_8f626b54(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626bbc)
void FUN_8f626b8c(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626c2c)
void FUN_8f626bf8(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626c64)
void FUN_8f626c30(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626c9c)
void FUN_8f626c68(undefined4 param_1,undefined4 param_2)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626cd4)
void FUN_8f626ca0(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f626de0(void)
{
int *piVar1;
int iVar2;
int *piVar3;
undefined4 uVar4;
int *in_lr;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
FUN_8f626f38((undefined4 *)&DAT_8f690000,0,0);
piVar3 = (int *)0x0;
uVar4 = 0x1e;
uVar5 = FUN_8f627744(&DAT_8f6621e0,(uint)&LAB_8f626d10,0,0x1e,0x2000);
iVar2 = (int)uVar5;
if (iVar2 == 0) {
uVar5 = FUN_8f6353a0(in_lr,(byte *)s_failed_to_create_dpc_thread_8f6621e4,piVar3,uVar4);
}
uVar4 = (undefined4)((ulonglong)uVar5 >> 0x20);
if (piVar1 == DAT_8f69d118) {
FUN_8f6279f4(iVar2,uVar4);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,uVar4,piVar1);
}
void FUN_8f626e74(undefined4 param_1,undefined4 param_2,uint param_3)
{
undefined *puVar1;
int *piVar2;
undefined4 *puVar3;
undefined4 *puVar4;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 uVar5;
bool bVar6;
piVar2 = DAT_8f69d118;
puVar4 = (undefined4 *)FUN_8f63666c(0x10,param_2);
DAT_8f67f324 = DAT_8f67f324 + 1;
bVar6 = DAT_8f67f324 == 1;
puVar4[2] = param_1;
puVar4[3] = param_2;
if (bVar6) {
FUN_8f625b9c();
}
puVar4[1] = &PTR_LOOP_8f67f31c;
puVar1 = PTR_LOOP_8f67f31c;
puVar3 = puVar4;
*puVar4 = PTR_LOOP_8f67f31c;
PTR_LOOP_8f67f31c = (undefined *)puVar3;
*(undefined4 **)(puVar1 + 4) = puVar4;
FUN_8f627070((int)&DAT_8f690000,(int *)(param_3 & 1 ^ 1));
DAT_8f67f324 = DAT_8f67f324 + -1;
uVar5 = extraout_r1;
if (DAT_8f67f324 == 0) {
FUN_8f625b8c();
uVar5 = extraout_r1_00;
}
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,uVar5,piVar2);
}
void FUN_8f626f38(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
int *piVar2;
int *piVar3;
piVar1 = DAT_8f69d118;
param_1[1] = param_2;
param_1[2] = param_3;
piVar3 = DAT_8f69d118;
*param_1 = 0x65766e74;
piVar2 = DAT_8f69d118;
if (piVar1 != piVar3) {
// WARNING: Subroutine does not return
FUN_8f635428(param_1,param_2,piVar1);
}
piVar3 = param_1 + 4;
param_1[3] = 0x77616974;
piVar1 = DAT_8f69d118;
param_1[5] = piVar3;
param_1[4] = piVar3;
param_1[6] = 0;
if (piVar2 == piVar1) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1 + 3,piVar2,piVar3);
}
void FUN_8f626f84(int param_1,int param_2)
{
int *piVar1;
int extraout_r1;
uint uVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
}
if (*(int *)(param_1 + 4) == 0) {
uVar3 = FUN_8f627f60(param_1 + 0xc,param_2);
param_2 = (int)((ulonglong)uVar3 >> 0x20);
uVar2 = (uint)uVar3;
}
else {
uVar2 = *(uint *)(param_1 + 8) & 1;
if (uVar2 != 0) {
uVar2 = 0;
*(undefined4 *)(param_1 + 4) = 0;
}
}
DAT_8f67f324 = DAT_8f67f324 + -1;
if (DAT_8f67f324 == 0) {
FUN_8f625b8c();
param_2 = extraout_r1;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,param_2,piVar1);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f62706c)
void FUN_8f627034(int param_1,undefined4 param_2)
{
FUN_8f626f84(param_1,-1);
return;
}
void FUN_8f627070(int param_1,int *param_2)
{
int *piVar1;
int *extraout_r1;
int *extraout_r1_00;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
}
if (*(int *)(param_1 + 4) == 0) {
if ((*(uint *)(param_1 + 8) & 1) == 0) {
*(undefined4 *)(param_1 + 4) = 1;
FUN_8f628190(param_1 + 0xc,param_2,0);
param_2 = extraout_r1_00;
}
else {
uVar2 = FUN_8f628034(param_1 + 0xc,param_2,0);
param_2 = (int *)((ulonglong)uVar2 >> 0x20);
if ((int)uVar2 < 1) {
*(undefined4 *)(param_1 + 4) = 1;
}
}
}
DAT_8f67f324 = DAT_8f67f324 + -1;
if (DAT_8f67f324 == 0) {
FUN_8f625b8c();
param_2 = extraout_r1;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(0,param_2,piVar1);
}
return;
}
void FUN_8f627134(int param_1,undefined4 param_2)
{
int *piVar1;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
bool bVar2;
piVar1 = DAT_8f69d118;
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
param_2 = extraout_r1_00;
}
DAT_8f67f324 = DAT_8f67f324 + -1;
bVar2 = DAT_8f67f324 == 0;
*(undefined4 *)(param_1 + 4) = 0;
if (bVar2) {
FUN_8f625b8c();
param_2 = extraout_r1;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,param_2,piVar1);
}
void FUN_8f6271b8(undefined4 param_1,undefined4 param_2,undefined4 *param_3)
{
int *piVar1;
undefined4 extraout_r1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f625870(param_1,param_2);
FUN_8f602ce0((int)uVar2,(int)((ulonglong)uVar2 >> 0x20));
uVar2 = FUN_8f600d30();
FUN_8f62896c((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),param_3);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,extraout_r1,piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f62724c)
void FUN_8f627200(undefined4 param_1,undefined4 param_2,char *param_3)
{
undefined4 uVar1;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
int *piVar2;
undefined4 uVar3;
int *in_lr;
undefined8 uVar4;
uVar4 = FUN_8f627da8();
FUN_8f6257e0((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),param_3);
uVar4 = FUN_8f602c98();
FUN_8f60017c((int)uVar4,(int)((ulonglong)uVar4 >> 0x20));
FUN_8f607f64((int *)0x0,extraout_r1);
uVar4 = FUN_8f6359a4();
uVar4 = FUN_8f615bd4((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),param_3);
DAT_8f69d118 = (undefined4)uVar4;
FUN_8f627e80(DAT_8f69d118,(int)((ulonglong)uVar4 >> 0x20));
uVar1 = FUN_8f626de0();
FUN_8f6288d0(uVar1);
piVar2 = (int *)0x0;
uVar3 = 0x10;
uVar4 = FUN_8f627744((byte *)s_bootstrap2_8f662204,(uint)FUN_8f6271b8,0,0x10,0x2000);
uVar1 = (undefined4)((ulonglong)uVar4 >> 0x20);
if ((int)uVar4 == 0) {
FUN_8f6353a0(in_lr,(byte *)s_failed_to_create_thread_bootstra_8f662210,piVar2,uVar3);
uVar1 = extraout_r1_00;
}
FUN_8f6279f4((int)uVar4,uVar1);
DAT_8f67f324 = DAT_8f67f324 + -1;
if (DAT_8f67f324 == 0) goto LAB_8f6272c8;
do {
FUN_8f627eb4();
LAB_8f6272c8:
FUN_8f625b8c();
} while( true );
}
void FUN_8f6272e4(undefined4 *param_1)
{
int iVar1;
int iVar2;
int iVar3;
int *piVar4;
iVar1 = DAT_8f69d118;
*param_1 = 0x6d757478;
param_1[1] = 0;
iVar2 = DAT_8f69d118;
param_1[2] = 0;
iVar3 = DAT_8f69d118;
if (iVar1 != iVar2) {
// WARNING: Subroutine does not return
FUN_8f635428(param_1,iVar1,(int *)0x0);
}
piVar4 = param_1 + 4;
param_1[3] = 0x77616974;
iVar1 = DAT_8f69d118;
param_1[5] = piVar4;
param_1[4] = piVar4;
param_1[6] = 0;
if (iVar3 == iVar1) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1 + 3,iVar3,piVar4);
}
void FUN_8f627334(int param_1)
{
int *piVar1;
int *piVar2;
undefined4 extraout_r1;
undefined4 uVar3;
int *extraout_r1_00;
int *extraout_r1_01;
int *piVar4;
int iVar5;
int iVar6;
undefined4 unaff_r8;
int *in_lr;
undefined8 uVar7;
piVar1 = DAT_8f69d118;
piVar4 = *(int **)(param_1 + 8);
piVar2 = DAT_8f69dc24;
if (piVar4 == DAT_8f69dc24) {
FUN_8f6353a0(in_lr,(byte *)s_mutex_acquire__thread__p___s__tr_8f662234,piVar4,piVar4 + 0x11);
piVar2 = extraout_r1_01;
}
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
piVar2 = extraout_r1_00;
}
iVar5 = *(int *)(param_1 + 4);
iVar6 = iVar5 + 1;
*(int *)(param_1 + 4) = iVar6;
if (iVar6 < 2) {
unaff_r8 = 0;
}
uVar7 = CONCAT44(piVar2,unaff_r8);
if ((iVar6 == 1 || iVar5 < 0 != SBORROW4(iVar6,1)) ||
(uVar7 = FUN_8f627f60(param_1 + 0xc,-1), -1 < (int)uVar7)) {
*(int **)(param_1 + 8) = DAT_8f69dc24;
}
uVar3 = (undefined4)((ulonglong)uVar7 >> 0x20);
DAT_8f67f324 = DAT_8f67f324 + -1;
if (DAT_8f67f324 == 0) {
FUN_8f625b8c();
uVar3 = extraout_r1;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar7,uVar3,piVar1);
}
return;
}
void FUN_8f627418(int param_1)
{
int *piVar1;
int *piVar2;
int *extraout_r1;
int *extraout_r1_00;
int *extraout_r1_01;
int *extraout_r1_02;
int iVar3;
int *in_lr;
piVar1 = DAT_8f69d118;
piVar2 = *(int **)(param_1 + 8);
if (piVar2 != DAT_8f69dc24) {
FUN_8f6353a0(in_lr,(byte *)s_mutex_release__thread__p___s__tr_8f6622d4,DAT_8f69dc24,
DAT_8f69dc24 + 0x11);
piVar2 = extraout_r1;
}
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
piVar2 = extraout_r1_01;
}
*(undefined4 *)(param_1 + 8) = 0;
iVar3 = *(int *)(param_1 + 4) + -1;
*(int *)(param_1 + 4) = iVar3;
if (0 < iVar3) {
FUN_8f628034(param_1 + 0xc,(undefined4 *)0x1,0);
piVar2 = extraout_r1_02;
}
DAT_8f67f324 = DAT_8f67f324 + -1;
if (DAT_8f67f324 == 0) {
FUN_8f625b8c();
piVar2 = extraout_r1_00;
}
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,piVar2,piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f62757c)
void FUN_8f627500(undefined4 param_1,undefined4 param_2,int *param_3)
{
uint uVar1;
int **ppiVar2;
uVar1 = param_3[5];
param_3[4] = (&DAT_8f690024)[uVar1 * 2];
ppiVar2 = (int **)(&DAT_8f690024)[uVar1 * 2];
param_3[3] = (int)(&DAT_8f690020 + uVar1 * 2);
*(undefined *)(param_3 + 6) = 1;
DAT_8f69001c = DAT_8f69001c | 1 << (uVar1 & 0xff);
*ppiVar2 = param_3 + 3;
(&DAT_8f690024)[uVar1 * 2] = param_3 + 3;
return;
}
void FUN_8f627580(int param_1)
{
int *piVar1;
int iVar2;
undefined4 *puVar3;
undefined4 *extraout_r1;
bool bVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
}
DAT_8f67f324 = DAT_8f67f324 + -1;
puVar3 = *(undefined4 **)(param_1 + 8);
bVar4 = DAT_8f67f324 == 0;
*puVar3 = *(undefined4 *)(param_1 + 4);
*(undefined4 **)(*(int *)(param_1 + 4) + 4) = puVar3;
*(undefined4 *)(param_1 + 8) = 0;
*(undefined4 *)(param_1 + 4) = 0;
if (bVar4) {
FUN_8f625b8c();
puVar3 = extraout_r1;
}
iVar2 = *(int *)(param_1 + 0x30);
uVar5 = CONCAT44(puVar3,iVar2);
if (iVar2 != 0) {
uVar5 = FUN_8f636758(iVar2);
}
if (piVar1 == DAT_8f69d118) {
FUN_8f636758(param_1);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f626204)
void FUN_8f627630(void)
{
uint uVar1;
int *piVar2;
int *piVar3;
int *piVar4;
int *piVar5;
int *piVar6;
int *piVar7;
int iVar8;
uint uVar9;
bool bVar10;
undefined local_2c [8];
int *local_24;
piVar2 = DAT_8f69dc24;
piVar3 = DAT_8f69d118;
uVar1 = DAT_8f69001c;
piVar4 = (int *)&DAT_8f69d118;
iVar8 = count_leading_zeroes(DAT_8f69001c);
uVar9 = 0x1f - iVar8;
local_24 = DAT_8f69d118;
piVar5 = (int *)(&DAT_8f690024)[uVar9 * 2];
if (&DAT_8f690020 + uVar9 * 2 == piVar5) {
piVar7 = (int *)0x0;
}
else {
piVar7 = (int *)piVar5[1];
*piVar7 = *piVar5;
*(int **)(*piVar5 + 4) = piVar7;
piVar5[1] = 0;
piVar6 = (int *)(&DAT_8f690024)[uVar9 * 2];
piVar7 = piVar5 + -3;
*piVar5 = 0;
if (&DAT_8f690020 + uVar9 * 2 != piVar6) {
*(undefined *)(piVar5 + 3) = 2;
piVar5 = DAT_8f69d118;
goto joined_r0x8f627724;
}
}
DAT_8f69001c = uVar1 & ~(1 << (uVar9 & 0xff));
*(undefined *)(piVar7 + 6) = 2;
piVar5 = DAT_8f69d118;
joined_r0x8f627724:
DAT_8f69d118 = piVar5;
if (piVar7 == piVar2) {
if (piVar3 == piVar5) {
return;
}
}
else {
DAT_8f69dc24 = piVar7;
if (piVar7[8] < 1) {
piVar7[8] = 5;
}
bVar10 = piVar3 == piVar5;
piVar2[7] = (int)DAT_8f67f324;
piVar4 = (int *)piVar7[7];
piVar3 = piVar7;
DAT_8f67f324 = piVar4;
if (bVar10) {
piVar2[0xb] = (int)local_2c;
ClearExclusiveLocal();
return;
}
}
// WARNING: Subroutine does not return
FUN_8f635428(piVar2,piVar3,piVar4);
}
void FUN_8f627744(byte *param_1,uint param_2,uint param_3,uint param_4,uint param_5)
{
ulonglong uVar1;
int *piVar2;
uint *puVar3;
uint uVar4;
undefined4 extraout_r1;
uint extraout_r1_00;
uint extraout_r1_01;
uint **ppuVar5;
ulonglong uVar6;
piVar2 = DAT_8f69d118;
uVar6 = FUN_8f63666c(100,param_2);
puVar3 = (uint *)uVar6;
uVar1 = uVar6;
if (puVar3 != (uint *)0x0) {
FUN_8f636968(puVar3,0,100);
*puVar3 = 0x74687264;
FUN_8f636d18((int)(puVar3 + 0x11),param_1,0x20);
puVar3[5] = param_4;
puVar3[0xe] = param_2;
puVar3[0xf] = param_3;
puVar3[7] = 1;
*(undefined *)(puVar3 + 6) = 0;
puVar3[9] = 0;
puVar3[10] = 0;
uVar4 = FUN_8f63666c(param_5,extraout_r1);
puVar3[0xc] = uVar4;
if (uVar4 == 0) {
FUN_8f636758((int)puVar3);
uVar1 = (ulonglong)extraout_r1_01 << 0x20;
}
else {
puVar3[0xd] = param_5;
FUN_8f62615c((int)puVar3);
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
}
DAT_8f67f324 = DAT_8f67f324 - 1;
uVar1 = uVar6 & 0xffffffff | (ulonglong)DAT_8f67f324 << 0x20;
ppuVar5 = (uint **)(puVar3 + 1);
puVar3[1] = (uint)&DAT_8f690120;
puVar3[2] = (uint)DAT_8f690124;
*DAT_8f690124 = (uint *)ppuVar5;
DAT_8f690124 = ppuVar5;
if (DAT_8f67f324 == 0) {
FUN_8f625b8c();
uVar1 = uVar6 & 0xffffffff | (ulonglong)extraout_r1_00 << 0x20;
}
}
}
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar1,(int)(uVar1 >> 0x20),piVar2);
}
void FUN_8f62788c(undefined4 param_1)
{
int *piVar1;
int iVar2;
int *in_lr;
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
}
iVar2 = DAT_8f69dc24;
piVar1 = (int *)0x1;
*(undefined4 *)(DAT_8f69dc24 + 0x40) = param_1;
*(undefined *)(iVar2 + 0x18) = 5;
FUN_8f626e74(FUN_8f627580,iVar2,1);
FUN_8f627630();
FUN_8f6353a0(in_lr,(byte *)s_somehow_fell_through_thread_exit_8f662330,piVar1,iVar2);
do {
// WARNING: Do nothing block with infinite loop
} while( true );
}
void FUN_8f627914(void)
{
int *piVar1;
int iVar2;
uint uVar3;
undefined4 uVar4;
int iVar5;
undefined8 uVar6;
piVar1 = DAT_8f69d118;
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
}
iVar2 = DAT_8f69dc24;
iVar5 = DAT_8f69dc24 + 0xc;
uVar3 = *(uint *)(DAT_8f69dc24 + 0x14);
*(undefined4 *)(DAT_8f69dc24 + 0x20) = 0;
uVar4 = (&DAT_8f690020)[uVar3 * 2];
*(undefined *)(iVar2 + 0x18) = 1;
DAT_8f69001c = DAT_8f69001c | 1 << (uVar3 & 0xff);
*(undefined4 **)(iVar2 + 0x10) = &DAT_8f690020 + uVar3 * 2;
*(undefined4 *)(iVar2 + 0xc) = uVar4;
*(int *)((&DAT_8f690020)[uVar3 * 2] + 4) = iVar5;
(&DAT_8f690020)[uVar3 * 2] = iVar5;
uVar6 = FUN_8f627630();
DAT_8f67f324 = DAT_8f67f324 + -1;
if (DAT_8f67f324 == 0) {
if (piVar1 == DAT_8f69d118) {
FUN_8f625b8c();
return;
}
}
else if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar6,(int)((ulonglong)uVar6 >> 0x20),piVar1);
}
void FUN_8f6279f4(int param_1,undefined4 param_2)
{
int *piVar1;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 uVar2;
int iVar3;
uint uVar4;
piVar1 = DAT_8f69d118;
if ((byte)(*(char *)(param_1 + 0x18) - 1U) < 2) {
iVar3 = -10;
}
else {
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
}
uVar4 = *(uint *)(param_1 + 0x14);
*(undefined *)(param_1 + 0x18) = 1;
uVar2 = (&DAT_8f690024)[uVar4 * 2];
DAT_8f69001c = DAT_8f69001c | 1 << (uVar4 & 0xff);
*(undefined4 **)(param_1 + 0xc) = &DAT_8f690020 + uVar4 * 2;
*(undefined4 *)(param_1 + 0x10) = uVar2;
*(int *)(&DAT_8f690024)[uVar4 * 2] = param_1 + 0xc;
(&DAT_8f690024)[uVar4 * 2] = param_1 + 0xc;
FUN_8f627914();
iVar3 = DAT_8f67f324 + -1;
DAT_8f67f324 = iVar3;
if (iVar3 == 0) {
FUN_8f625b8c();
param_2 = extraout_r1_00;
}
else {
iVar3 = 0;
param_2 = extraout_r1;
}
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar3,param_2,piVar1);
}
return;
}
void FUN_8f627adc(void)
{
int *piVar1;
int *piVar2;
int iVar3;
undefined4 uVar4;
uint uVar5;
undefined8 uVar6;
piVar2 = DAT_8f69d118;
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
}
iVar3 = DAT_8f69dc24;
piVar1 = (int *)(DAT_8f69dc24 + 0x20);
*(undefined *)(DAT_8f69dc24 + 0x18) = 1;
if (*piVar1 < 1) {
uVar5 = *(uint *)(iVar3 + 0x14);
uVar4 = (&DAT_8f690020)[uVar5 * 2];
*(undefined4 **)(iVar3 + 0x10) = &DAT_8f690020 + uVar5 * 2;
*(undefined4 *)(iVar3 + 0xc) = uVar4;
DAT_8f69001c = DAT_8f69001c | 1 << (uVar5 & 0xff);
*(int *)((&DAT_8f690020)[uVar5 * 2] + 4) = iVar3 + 0xc;
(&DAT_8f690020)[uVar5 * 2] = iVar3 + 0xc;
}
else {
uVar5 = *(uint *)(iVar3 + 0x14);
uVar4 = (&DAT_8f690024)[uVar5 * 2];
*(undefined4 **)(iVar3 + 0xc) = &DAT_8f690020 + uVar5 * 2;
DAT_8f69001c = DAT_8f69001c | 1 << (uVar5 & 0xff);
*(undefined4 *)(iVar3 + 0x10) = uVar4;
*(int *)(&DAT_8f690024)[uVar5 * 2] = iVar3 + 0xc;
(&DAT_8f690024)[uVar5 * 2] = iVar3 + 0xc;
}
uVar6 = FUN_8f627630();
DAT_8f67f324 = DAT_8f67f324 + -1;
if (DAT_8f67f324 == 0) {
if (piVar2 == DAT_8f69d118) {
FUN_8f625b8c();
return;
}
}
else if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar6,(int)((ulonglong)uVar6 >> 0x20),piVar2);
}
void FUN_8f627c04(void)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
}
uVar2 = FUN_8f627630();
DAT_8f67f324 = DAT_8f67f324 + -1;
if (DAT_8f67f324 == 0) {
if (piVar1 == DAT_8f69d118) {
FUN_8f625b8c();
return;
}
}
else if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
void FUN_8f627c88(void)
{
int *piVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
iVar2 = DAT_8f69dc24;
piVar1 = DAT_8f69d118;
if (DAT_8f69dc24 == DAT_8f69dc20) {
uVar4 = 0;
}
else {
iVar3 = *(int *)(DAT_8f69dc24 + 0x20) + -1;
*(int *)(DAT_8f69dc24 + 0x20) = iVar3;
if (iVar3 < 1) {
uVar4 = 1;
}
else {
uVar4 = 0;
}
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar4,iVar2,piVar1);
}
return;
}
void FUN_8f627cfc(int param_1)
{
int iVar1;
undefined4 extraout_r1;
undefined8 uVar2;
int aiStack_38 [7];
int *local_1c;
local_1c = DAT_8f69d118;
FUN_8f628760(aiStack_38);
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
}
FUN_8f6287bc(aiStack_38,param_1,(int)FUN_8f627500,DAT_8f69dc24);
*(undefined *)(DAT_8f69dc24 + 0x18) = 4;
uVar2 = FUN_8f627630();
DAT_8f67f324 = DAT_8f67f324 + -1;
if (DAT_8f67f324 == 0) {
iVar1 = FUN_8f625b8c();
uVar2 = CONCAT44(extraout_r1,iVar1);
}
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),local_1c);
}
void FUN_8f627da8(void)
{
int iVar1;
undefined4 *puVar2;
bool bVar3;
iVar1 = DAT_8f69d118;
puVar2 = &DAT_8f690020;
do {
puVar2[1] = puVar2;
*puVar2 = puVar2;
puVar2 = puVar2 + 2;
} while ((undefined4 **)puVar2 != &DAT_8f690120);
DAT_8f690124 = &DAT_8f690120;
DAT_8f690120 = &DAT_8f690120;
FUN_8f636968(&DAT_8f690128,0,100);
DAT_8f690128 = 0x74687264;
FUN_8f636d18((int)&DAT_8f69016c,(byte *)s_bootstrap_8f662354,0x20);
puVar2 = DAT_8f690124;
bVar3 = iVar1 == DAT_8f69d118;
DAT_8f69012c = &DAT_8f690120;
DAT_8f69013c = 0x1f;
DAT_8f690140 = 2;
DAT_8f690144 = 1;
DAT_8f690130 = DAT_8f690124;
*DAT_8f690124 = &DAT_8f69012c;
DAT_8f690124 = &DAT_8f69012c;
DAT_8f69dc24 = &DAT_8f690128;
if (bVar3) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(1,puVar2,(int *)&DAT_8f69dc24);
}
// WARNING: Removing unreachable block (ram,0x8f627eb0)
void FUN_8f627e80(undefined4 param_1,undefined4 param_2)
{
return;
}
void FUN_8f627eb4(void)
{
FUN_8f636d18(DAT_8f69dc24 + 0x44,&DAT_8f662360,0x20);
DAT_8f69dc20 = DAT_8f69dc24;
*(undefined4 *)(DAT_8f69dc24 + 0x14) = 0;
do {
FUN_8f625c30();
} while( true );
}
void FUN_8f627f60(int param_1,int param_2)
{
int iVar1;
undefined4 uVar2;
int extraout_r1;
int extraout_r1_00;
int iVar3;
int iVar4;
int iVar5;
int aiStack_38 [7];
int *local_1c;
iVar1 = DAT_8f69dc24;
local_1c = DAT_8f69d118;
if (param_2 == 0) {
uVar2 = 0xfffffff3;
}
else {
iVar3 = *(int *)(param_1 + 0xc);
iVar5 = DAT_8f69dc24 + 0xc;
*(undefined4 *)(DAT_8f69dc24 + 0xc) = *(undefined4 *)(param_1 + 4);
iVar4 = *(int *)(param_1 + 4);
*(undefined4 **)(iVar1 + 0x10) = (undefined4 *)(param_1 + 4);
*(int *)(iVar4 + 4) = iVar5;
*(int *)(param_1 + 4) = iVar5;
*(int *)(param_1 + 0xc) = iVar3 + 1;
*(int *)(iVar1 + 0x24) = param_1;
*(undefined *)(iVar1 + 0x18) = 3;
*(undefined4 *)(iVar1 + 0x28) = 0;
if (param_2 == -1) {
FUN_8f627c04();
param_2 = extraout_r1_00;
}
else {
FUN_8f628760(aiStack_38);
FUN_8f6287bc(aiStack_38,param_2,(int)FUN_8f628488,DAT_8f69dc24);
FUN_8f627c04();
FUN_8f628808((int)aiStack_38);
param_2 = extraout_r1;
}
uVar2 = *(undefined4 *)(DAT_8f69dc24 + 0x28);
}
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,param_2,local_1c);
}
void FUN_8f628034(int param_1,undefined4 *param_2,int param_3)
{
int *piVar1;
undefined4 *extraout_r1;
int *piVar2;
undefined4 uVar3;
uint uVar4;
int iVar5;
int iVar6;
uint uVar7;
undefined4 uVar8;
int *piVar9;
piVar1 = DAT_8f69d118;
piVar9 = *(int **)(param_1 + 8);
if (piVar9 != (int *)(param_1 + 4)) {
piVar2 = (int *)piVar9[1];
*piVar2 = *piVar9;
*(int **)(*piVar9 + 4) = piVar2;
piVar9[1] = 0;
*piVar9 = 0;
if (piVar9 != (int *)0xc) {
uVar3 = 1;
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + -1;
piVar9[7] = param_3;
piVar9[6] = 0;
*(undefined *)(piVar9 + 3) = 1;
iVar6 = DAT_8f69dc24;
if (param_2 == (undefined4 *)0x0) {
uVar4 = piVar9[2];
param_2 = &DAT_8f69001c;
uVar3 = 1;
iVar6 = (&DAT_8f690024)[uVar4 * 2];
*piVar9 = (int)(&DAT_8f690020 + uVar4 * 2);
DAT_8f69001c = DAT_8f69001c | 1 << (uVar4 & 0xff);
piVar9[1] = iVar6;
*(int **)(&DAT_8f690024)[uVar4 * 2] = piVar9;
(&DAT_8f690024)[uVar4 * 2] = piVar9;
}
else {
uVar4 = piVar9[2];
uVar7 = *(uint *)(DAT_8f69dc24 + 0x14);
iVar5 = DAT_8f69dc24 + 0xc;
*(undefined *)(DAT_8f69dc24 + 0x18) = 1;
DAT_8f69001c = DAT_8f69001c | 1 << (uVar7 & 0xff) | 1 << (uVar4 & 0xff);
uVar8 = (&DAT_8f690024)[uVar7 * 2];
*(undefined4 **)(iVar6 + 0xc) = &DAT_8f690020 + uVar7 * 2;
*(undefined4 *)(iVar6 + 0x10) = uVar8;
*(int *)(&DAT_8f690024)[uVar7 * 2] = iVar5;
(&DAT_8f690024)[uVar7 * 2] = iVar5;
iVar6 = (&DAT_8f690024)[uVar4 * 2];
*piVar9 = (int)(&DAT_8f690020 + uVar4 * 2);
piVar9[1] = iVar6;
*(int **)(&DAT_8f690024)[uVar4 * 2] = piVar9;
(&DAT_8f690024)[uVar4 * 2] = piVar9;
FUN_8f627630();
param_2 = extraout_r1;
}
goto LAB_8f6280ec;
}
}
uVar3 = 0;
LAB_8f6280ec:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(uVar3,param_2,piVar1);
}
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f628190(int param_1,int *param_2,int param_3)
{
int *piVar1;
undefined4 uVar2;
int *piVar3;
int iVar4;
int *extraout_r1;
uint uVar5;
int *piVar6;
int iVar7;
int *piVar8;
iVar4 = DAT_8f69dc24;
piVar1 = DAT_8f69d118;
if ((param_2 != (int *)0x0) && (0 < *(int *)(param_1 + 0xc))) {
iVar7 = DAT_8f69dc24 + 0xc;
uVar5 = *(uint *)(DAT_8f69dc24 + 0x14);
*(undefined *)(DAT_8f69dc24 + 0x18) = 1;
DAT_8f69001c = DAT_8f69001c | 1 << (uVar5 & 0xff);
uVar2 = (&DAT_8f690024)[uVar5 * 2];
*(undefined4 **)(iVar4 + 0xc) = &DAT_8f690020 + uVar5 * 2;
*(undefined4 *)(iVar4 + 0x10) = uVar2;
*(int *)(&DAT_8f690024)[uVar5 * 2] = iVar7;
(&DAT_8f690024)[uVar5 * 2] = iVar7;
}
piVar3 = *(int **)(param_1 + 8);
if ((int *)(param_1 + 4) != piVar3) {
piVar8 = (int *)piVar3[1];
piVar6 = (int *)0x0;
*piVar8 = *piVar3;
*(int **)(*piVar3 + 4) = piVar8;
piVar3[1] = 0;
piVar8 = piVar3 + -3;
*piVar3 = 0;
if (piVar8 != (int *)0x0) {
iVar4 = *(int *)(param_1 + 0xc);
do {
uVar5 = piVar8[5];
DAT_8f69001c = DAT_8f69001c | 1 << (uVar5 & 0xff);
*(undefined *)(piVar8 + 6) = 1;
piVar8[9] = 0;
piVar8[10] = param_3;
iVar7 = (&DAT_8f690024)[uVar5 * 2];
piVar8[3] = (int)(&DAT_8f690020 + uVar5 * 2);
piVar8[4] = iVar7;
iVar7 = (iVar4 + -1) - (int)piVar6;
piVar6 = (int *)((int)piVar6 + 1);
*(int **)(&DAT_8f690024)[uVar5 * 2] = piVar8 + 3;
(&DAT_8f690024)[uVar5 * 2] = piVar8 + 3;
piVar3 = *(int **)(param_1 + 8);
if (piVar3 == (int *)(param_1 + 4)) {
*(int *)(param_1 + 0xc) = iVar7;
goto LAB_8f628304;
}
piVar8 = (int *)piVar3[1];
*piVar8 = *piVar3;
*(int **)(*piVar3 + 4) = piVar8;
piVar3[1] = 0;
piVar8 = piVar3 + -3;
*piVar3 = 0;
} while (piVar8 != (int *)0x0);
*(int *)(param_1 + 0xc) = iVar7;
LAB_8f628304:
piVar8 = param_2;
if (param_2 != (int *)0x0) {
piVar8 = piVar6;
}
piVar3 = param_2;
if ((param_2 != (int *)0x0 && piVar6 != (int *)0x0) && -1 < (int)piVar8) {
FUN_8f627630();
piVar3 = extraout_r1;
}
goto LAB_8f628314;
}
}
piVar6 = (int *)0x0;
LAB_8f628314:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(piVar6,piVar3,piVar1);
}
void FUN_8f628358(int param_1,int param_2,undefined4 param_3)
{
int *piVar1;
int extraout_r1;
int extraout_r1_00;
int iVar2;
int *piVar3;
uint uVar4;
undefined4 *puVar5;
undefined4 uVar6;
int iVar7;
bool bVar8;
piVar1 = DAT_8f69d118;
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
}
if (*(char *)(param_1 + 0x18) == '\x03') {
puVar5 = *(undefined4 **)(param_1 + 0x10);
uVar4 = *(uint *)(param_1 + 0x14);
iVar2 = *(int *)(param_1 + 0x24);
*puVar5 = *(undefined4 *)(param_1 + 0xc);
iVar7 = *(int *)(iVar2 + 0xc);
bVar8 = param_2 != 0;
*(undefined4 **)(*(int *)(param_1 + 0xc) + 4) = puVar5;
*(undefined4 *)(param_1 + 0x10) = 0;
uVar6 = (&DAT_8f690024)[uVar4 * 2];
DAT_8f69001c = DAT_8f69001c | 1 << (uVar4 & 0xff);
*(int *)(iVar2 + 0xc) = iVar7 + -1;
param_2 = param_1 + 0xc;
*(undefined4 **)(param_1 + 0xc) = &DAT_8f690020 + uVar4 * 2;
*(undefined4 *)(param_1 + 0x10) = uVar6;
piVar3 = (int *)(&DAT_8f690024)[uVar4 * 2];
*(undefined4 *)(param_1 + 0x24) = 0;
*(undefined4 *)(param_1 + 0x28) = param_3;
*(undefined *)(param_1 + 0x18) = 1;
*piVar3 = param_2;
(&DAT_8f690024)[uVar4 * 2] = param_2;
if (bVar8) {
FUN_8f627630();
param_2 = extraout_r1_00;
}
iVar2 = DAT_8f67f324 + -1;
DAT_8f67f324 = iVar2;
if (iVar2 == 0) {
FUN_8f625b8c();
param_2 = extraout_r1;
}
else {
iVar2 = 0;
}
}
else {
iVar2 = -0xc;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,param_2,piVar1);
}
return;
}
void FUN_8f628488(undefined4 param_1,undefined4 param_2,int param_3)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
uVar2 = FUN_8f628358(param_3,0,0xfffffff3);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(~(uint)uVar2 >> 0x1f,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
void FUN_8f6284d4(int param_1)
{
int iVar1;
int *piVar2;
int iVar3;
int *piVar4;
undefined4 *puVar5;
undefined4 *puVar6;
undefined4 uVar7;
piVar2 = DAT_8f69d118;
iVar1 = DAT_8f69018c;
puVar6 = DAT_8f690190 + -1;
piVar4 = DAT_8f69d118;
if (DAT_8f690190 == &DAT_8f69018c) {
LAB_8f62853c:
*(int **)(param_1 + 8) = &DAT_8f69018c;
iVar3 = param_1 + 4;
*(int *)(param_1 + 4) = DAT_8f69018c;
DAT_8f69018c = iVar3;
*(int *)(iVar1 + 4) = param_1 + 4;
}
else {
piVar4 = (int *)(DAT_8f690190[2] - *(int *)(param_1 + 0xc));
puVar5 = DAT_8f690190;
while ((int)piVar4 < 1) {
puVar5 = (undefined4 *)puVar6[2];
puVar6 = puVar5 + -1;
if (puVar5 == &DAT_8f69018c) goto LAB_8f62853c;
piVar4 = (int *)(puVar5[2] - *(int *)(param_1 + 0xc));
}
uVar7 = puVar6[1];
piVar4 = (int *)(param_1 + 4);
*(undefined4 **)(param_1 + 8) = puVar5;
*(undefined4 *)(param_1 + 4) = uVar7;
*(int **)(puVar6[1] + 4) = piVar4;
puVar6[1] = piVar4;
}
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1,piVar4,piVar2);
}
void FUN_8f628590(int *param_1,int param_2,int param_3,int param_4,int param_5)
{
int *piVar1;
int iVar2;
int *in_lr;
bool bVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
iVar2 = param_4;
if ((param_1[1] != 0) || (iVar2 = param_1[2], iVar2 != 0)) {
FUN_8f6353a0(in_lr,(byte *)s_timer__p_already_in_list_8f662368,param_1,iVar2);
}
iVar2 = FUN_8f610438();
param_1[4] = param_3;
param_1[5] = param_4;
param_1[6] = param_5;
DAT_8f67f324 = DAT_8f67f324 + 1;
bVar3 = DAT_8f67f324 == 1;
param_1[3] = iVar2 + param_2;
if (bVar3) {
FUN_8f625b9c();
}
uVar4 = FUN_8f6284d4((int)param_1);
DAT_8f67f324 = DAT_8f67f324 + -1;
if (DAT_8f67f324 == 0) {
if (piVar1 == DAT_8f69d118) {
FUN_8f625b8c();
return;
}
}
else if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
void FUN_8f628674(undefined4 param_1,int param_2)
{
int *piVar1;
int *piVar2;
undefined4 extraout_r1;
int iVar3;
int iVar4;
code *pcVar5;
int *piVar6;
int *piVar7;
piVar2 = DAT_8f69d118;
while ((((piVar1 = DAT_8f690190, DAT_8f690190 != &DAT_8f69018c && (DAT_8f690190 != (int *)0x0)) &&
(piVar6 = DAT_8f690190 + -1, piVar6 != (int *)0x0)) && (-1 < param_2 - DAT_8f690190[2])))
{
piVar7 = (int *)DAT_8f690190[1];
iVar4 = DAT_8f690190[3];
pcVar5 = (code *)DAT_8f690190[4];
*piVar7 = *DAT_8f690190;
iVar3 = piVar1[5];
*(int **)(*piVar1 + 4) = piVar7;
piVar1[1] = 0;
*piVar1 = 0;
(*pcVar5)(piVar6,param_2,iVar3);
if (((iVar4 != 0) && (*piVar1 == 0)) && ((piVar1[1] == 0 && (piVar1[3] != 0)))) {
piVar1[2] = param_2 + piVar1[3];
FUN_8f6284d4((int)piVar6);
}
}
FUN_8f627c88();
if (piVar2 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(1,extraout_r1,piVar2);
}
void FUN_8f628760(undefined4 *param_1)
{
int *piVar1;
int *piVar2;
piVar1 = DAT_8f69d118;
*param_1 = 0x74696d72;
param_1[2] = 0;
piVar2 = DAT_8f69d118;
param_1[1] = 0;
param_1[3] = 0;
param_1[4] = 0;
param_1[5] = 0;
param_1[6] = 0;
if (piVar1 == piVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1,piVar1,piVar2);
}
void FUN_8f6287bc(int *param_1,int param_2,int param_3,int param_4)
{
int *piVar1;
undefined8 uVar2;
piVar1 = DAT_8f69d118;
if (param_2 == 0) {
param_2 = 1;
}
uVar2 = FUN_8f628590(param_1,param_2,0,param_3,param_4);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar2,(int)((ulonglong)uVar2 >> 0x20),piVar1);
}
void FUN_8f628808(int param_1)
{
int *piVar1;
int iVar2;
int *piVar3;
bool bVar4;
piVar1 = DAT_8f69d118;
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
}
iVar2 = *(int *)(param_1 + 4);
piVar3 = *(int **)(param_1 + 8);
if ((iVar2 != 0) || (piVar3 != (int *)0x0)) {
*piVar3 = iVar2;
iVar2 = 0;
*(int **)(*(int *)(param_1 + 4) + 4) = piVar3;
*(undefined4 *)(param_1 + 8) = 0;
*(undefined4 *)(param_1 + 4) = 0;
}
DAT_8f67f324 = DAT_8f67f324 + -1;
bVar4 = DAT_8f67f324 == 0;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 *)(param_1 + 0x14) = 0;
*(undefined4 *)(param_1 + 0x18) = 0;
if (bVar4) {
if (piVar1 == DAT_8f69d118) {
FUN_8f625b8c();
return;
}
}
else if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(param_1,iVar2,piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f628924)
void FUN_8f6288d0(undefined4 param_1)
{
int *piVar1;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 uVar2;
piVar1 = DAT_8f69d118;
DAT_8f690190 = &DAT_8f69018c;
DAT_8f69018c = &DAT_8f69018c;
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
FUN_8f625b9c();
}
FUN_8f610678(10,FUN_8f628674,0);
DAT_8f67f324 = DAT_8f67f324 + -1;
uVar2 = extraout_r1;
if (DAT_8f67f324 == 0) {
FUN_8f625b8c();
uVar2 = extraout_r1_00;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(0,uVar2,piVar1);
}
return;
}
void FUN_8f628928(int param_1)
{
int *piVar1;
undefined4 extraout_r1;
piVar1 = DAT_8f69d118;
(**(code **)(param_1 + 8))(param_1,0);
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(0,extraout_r1,piVar1);
}
void FUN_8f62896c(undefined4 param_1,undefined4 param_2,undefined4 *param_3)
{
int *piVar1;
undefined **ppuVar2;
undefined *puVar3;
undefined4 *puVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
uVar5 = CONCAT44(param_2,param_1);
ppuVar2 = &PTR_s_aboot_8f675088;
do {
if ((code *)ppuVar2[1] != (code *)0x0) {
uVar5 = (*(code *)ppuVar2[1])(ppuVar2);
}
ppuVar2 = ppuVar2 + 4;
} while (ppuVar2 != (undefined **)&DAT_8f675098);
puVar4 = (undefined4 *)(PTR_DAT_8f628a58 + -0x10);
puVar3 = PTR_DAT_8f628a58;
do {
while ((*(int *)(puVar3 + -8) == 0 || ((*(uint *)(puVar3 + -4) & 1) != 0))) {
LAB_8f6289cc:
puVar4 = puVar4 + 4;
puVar3 = puVar3 + 0x10;
if (puVar4 == &DAT_8f675098) goto LAB_8f628a3c;
}
FUN_8f635ec8((byte *)s_starting_app__s_8f662384,*(int **)(puVar3 + -0x10),param_3,
*(uint *)(puVar3 + -4));
param_3 = puVar4;
uVar5 = FUN_8f627744(*(byte **)(puVar3 + -0x10),(uint)FUN_8f628928,(uint)puVar4,0x10,0x2000);
if ((int)uVar5 == 0) goto LAB_8f6289cc;
puVar4 = puVar4 + 4;
uVar5 = FUN_8f6279f4((int)uVar5,(int)((ulonglong)uVar5 >> 0x20));
puVar3 = puVar3 + 0x10;
} while (puVar4 != &DAT_8f675098);
LAB_8f628a3c:
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),piVar1);
}
return;
}
void FUN_8f628a5c(int param_1,int param_2,char *param_3)
{
int *piVar1;
int iVar2;
undefined4 uVar3;
bool bVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
if (param_2 == 0) {
uVar5 = FUN_8f604c84(param_1,0,param_3);
uVar3 = (undefined4)((ulonglong)uVar5 >> 0x20);
iVar2 = (int)uVar5 + 0x8000;
*(int *)(param_1 + 0xc) = iVar2;
}
else {
uVar5 = FUN_8f604c84(param_1,param_2,param_3);
uVar3 = (undefined4)((ulonglong)uVar5 >> 0x20);
iVar2 = (int)uVar5 + 0x80000;
*(int *)(param_1 + 0xc) = iVar2;
}
uVar5 = FUN_8f604c84(iVar2,uVar3,param_3);
iVar2 = (int)uVar5 + 0x3600000;
*(int *)(param_1 + 0x14) = iVar2;
uVar5 = FUN_8f604c84(iVar2,(int)((ulonglong)uVar5 >> 0x20),param_3);
bVar4 = piVar1 == DAT_8f69d118;
iVar2 = (int)uVar5 + 0x3400000;
*(int *)(param_1 + 0x20) = iVar2;
if (bVar4) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar2,(int)((ulonglong)uVar5 >> 0x20),piVar1);
}
void FUN_8f628ad0(void)
{
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 uVar1;
int *piVar2;
char *pcVar3;
undefined8 uVar4;
int aiStack_5c [16];
int *local_1c;
pcVar3 = s_false_8f6623c0;
piVar2 = (int *)pcVar3;
if (DAT_8f6903f4 != 0) {
piVar2 = (int *)0x8f6623b8;
}
local_1c = DAT_8f69d118;
FUN_8f636618((byte *)aiStack_5c,0x40,(byte *)s__factory_info_valid___s_8f6623c8,piVar2);
FUN_8f62dfbc(aiStack_5c);
uVar1 = extraout_r1;
if (DAT_8f6903f4 != 0) {
if (DAT_8f6903f8 != 0) {
pcVar3 = (char *)(int *)0x8f6623b8;
}
FUN_8f636618((byte *)aiStack_5c,0x40,(byte *)s__factory_mode___s_8f6623e0,(int *)pcVar3);
FUN_8f62dfbc(aiStack_5c);
FUN_8f636618((byte *)aiStack_5c,0x40,(byte *)s__model_name___s_8f6623f4,(int *)&DAT_8f690194);
FUN_8f62dfbc(aiStack_5c);
FUN_8f636618((byte *)aiStack_5c,0x40,(byte *)s__serial_number___s_8f662404,(int *)&DAT_8f69dcac)
;
FUN_8f62dfbc(aiStack_5c);
FUN_8f636618((byte *)aiStack_5c,0x40,(byte *)s__Wi_Fi_MAC___s_8f662418,(int *)&DAT_8f6903c8);
FUN_8f62dfbc(aiStack_5c);
FUN_8f636618((byte *)aiStack_5c,0x40,(byte *)s__bluetooth_MAC___s_8f662428,(int *)&DAT_8f6903b4)
;
FUN_8f62dfbc(aiStack_5c);
FUN_8f636618((byte *)aiStack_5c,0x40,(byte *)s__battery_type___s_8f66243c,(int *)&DAT_8f691448);
FUN_8f62dfbc(aiStack_5c);
uVar1 = extraout_r1_00;
}
uVar4 = FUN_8f62e1b4(s__device_command_failed__8f66183c + 0x1c,uVar1);
if (local_1c == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),local_1c);
}
void FUN_8f628c48(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
undefined4 uVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
uVar3 = FUN_8f62e1b4(s__device_command_failed__8f66183c + 0x1c,param_2);
uVar2 = (undefined4)((ulonglong)uVar3 >> 0x20);
if (piVar1 == DAT_8f69d118) {
FUN_8f624d1c(0,uVar2,piVar1);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar3,uVar2,piVar1);
}
// WARNING: Removing unreachable block (ram,0x8f62e1b0)
void FUN_8f628c90(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
int *piVar2;
undefined4 extraout_r1;
int *extraout_r1_00;
int *piVar3;
undefined8 uVar4;
piVar1 = DAT_8f69d118;
piVar3 = DAT_8f69d118;
uVar4 = FUN_8f600724(-0xffffffe,param_2,param_3);
piVar2 = (int *)((ulonglong)uVar4 >> 0x20);
if ((int)uVar4 == 0) {
FUN_8f62e1b4(s__device_command_failed__8f66183c + 0x1c,piVar2);
FUN_8f624d1c(0xf0000002,extraout_r1,param_3);
uVar4 = dprintf((byte *)s_Failed_to_reboot_into_dload_mode_8f662474,extraout_r1_00,param_3,
piVar3);
}
else {
uVar4 = dprintf((byte *)s_dload_mode_not_supported_by_targ_8f662450,piVar2,param_3,piVar3);
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),piVar1);
}
FUN_8f62da38((int *)&DAT_8f663fa4,s_Failed_to_reboot_into_dload_mode_8f662498);
return;
}
void FUN_8f628d10(undefined4 param_1,undefined4 param_2)
{
int iVar1;
int *piVar2;
int iVar3;
undefined *puVar4;
undefined8 uVar5;
iVar1 = DAT_8f69d118;
piVar2 = (int *)FUN_8f6268ac(param_1,param_2);
puVar4 = &DAT_8f6624c4;
uVar5 = FUN_8f636618(&DAT_8f69ddc0,0x40,&DAT_8f6624c4,piVar2);
iVar3 = FUN_8f626970((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),puVar4);
piVar2 = (int *)&DAT_8f6624bc;
if (iVar3 == 0) {
piVar2 = (int *)&DAT_8f6624c0;
}
if (iVar1 == DAT_8f69d118) {
FUN_8f636618(&DAT_8f69dc2c,0x40,(byte *)(s__bluetooth_MAC___s_8f662428 + 0x10),piVar2);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar3,DAT_8f69d118,(int *)&DAT_8f6624c0);
}
void FUN_8f628d98(byte *param_1,undefined4 param_2,int param_3)
{
int *piVar1;
byte bVar2;
int *piVar3;
int iVar4;
int iVar5;
int iVar6;
int iVar7;
int iVar8;
int iVar9;
int iVar10;
int iVar11;
int iVar12;
int iVar13;
uint *puVar14;
uint *puVar15;
byte *pbVar16;
undefined4 uVar17;
char *pcVar18;
undefined4 extraout_r1;
byte *pbVar19;
undefined4 extraout_r1_00;
uint uVar20;
uint *puVar21;
byte *pbVar22;
byte *pbVar23;
byte *pbVar24;
byte *pbVar25;
uint *puVar26;
char *unaff_r10;
byte *pbVar27;
int *in_lr;
bool bVar28;
undefined8 uVar29;
undefined8 uVar30;
int local_4c;
int local_44;
byte *local_34;
piVar3 = DAT_8f69d118;
iVar4 = FUN_8f606984();
uVar29 = FUN_8f60ed2c();
iVar13 = (int)uVar29;
pbVar25 = param_1;
local_34 = param_1;
if ((param_1 != (byte *)0x0) &&
(pbVar25 = (byte *)(uint)*param_1, local_34 = pbVar25, pbVar25 != (byte *)0x0)) {
local_34 = (byte *)0x1;
uVar29 = FUN_8f636de0(param_1);
pbVar25 = (byte *)uVar29;
}
iVar5 = FUN_8f626460((int)uVar29,(int)((ulonglong)uVar29 >> 0x20));
if (iVar5 != 0) {
iVar5 = FUN_8f636de0((byte *)s__androidboot_emmc_true_8f6624d4);
pbVar25 = pbVar25 + iVar5;
}
iVar5 = FUN_8f636de0((byte *)s__androidboot_serialno__8f6624ec);
iVar6 = FUN_8f636de0(&DAT_8f69dcac);
if (DAT_8f6903f4 == 0) {
unaff_r10 = s_ANDROID_BOOT__8f67f340;
}
pbVar25 = pbVar25 + iVar6 + iVar5;
if (DAT_8f6903f4 != 0) {
iVar5 = FUN_8f636de0((byte *)s__androidboot_model__8f662504);
iVar6 = FUN_8f636de0(&DAT_8f690194);
iVar7 = FUN_8f636de0((byte *)s__androidboot_wifimacaddr__8f662518);
iVar8 = FUN_8f636de0(&DAT_8f6903c8);
iVar9 = FUN_8f636de0((byte *)s__androidboot_btmacaddr__8f662534);
iVar10 = FUN_8f636de0(&DAT_8f6903b4);
iVar11 = FUN_8f636de0((byte *)s__androidboot_battery_type__8f66254c);
iVar12 = FUN_8f636de0(&DAT_8f691448);
pbVar25 = pbVar25 + iVar12 + iVar11 + iVar10 + iVar9 + iVar8 + iVar7 + iVar5 + iVar6;
if (DAT_8f6903f8 == 0) {
unaff_r10 = s_ANDROID_BOOT__8f67f340;
if (DAT_8f6903fc != 0) {
DAT_8f67f35c = 1;
}
DAT_8f67f328 = 1;
param_3 = DAT_8f6903fc;
if (DAT_8f6903fc == 0) {
DAT_8f67f35c = DAT_8f6903fc;
}
}
else {
iVar5 = FUN_8f636de0(&DAT_8f690410);
unaff_r10 = s_ANDROID_BOOT__8f67f340;
DAT_8f67f35c = 0;
pbVar25 = pbVar25 + iVar5;
}
}
iVar5 = FUN_8f636de0((byte *)s__androidboot_board_rev__8f662568);
iVar6 = FUN_8f636de0(&DAT_8f6901a4);
iVar7 = FUN_8f636de0((byte *)s__androidboot_bootloader_ver_0_0__8f662580);
pbVar27 = boot_into_recovery;
pbVar25 = pbVar25 + iVar6 + iVar5 + iVar7;
if ((boot_into_recovery != (byte *)0x0) && (DAT_8f6903f0 != 0)) {
iVar5 = FUN_8f636de0((byte *)s__androidboot_need_factory_reset__8f6625a4);
pbVar25 = pbVar25 + iVar5;
}
iVar5 = FUN_8f636de0((byte *)s__androidboot_secure_boot__8f6625c8);
piVar1 = (int *)(iVar13 * 8);
iVar13 = FUN_8f636de0(&DAT_8f69040c);
iVar6 = FUN_8f636de0((byte *)s__androidboot_verifiedbootstate__8f6625e4);
uVar29 = FUN_8f636de0((byte *)piVar1[-0x1c2602f6]);
uVar20 = *(uint *)(unaff_r10 + 0xe0);
if (1 < uVar20) {
dprintf((byte *)s_Devinfo_paritition_possibly_corr_8f662604,(int *)((ulonglong)uVar29 >> 0x20),
param_3,uVar20);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x20c);
uVar20 = DAT_8f67f420;
pbVar27 = boot_into_recovery;
}
iVar7 = FUN_8f636de0((byte *)s__androidboot_veritymode__8f662678);
iVar8 = FUN_8f636de0(*(byte **)(uVar20 * 8 + -0x70980bb8));
uVar30 = FUN_8f636de0((byte *)s__androidboot_keymaster_1_8f662694);
pbVar25 = pbVar25 + (int)uVar30 + iVar8 + iVar7 + iVar13 + iVar5 + iVar6 + (int)uVar29;
if ((pbVar27 != (byte *)0x0) && (iVar4 != 0)) {
uVar30 = FUN_8f636de0(&DAT_8f6626b0);
pbVar25 = pbVar25 + (int)uVar30;
}
local_44 = DAT_8f69144c;
if (DAT_8f69144c == 0) {
if (DAT_8f690404 == 0) {
local_44 = *(int *)(unaff_r10 + 0x1c);
if (local_44 == 0) {
if (DAT_8f6903f8 == 0) {
uVar30 = FUN_8f600838((int)uVar30,(int)((ulonglong)uVar30 >> 0x20));
local_44 = (int)uVar30;
if (local_44 != 0) goto LAB_8f62972c;
}
}
else {
LAB_8f62972c:
if (DAT_8f6903fc == 0) {
uVar30 = FUN_8f6007a0((int)uVar30,(int)((ulonglong)uVar30 >> 0x20));
local_44 = (int)uVar30;
if (local_44 == 0) goto LAB_8f6290d8;
}
uVar30 = FUN_8f636de0((byte *)s__androidboot_mode_charger_8f6626f0);
local_44 = 1;
pbVar25 = pbVar25 + (int)uVar30;
}
}
else {
uVar30 = FUN_8f636de0((byte *)s__androidboot_alarmboot_true_8f6626d4);
pbVar25 = pbVar25 + (int)uVar30;
}
}
else {
iVar13 = FUN_8f636de0((byte *)s__androidboot_mode__8f6626b8);
iVar5 = FUN_8f636de0(&DAT_8f691440);
local_44 = 0;
uVar30 = FUN_8f636de0(&DAT_8f6626cc);
pbVar25 = pbVar25 + (int)uVar30 + iVar13 + iVar5;
}
LAB_8f6290d8:
iVar13 = FUN_8f626498((int)uVar30,(int)((ulonglong)uVar30 >> 0x20));
if ((iVar13 != 0) && (DAT_8f690408 != 0)) {
iVar13 = FUN_8f636de0((byte *)s__androidboot_authorized_kernel_t_8f66270c);
pbVar25 = pbVar25 + iVar13;
}
pcVar18 = s_system_8f65b690;
if (boot_into_recovery != (byte *)0x0) {
pcVar18 = s_recoveryfs_8f6624c8;
}
uVar29 = FUN_8f626380(param_1,pcVar18);
bVar28 = (int)uVar29 == 0;
if (bVar28) {
uVar29 = FUN_8f636de0(DAT_8f690400);
pbVar25 = pbVar25 + (int)uVar29;
}
uVar29 = FUN_8f6006ec((int)uVar29,(int)((ulonglong)uVar29 >> 0x20));
switch((int)uVar29) {
case 0:
uVar29 = FUN_8f636de0((byte *)s__androidboot_baseband_msm_8f66274c);
pbVar25 = pbVar25 + (int)uVar29;
break;
case 1:
uVar29 = FUN_8f636de0((byte *)s__androidboot_baseband_apq_8f662730);
pbVar25 = pbVar25 + (int)uVar29;
break;
case 2:
uVar29 = FUN_8f636de0((byte *)s__androidboot_baseband_csfb_8f662768);
pbVar25 = pbVar25 + (int)uVar29;
break;
case 4:
uVar29 = FUN_8f636de0((byte *)s__androidboot_baseband_svlte2a_8f662784);
pbVar25 = pbVar25 + (int)uVar29;
break;
case 5:
uVar29 = FUN_8f636de0((byte *)s__androidboot_baseband_mdm_8f6627a4);
pbVar25 = pbVar25 + (int)uVar29;
break;
case 6:
uVar29 = FUN_8f636de0((byte *)s__androidboot_baseband_sglte_8f6627dc);
pbVar25 = pbVar25 + (int)uVar29;
break;
case 7:
uVar29 = FUN_8f636de0((byte *)s__androidboot_baseband_dsda_8f662818);
pbVar25 = pbVar25 + (int)uVar29;
break;
case 8:
uVar29 = FUN_8f636de0((byte *)s__androidboot_baseband_dsda2_8f662834);
pbVar25 = pbVar25 + (int)uVar29;
break;
case 9:
uVar29 = FUN_8f636de0((byte *)s__androidboot_baseband_sglte2_8f6627f8);
pbVar25 = pbVar25 + (int)uVar29;
break;
case 10:
uVar29 = FUN_8f636de0((byte *)s__androidboot_baseband_mdm2_8f6627c0);
pbVar25 = pbVar25 + (int)uVar29;
break;
case 0xb:
uVar29 = FUN_8f636de0((byte *)s__androidboot_baseband_baseband_a_8f662850);
pbVar25 = pbVar25 + (int)uVar29;
}
if (((param_1 != (byte *)0x0) &&
(uVar29 = FUN_8f63710c(param_1,(byte *)s_mdss_mdp_8f66287c), (int)uVar29 == 0)) &&
(uVar29 = FUN_8f601a0c((int)&DAT_8f69dcfc,0xc4), (int)uVar29 != 0)) {
uVar29 = FUN_8f636de0(&DAT_8f69dcfc);
if ((int)uVar29 != 0) {
pbVar25 = pbVar25 + (int)uVar29;
}
}
uVar29 = FUN_8f6265a8((int)uVar29,(int)((ulonglong)uVar29 >> 0x20));
if ((int)uVar29 != 0) {
uVar30 = FUN_8f636de0((byte *)s__qpnp_power_on_warm_boot_1_8f662888);
uVar29 = CONCAT44((int)((ulonglong)uVar30 >> 0x20),1);
pbVar25 = pbVar25 + (int)uVar30;
}
uVar17 = (undefined4)((ulonglong)uVar29 >> 0x20);
local_4c = (int)uVar29;
if ((int)pbVar25 < 1) {
puVar14 = (uint *)0x0;
goto LAB_8f6298d0;
}
puVar14 = (uint *)FUN_8f63666c((uint)(pbVar25 + 4) & 0xfffffffc,uVar17);
if (puVar14 == (uint *)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x27b);
}
puVar15 = FUN_8f636968(puVar14,0,1);
puVar21 = puVar14;
if (local_34 == (byte *)0x0) {
iVar13 = FUN_8f626460(puVar15,extraout_r1);
pbVar25 = PTR_s__8f629b60;
if (iVar13 != 0) {
puVar26 = (uint *)((int)puVar14 + 1);
pbVar25 = PTR_DAT_8f629b5c;
goto LAB_8f629248;
}
}
else {
do {
bVar2 = *param_1;
puVar26 = (uint *)((int)puVar21 + 1);
*(byte *)puVar21 = bVar2;
param_1 = param_1 + 1;
puVar21 = puVar26;
} while (bVar2 != 0);
iVar13 = FUN_8f626460(puVar15,extraout_r1);
pbVar25 = PTR_DAT_8f629b5c;
if (iVar13 != 0) {
LAB_8f629248:
while( true ) {
bVar2 = pbVar25[1];
*(byte *)((int)puVar26 + -1) = bVar2;
if (bVar2 == 0) break;
puVar26 = (uint *)((int)puVar26 + 1);
pbVar25 = pbVar25 + 1;
}
}
pbVar25 = PTR_s__8f629b60;
puVar21 = (uint *)((int)puVar26 + -1);
}
do {
puVar15 = puVar21;
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
*(byte *)puVar15 = bVar2;
puVar21 = (uint *)((int)puVar15 + 1);
} while (bVar2 != 0);
pbVar25 = (byte *)piVar1[-0x1c2602f6];
while( true ) {
puVar26 = puVar21;
bVar2 = *pbVar25;
*(byte *)((int)puVar26 + -1) = bVar2;
if (bVar2 == 0) break;
pbVar25 = pbVar25 + 1;
puVar21 = (uint *)((int)puVar26 + 1);
puVar15 = puVar26;
}
uVar20 = *(uint *)(unaff_r10 + 0xe0);
pbVar27 = PTR_DAT_8f629b64;
if (1 < uVar20) {
dprintf((byte *)s_Devinfo_paritition_possibly_corr_8f662604,piVar1,pbVar25 + 1,uVar20);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x29d);
pbVar27 = PTR_DAT_8f629b64;
uVar20 = DAT_8f67f420;
}
while( true ) {
puVar21 = puVar26;
bVar2 = pbVar27[1];
*(byte *)((int)puVar21 + -1) = bVar2;
if (bVar2 == 0) break;
pbVar27 = pbVar27 + 1;
puVar26 = (uint *)((int)puVar21 + 1);
puVar15 = puVar21;
}
pbVar25 = *(byte **)(uVar20 * 8 + -0x70980bb8);
while( true ) {
puVar26 = puVar21;
bVar2 = *pbVar25;
*(byte *)((int)puVar26 + -1) = bVar2;
pbVar27 = PTR_s__8f629b68;
if (bVar2 == 0) break;
pbVar25 = pbVar25 + 1;
puVar21 = (uint *)((int)puVar26 + 1);
puVar15 = puVar26;
}
while( true ) {
puVar21 = puVar26;
bVar2 = pbVar27[1];
*(byte *)((int)puVar21 + -1) = bVar2;
pbVar25 = PTR_s__8f629b6c;
if (bVar2 == 0) break;
pbVar27 = pbVar27 + 1;
puVar26 = (uint *)((int)puVar21 + 1);
puVar15 = puVar21;
}
while( true ) {
puVar26 = puVar21;
bVar2 = pbVar25[1];
*(byte *)((int)puVar26 + -1) = bVar2;
pbVar27 = PTR_DAT_8f629b70;
if (bVar2 == 0) break;
pbVar25 = pbVar25 + 1;
puVar21 = (uint *)((int)puVar26 + 1);
puVar15 = puVar26;
}
while( true ) {
puVar21 = puVar26;
bVar2 = pbVar27[1];
*(byte *)((int)puVar21 + -1) = bVar2;
if (bVar2 == 0) break;
pbVar27 = pbVar27 + 1;
puVar26 = (uint *)((int)puVar21 + 1);
puVar15 = puVar21;
}
pbVar25 = PTR_s__8f629b74;
if (DAT_8f6903f4 != 0) {
while( true ) {
puVar26 = puVar21;
bVar2 = pbVar25[1];
*(byte *)((int)puVar26 + -1) = bVar2;
pbVar27 = DAT_8f629b78;
if (bVar2 == 0) break;
pbVar25 = pbVar25 + 1;
puVar21 = (uint *)((int)puVar26 + 1);
puVar15 = puVar26;
}
while( true ) {
puVar21 = puVar26;
bVar2 = pbVar27[1];
*(byte *)((int)puVar21 + -1) = bVar2;
pbVar25 = DAT_8f629b7c;
if (bVar2 == 0) break;
pbVar27 = pbVar27 + 1;
puVar26 = (uint *)((int)puVar21 + 1);
puVar15 = puVar21;
}
while( true ) {
puVar26 = puVar21;
bVar2 = pbVar25[1];
*(byte *)((int)puVar26 + -1) = bVar2;
pbVar27 = PTR_DAT_8f629b80;
if (bVar2 == 0) break;
pbVar25 = pbVar25 + 1;
puVar21 = (uint *)((int)puVar26 + 1);
puVar15 = puVar26;
}
while( true ) {
puVar21 = puVar26;
bVar2 = pbVar27[1];
*(byte *)((int)puVar21 + -1) = bVar2;
pbVar25 = PTR_s__8f629b84;
if (bVar2 == 0) break;
pbVar27 = pbVar27 + 1;
puVar26 = (uint *)((int)puVar21 + 1);
puVar15 = puVar21;
}
while( true ) {
puVar26 = puVar21;
bVar2 = pbVar25[1];
*(byte *)((int)puVar26 + -1) = bVar2;
pbVar27 = DAT_8f629b88;
if (bVar2 == 0) break;
pbVar25 = pbVar25 + 1;
puVar21 = (uint *)((int)puVar26 + 1);
puVar15 = puVar26;
}
while( true ) {
puVar21 = puVar26;
bVar2 = pbVar27[1];
*(byte *)((int)puVar21 + -1) = bVar2;
pbVar25 = DAT_8f629b8c;
if (bVar2 == 0) break;
pbVar27 = pbVar27 + 1;
puVar26 = (uint *)((int)puVar21 + 1);
puVar15 = puVar21;
}
while( true ) {
puVar26 = puVar21;
bVar2 = pbVar25[1];
*(byte *)((int)puVar26 + -1) = bVar2;
pbVar27 = PTR_DAT_8f629b90;
if (bVar2 == 0) break;
pbVar25 = pbVar25 + 1;
puVar21 = (uint *)((int)puVar26 + 1);
puVar15 = puVar26;
}
while( true ) {
puVar21 = puVar26;
bVar2 = pbVar27[1];
*(byte *)((int)puVar21 + -1) = bVar2;
if (bVar2 == 0) break;
pbVar27 = pbVar27 + 1;
puVar26 = (uint *)((int)puVar21 + 1);
puVar15 = puVar21;
}
pbVar25 = PTR_DAT_8f629b94;
if (DAT_8f6903f8 != 0) {
do {
bVar2 = pbVar25[1];
puVar21 = (uint *)((int)puVar15 + 1);
*(byte *)puVar15 = bVar2;
pbVar25 = pbVar25 + 1;
puVar15 = puVar21;
} while (bVar2 != 0);
}
}
pbVar25 = PTR_s__8f629b98;
pbVar27 = (byte *)((int)puVar21 + -1);
do {
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
*pbVar27 = bVar2;
pbVar16 = PTR_DAT_8f629b9c;
pbVar22 = pbVar27;
pbVar27 = pbVar27 + 1;
} while (bVar2 != 0);
do {
pbVar25 = pbVar22;
pbVar16 = pbVar16 + 1;
bVar2 = *pbVar16;
pbVar22 = pbVar25 + 1;
*pbVar25 = bVar2;
pbVar27 = DAT_8f629ba0;
} while (bVar2 != 0);
while( true ) {
bVar2 = pbVar27[1];
pbVar22[-1] = bVar2;
pbVar16 = boot_into_recovery;
if (bVar2 == 0) break;
pbVar25 = pbVar22;
pbVar22 = pbVar22 + 1;
pbVar27 = pbVar27 + 1;
}
if ((boot_into_recovery != (byte *)0x0) && (pbVar27 = PTR_s__8f629ba4, DAT_8f6903f0 != 0)) {
do {
bVar2 = pbVar27[1];
pbVar22 = pbVar25 + 1;
*pbVar25 = bVar2;
pbVar25 = pbVar22;
pbVar27 = pbVar27 + 1;
} while (bVar2 != 0);
}
pbVar25 = pbVar22 + -1;
pbVar27 = PTR_s__8f629ba8;
do {
pbVar27 = pbVar27 + 1;
bVar2 = *pbVar27;
*pbVar25 = bVar2;
pbVar22 = DAT_8f629bac;
pbVar24 = pbVar25;
pbVar25 = pbVar25 + 1;
} while (bVar2 != 0);
do {
pbVar25 = pbVar24;
pbVar22 = pbVar22 + 1;
bVar2 = *pbVar22;
pbVar24 = pbVar25 + 1;
*pbVar25 = bVar2;
} while (bVar2 != 0);
pbVar27 = PTR_DAT_8f629bb0;
if (local_4c != 0) {
do {
pbVar22 = pbVar27 + 1;
bVar2 = *pbVar22;
pbVar24 = pbVar25 + 1;
*pbVar25 = bVar2;
pbVar27 = pbVar22;
pbVar25 = pbVar24;
} while (bVar2 != 0);
}
if ((pbVar16 != (byte *)0x0) && (iVar4 != 0)) {
pbVar25 = PTR_s__8f629bb4;
pbVar27 = pbVar24 + -1;
do {
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
pbVar24 = pbVar27 + 1;
*pbVar27 = bVar2;
pbVar27 = pbVar24;
} while (bVar2 != 0);
}
if (DAT_8f69144c == 0) {
if (DAT_8f690404 == 0) {
if (local_44 != 0) {
pbVar25 = DAT_8f629bfc;
pbVar27 = pbVar24 + -1;
do {
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
pbVar24 = pbVar27 + 1;
*pbVar27 = bVar2;
pbVar27 = pbVar24;
} while (bVar2 != 0);
}
}
else {
pbVar25 = PTR_DAT_8f629bf8;
pbVar27 = pbVar24 + -1;
do {
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
pbVar24 = pbVar27 + 1;
*pbVar27 = bVar2;
pbVar27 = pbVar24;
} while (bVar2 != 0);
}
}
else {
pbVar25 = PTR_DAT_8f629bb8;
pbVar27 = pbVar24 + -1;
do {
pbVar23 = pbVar27;
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
*pbVar23 = bVar2;
pbVar19 = PTR_DAT_8f629bbc;
pbVar27 = pbVar23 + 1;
} while (bVar2 != 0);
do {
bVar2 = pbVar19[1];
pbVar24 = pbVar23 + 1;
*pbVar23 = bVar2;
pbVar16 = PTR_s__8f629bc0;
pbVar19 = pbVar19 + 1;
pbVar23 = pbVar24;
} while (bVar2 != 0);
while( true ) {
pbVar16 = pbVar16 + 1;
bVar2 = *pbVar16;
pbVar24[-1] = bVar2;
if (bVar2 == 0) break;
pbVar24 = pbVar24 + 1;
}
}
uVar29 = FUN_8f626498(pbVar22,pbVar16);
if (((int)uVar29 != 0) && (DAT_8f690408 != 0)) {
pbVar25 = PTR_s__8f629bc4;
pbVar27 = pbVar24 + -1;
do {
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
pbVar24 = pbVar27 + 1;
*pbVar27 = bVar2;
pbVar27 = pbVar24;
} while (bVar2 != 0);
}
uVar17 = FUN_8f6006ec((int)uVar29,(int)((ulonglong)uVar29 >> 0x20));
switch(uVar17) {
case 0:
pbVar25 = PTR_s__8f629be4;
pbVar27 = pbVar24 + -1;
do {
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
pbVar24 = pbVar27 + 1;
*pbVar27 = bVar2;
pbVar27 = pbVar24;
} while (bVar2 != 0);
break;
case 1:
pbVar25 = DAT_8f629bf4;
pbVar27 = pbVar24 + -1;
do {
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
pbVar24 = pbVar27 + 1;
*pbVar27 = bVar2;
pbVar27 = pbVar24;
} while (bVar2 != 0);
break;
case 2:
pbVar25 = PTR_s__8f629bf0;
pbVar27 = pbVar24 + -1;
do {
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
pbVar24 = pbVar27 + 1;
*pbVar27 = bVar2;
pbVar27 = pbVar24;
} while (bVar2 != 0);
break;
case 4:
pbVar25 = PTR_s__8f629bec;
pbVar27 = pbVar24 + -1;
do {
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
pbVar24 = pbVar27 + 1;
*pbVar27 = bVar2;
pbVar27 = pbVar24;
} while (bVar2 != 0);
break;
case 5:
pbVar25 = PTR_s__8f629be8;
pbVar27 = pbVar24 + -1;
do {
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
pbVar24 = pbVar27 + 1;
*pbVar27 = bVar2;
pbVar27 = pbVar24;
} while (bVar2 != 0);
break;
case 6:
pbVar25 = PTR_s__8f629be0;
pbVar27 = pbVar24 + -1;
do {
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
pbVar24 = pbVar27 + 1;
*pbVar27 = bVar2;
pbVar27 = pbVar24;
} while (bVar2 != 0);
break;
case 7:
pbVar25 = PTR_s__8f629bdc;
pbVar27 = pbVar24 + -1;
do {
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
pbVar24 = pbVar27 + 1;
*pbVar27 = bVar2;
pbVar27 = pbVar24;
} while (bVar2 != 0);
break;
case 8:
pbVar25 = PTR_s__8f629bd8;
pbVar27 = pbVar24 + -1;
do {
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
pbVar24 = pbVar27 + 1;
*pbVar27 = bVar2;
pbVar27 = pbVar24;
} while (bVar2 != 0);
break;
case 9:
pbVar25 = PTR_s__8f629bd4;
pbVar27 = pbVar24 + -1;
do {
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
pbVar24 = pbVar27 + 1;
*pbVar27 = bVar2;
pbVar27 = pbVar24;
} while (bVar2 != 0);
break;
case 10:
pbVar25 = PTR_s__8f629bd0;
pbVar27 = pbVar24 + -1;
do {
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
pbVar24 = pbVar27 + 1;
*pbVar27 = bVar2;
pbVar27 = pbVar24;
} while (bVar2 != 0);
break;
case 0xb:
pbVar25 = PTR_s__8f629bc8;
pbVar27 = pbVar24 + -1;
do {
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
pbVar24 = pbVar27 + 1;
*pbVar27 = bVar2;
pbVar27 = pbVar24;
} while (bVar2 != 0);
}
uVar29 = FUN_8f636de0(&DAT_8f69dcfc);
uVar17 = (undefined4)((ulonglong)uVar29 >> 0x20);
if ((int)uVar29 != 0) {
pbVar25 = PTR_DAT_8f629bcc;
pbVar27 = pbVar24 + -1;
do {
pbVar25 = pbVar25 + 1;
bVar2 = *pbVar25;
pbVar24 = pbVar27 + 1;
*pbVar27 = bVar2;
pbVar27 = pbVar24;
} while (bVar2 != 0);
}
pbVar25 = DAT_8f690400;
if (bVar28) {
pbVar27 = DAT_8f690400;
pbVar16 = pbVar24 + -1;
do {
bVar2 = *pbVar27;
*pbVar16 = bVar2;
pbVar27 = pbVar27 + 1;
pbVar16 = pbVar16 + 1;
} while (bVar2 != 0);
FUN_8f636758((int)pbVar25);
uVar17 = extraout_r1_00;
}
LAB_8f6298d0:
if (piVar3 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(puVar14,uVar17,piVar3);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f629c7c)
void FUN_8f629c00(undefined *param_1,uint param_2)
{
return;
}
void FUN_8f629c80(uint param_1,uint param_2,char *param_3)
{
int *piVar1;
uint uVar2;
uint uVar3;
undefined4 uVar4;
undefined4 uVar5;
uint uVar6;
int iVar7;
undefined8 uVar8;
longlong lVar9;
piVar1 = DAT_8f69d118;
uVar8 = FUN_8f604c84(param_1,param_2,param_3);
uVar2 = FUN_8f602f04((int)uVar8,(int)((ulonglong)uVar8 >> 0x20));
lVar9 = FUN_8f604db0();
uVar6 = (uint)(lVar9 + (ulonglong)uVar2);
iVar7 = (int)(lVar9 + (ulonglong)uVar2 >> 0x20);
uVar8 = FUN_8f602f04(param_1,(int)((ulonglong)lVar9 >> 0x20));
uVar5 = (undefined4)((ulonglong)uVar8 >> 0x20);
uVar3 = (uint)uVar8;
if (((~param_1 < param_2) || (uVar3 < uVar2)) ||
(iVar7 == 0 && uVar6 < uVar3 || iVar7 == 0 && uVar6 == uVar3)) {
uVar4 = 0xffffffff;
}
else {
uVar5 = 0;
if (iVar7 == 0 && uVar6 < uVar3 + param_2) {
uVar4 = 0xffffffff;
}
else {
uVar4 = 0;
}
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar4,uVar5,piVar1);
}
return;
}
void FUN_8f629d24(undefined4 param_1,uint param_2)
{
int *piVar1;
undefined4 uVar2;
char *pcVar3;
int *piVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
if (DAT_8f67f350 == 0) {
uVar5 = FUN_8f60e804(0,param_2);
uVar5 = FUN_8f60e010((int)uVar5,(int)((ulonglong)uVar5 >> 0x20));
if ((int)uVar5 == 2) {
uVar5 = FUN_8f60ed6c(2);
piVar4 = (int *)((ulonglong)uVar5 >> 0x20);
if (piVar1 == DAT_8f69d118) {
pcVar3 = s_Keystore_verification_failed__Co_8f662910;
goto LAB_8f629d9c;
}
}
else if (piVar1 == DAT_8f69d118) {
return;
}
}
else {
uVar2 = FUN_8f60e804(1,param_2);
uVar5 = FUN_8f60ed6c(uVar2);
piVar4 = (int *)((ulonglong)uVar5 >> 0x20);
if (piVar1 == DAT_8f69d118) {
pcVar3 = s_Device_is_unlocked__Skipping_ver_8f6628e0;
LAB_8f629d9c:
dprintf((byte *)pcVar3,piVar4,piVar1,DAT_8f69d118);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),piVar1);
}
void FUN_8f629dc8(void)
{
int *piVar1;
undefined uVar2;
char *pcVar3;
int iVar4;
uint uVar5;
uint uVar6;
undefined4 extraout_r1;
uint uVar7;
int *in_lr;
undefined8 uVar8;
longlong lVar9;
longlong lVar10;
piVar1 = DAT_8f69d118;
if (DAT_8f67f33c == 0) {
pcVar3 = s_aboot_8f65b04c;
}
else {
pcVar3 = s_devinfo_8f65a2fc;
}
uVar8 = FUN_8f606760((byte *)pcVar3);
iVar4 = (int)uVar8;
lVar9 = FUN_8f60688c(iVar4,(int)((ulonglong)uVar8 >> 0x20));
if (lVar9 != 0) {
uVar2 = FUN_8f606904(iVar4);
FUN_8f60db18(uVar2);
lVar10 = FUN_8f606814(iVar4,extraout_r1);
uVar5 = FUN_8f60d5cc((int)lVar10,(int)((ulonglong)lVar10 >> 0x20));
uVar7 = DAT_8f69de40;
if (DAT_8f67f33c == 0) {
uVar6 = (uint)(lVar10 + lVar9);
lVar9 = FUN_8f60d620(uVar6 - uVar5,
(int)((ulonglong)(lVar10 + lVar9) >> 0x20) - (uint)(uVar6 < uVar5),uVar5,
DAT_8f69de40);
}
else {
lVar9 = FUN_8f60d620((uint)lVar9,(uint)((ulonglong)lVar9 >> 0x20),uVar5,DAT_8f69de40);
}
if ((int)lVar9 != 0) {
dprintf((byte *)s_ERROR__Cannot_write_device_info_8f662948,(int *)((ulonglong)lVar9 >> 0x20),
uVar5,uVar7);
lVar9 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x854);
}
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428((int)lVar9,(int)((ulonglong)lVar9 >> 0x20),piVar1);
}
return;
}
void FUN_8f629ee8(int param_1)
{
int *piVar1;
int *piVar2;
undefined uVar3;
uint uVar4;
uint uVar5;
undefined4 extraout_r1;
uint uVar6;
int iVar7;
int *in_lr;
undefined8 uVar8;
ulonglong uVar9;
longlong lVar10;
piVar1 = DAT_8f69d118;
uVar8 = FUN_8f606760((byte *)s_devinfo_8f65a2fc);
if ((int)uVar8 < 0) {
DAT_8f67f33c = 0;
uVar8 = FUN_8f606760((byte *)s_aboot_8f65b04c);
}
iVar7 = (int)uVar8;
uVar9 = FUN_8f60688c(iVar7,(int)((ulonglong)uVar8 >> 0x20));
if (uVar9 == 0) {
if (piVar1 == DAT_8f69d118) {
return;
}
}
else {
uVar3 = FUN_8f606904(iVar7);
FUN_8f60db18(uVar3);
lVar10 = FUN_8f606814(iVar7,extraout_r1);
uVar4 = FUN_8f60d5cc((int)lVar10,(int)((ulonglong)lVar10 >> 0x20));
uVar6 = DAT_8f69de40;
if (DAT_8f67f33c == 0) {
uVar5 = (uint)(lVar10 + uVar9);
uVar8 = FUN_8f60d85c(uVar5 - uVar4,(int)(lVar10 + uVar9 >> 0x20) - (uint)(uVar5 < uVar4),
DAT_8f69de40,uVar4);
}
else {
uVar8 = FUN_8f60d85c((uint)uVar9,(uint)(uVar9 >> 0x20),DAT_8f69de40,uVar4);
}
uVar5 = (uint)uVar8;
if (uVar5 != 0) {
dprintf((byte *)s_ERROR__Cannot_read_device_info_8f66296c,(int *)((ulonglong)uVar8 >> 0x20),
uVar6,uVar4);
uVar5 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x879);
}
piVar2 = DAT_8f69d118;
uVar9 = (ulonglong)uVar5;
*(undefined4 *)(param_1 + 0x10) = 0;
if (piVar1 == piVar2) {
FUN_8f629dc8();
return;
}
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar9,(int)(uVar9 >> 0x20),piVar1);
}
void FUN_8f62a054(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
uint *puVar2;
char *pcVar3;
int *piVar4;
int *in_lr;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
piVar4 = DAT_8f69d118;
uVar5 = FUN_8f6366a8((int *)0x1000,0x1000);
puVar2 = (uint *)uVar5;
if (puVar2 == (uint *)0x0) {
dprintf((byte *)s_Failed_to_allocate_memory_for_de_8f66298c,(int *)((ulonglong)uVar5 >> 0x20),
param_3,piVar4);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x88f);
}
DAT_8f69de40 = puVar2;
uVar5 = FUN_8f614524();
piVar4 = (int *)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 == 0) {
if (piVar1 == DAT_8f69d118) {
pcVar3 = s_ERROR__Partition_table_not_found_8f6629c0;
LAB_8f62a128:
dprintf((byte *)pcVar3,piVar4,piVar1,DAT_8f69d118);
return;
}
}
else {
uVar5 = FUN_8f638f3c((int)uVar5,(byte *)s_devinfo_8f65a2fc);
piVar4 = (int *)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 == 0) {
if (piVar1 == DAT_8f69d118) {
pcVar3 = s_ERROR__No_devinfo_partition_foun_8f6629e4;
goto LAB_8f62a128;
}
}
else {
FUN_8f636968(puVar2,0,0x1000);
FUN_8f63685c(puVar2,param_1,0xe4);
uVar5 = FUN_8f614798((int)uVar5,0,DAT_8f69de40,DAT_8f6903e0);
piVar4 = (int *)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 == 0) {
if (piVar1 == DAT_8f69d118) {
FUN_8f636758((int)puVar2);
return;
}
}
else if (piVar1 == DAT_8f69d118) {
pcVar3 = s_ERROR__Cannot_write_device_info_8f662948;
goto LAB_8f62a128;
}
}
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),piVar1);
}
void FUN_8f62a334(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
undefined4 *puVar2;
int iVar3;
int *piVar4;
int *in_lr;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
piVar4 = DAT_8f69d118;
uVar5 = FUN_8f626460(param_1,param_2);
if ((int)uVar5 == 0) {
if (piVar1 == DAT_8f69d118) {
FUN_8f62a054(param_1,(int)((ulonglong)uVar5 >> 0x20),piVar1);
return;
}
}
else {
uVar5 = FUN_8f6366a8((int *)0x1000,0x1000);
puVar2 = (undefined4 *)uVar5;
if (puVar2 == (undefined4 *)0x0) {
dprintf((byte *)s_Failed_to_allocate_memory_for_de_8f66298c,(int *)((ulonglong)uVar5 >> 0x20),
param_3,piVar4);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x929);
}
DAT_8f69de40 = puVar2;
FUN_8f63685c(puVar2,param_1,0xe4);
iVar3 = FUN_8f615da0();
if (iVar3 == 0) {
uVar5 = FUN_8f629dc8();
}
else {
uVar5 = FUN_8f625144((uint)puVar2,0x1000);
if ((int)uVar5 < 0) {
uVar5 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x931);
}
}
if (piVar1 == DAT_8f69d118) {
FUN_8f636758((int)puVar2);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),piVar1);
}
void FUN_8f62a45c(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
undefined4 *puVar2;
char *pcVar3;
int iVar4;
undefined4 *puVar5;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
int *piVar6;
undefined4 extraout_r1_01;
undefined4 uVar7;
int *piVar8;
uint uVar9;
int *in_lr;
undefined8 uVar10;
piVar6 = DAT_8f69d118;
piVar8 = DAT_8f69d118;
uVar10 = FUN_8f626460(param_1,param_2);
piVar1 = DAT_8f69d118;
if ((int)uVar10 == 0) {
if (piVar6 == DAT_8f69d118) {
piVar8 = DAT_8f69d118;
uVar10 = FUN_8f6366a8((int *)0x1000,0x1000);
puVar2 = (undefined4 *)uVar10;
if (puVar2 == (undefined4 *)0x0) {
dprintf((byte *)s_Failed_to_allocate_memory_for_de_8f66298c,
(int *)((ulonglong)uVar10 >> 0x20),piVar6,piVar8);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x8ff);
}
DAT_8f69de40 = puVar2;
uVar10 = FUN_8f614524();
piVar6 = (int *)((ulonglong)uVar10 >> 0x20);
if ((int)uVar10 == 0) {
if (piVar1 == DAT_8f69d118) {
pcVar3 = s_ERROR__Partition_table_not_found_8f6629c0;
LAB_8f62a2b8:
dprintf((byte *)pcVar3,piVar6,piVar1,DAT_8f69d118);
return;
}
}
else {
uVar10 = FUN_8f638f3c((int)uVar10,(byte *)s_devinfo_8f65a2fc);
piVar6 = (int *)((ulonglong)uVar10 >> 0x20);
if ((int)uVar10 == 0) {
if (piVar1 == DAT_8f69d118) {
pcVar3 = s_ERROR__No_devinfo_partition_foun_8f6629e4;
goto LAB_8f62a2b8;
}
}
else {
uVar10 = FUN_8f614564((int)uVar10,(undefined4 *)0x0,(int *)0x0,DAT_8f69de40,DAT_8f6903e0);
piVar6 = (int *)((ulonglong)uVar10 >> 0x20);
if ((int)uVar10 == 0) {
iVar4 = FUN_8f636a7c((char *)puVar2,s_ANDROID_BOOT__8f662a08,0xd);
if (iVar4 != 0) {
uVar7 = 0xd;
FUN_8f63685c(puVar2,(undefined4 *)s_ANDROID_BOOT__8f662a08,0xd);
puVar2[4] = 0;
puVar2[5] = 0;
FUN_8f62a054(puVar2,extraout_r1_00,uVar7);
}
puVar5 = FUN_8f63685c(param_1,puVar2,0xe4);
uVar10 = CONCAT44(extraout_r1,puVar5);
if (piVar1 == DAT_8f69d118) {
FUN_8f636758((int)puVar2);
return;
}
}
else if (piVar1 == DAT_8f69d118) {
pcVar3 = s_ERROR__Cannot_write_device_info_8f662948;
goto LAB_8f62a2b8;
}
}
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar10,(int)((ulonglong)uVar10 >> 0x20),piVar1);
}
}
else {
uVar10 = FUN_8f6366a8((int *)0x1000,0x1000);
puVar2 = (undefined4 *)uVar10;
if (puVar2 == (undefined4 *)0x0) {
dprintf((byte *)s_Failed_to_allocate_memory_for_de_8f66298c,(int *)((ulonglong)uVar10 >> 0x20)
,param_3,piVar8);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x948);
}
DAT_8f69de40 = puVar2;
iVar4 = FUN_8f615da0();
if (iVar4 == 0) {
FUN_8f629ee8((int)puVar2);
}
else {
iVar4 = FUN_8f62508c((uint)puVar2,0x1000);
if (iVar4 < 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x94f);
}
}
iVar4 = FUN_8f636a7c((char *)puVar2,s_ANDROID_BOOT__8f662a08,0xd);
if (iVar4 != 0) {
FUN_8f63685c(puVar2,(undefined4 *)s_ANDROID_BOOT__8f662a08,0xd);
uVar10 = FUN_8f615da0();
puVar2[0x38] = 1;
uVar9 = (uint)((int)uVar10 == 0);
puVar2[4] = uVar9;
puVar2[6] = uVar9;
puVar2[5] = 0;
puVar2[7] = 0;
FUN_8f62a334(puVar2,(int)((ulonglong)uVar10 >> 0x20),1);
}
puVar5 = FUN_8f63685c(param_1,puVar2,0xe4);
uVar10 = CONCAT44(extraout_r1_01,puVar5);
if (piVar6 == DAT_8f69d118) {
FUN_8f636758((int)puVar2);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar10,(int)((ulonglong)uVar10 >> 0x20),piVar6);
}
void FUN_8f62a5e8(undefined4 param_1,int *param_2,undefined4 param_3)
{
int *piVar1;
piVar1 = DAT_8f69d118;
dprintf((byte *)s_reset_device_info_called__8f662a90,param_2,param_3,DAT_8f69d118);
DAT_8f67f354 = 0;
if (piVar1 == DAT_8f69d118) {
FUN_8f62a334((undefined4 *)s_ANDROID_BOOT__8f67f340,piVar1,DAT_8f69d118);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(s_ANDROID_BOOT__8f67f340,piVar1,DAT_8f69d118);
}
void FUN_8f62a63c(undefined4 param_1,int *param_2,undefined4 param_3)
{
int *piVar1;
piVar1 = DAT_8f69d118;
dprintf((byte *)s_set_device_root_called__8f662aac,param_2,param_3,DAT_8f69d118);
DAT_8f67f354 = 1;
if (piVar1 == DAT_8f69d118) {
FUN_8f62a334((undefined4 *)s_ANDROID_BOOT__8f67f340,piVar1,DAT_8f69d118);
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(s_ANDROID_BOOT__8f67f340,piVar1,DAT_8f69d118);
}
// WARNING: Removing unreachable block (ram,0x8f62a6f4)
void FUN_8f62a690(int param_1,undefined4 param_2)
{
undefined4 uVar1;
uVar1 = param_2;
if ((param_1 != 0) && (uVar1 = DAT_8f67f350, param_1 == 1)) {
uRam8f67f358 = param_2;
}
DAT_8f67f350 = uVar1;
FUN_8f62a334((undefined4 *)s_ANDROID_BOOT__8f67f340,param_2,DAT_8f69d118);
return;
}
void FUN_8f62a6f8(char *param_1)
{
int *piVar1;
undefined4 uVar2;
undefined8 uVar3;
piVar1 = DAT_8f69d118;
uVar3 = FUN_8f636a7c(param_1,s_SPLASH___8f6632b0,8);
if (((int)uVar3 == 0) && (*(int *)(param_1 + 8) != 0)) {
if (*(int *)(param_1 + 0xc) == 0) {
uVar2 = 0xffffffff;
}
else {
uVar2 = 0;
}
}
else {
uVar2 = 0xffffffff;
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar2,(int)((ulonglong)uVar3 >> 0x20),piVar1);
}
return;
}
void FUN_8f62a9bc(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
undefined uVar2;
uint uVar3;
undefined4 *puVar4;
int *extraout_r1;
int *piVar5;
undefined4 extraout_r1_00;
undefined4 uVar6;
int *extraout_r1_01;
undefined4 extraout_r1_02;
int *extraout_r1_03;
undefined4 extraout_r1_04;
undefined4 extraout_r1_05;
undefined4 extraout_r1_06;
undefined4 extraout_r1_07;
undefined4 extraout_r1_08;
undefined4 extraout_r1_09;
undefined4 extraout_r1_10;
undefined4 extraout_r1_11;
undefined4 extraout_r1_12;
undefined4 extraout_r1_13;
undefined4 *puVar7;
int *piVar8;
char *pcVar9;
int iVar10;
uint uVar11;
uint uVar12;
int *piVar13;
undefined4 *puVar14;
undefined4 *puVar15;
int iVar16;
undefined8 uVar17;
longlong lVar18;
ulonglong uVar19;
piVar1 = DAT_8f69d118;
piVar5 = DAT_8f69d118;
uVar17 = FUN_8f606760((byte *)s_splash_4_8f6633c4);
iVar16 = (int)uVar17;
dprintf((byte *)s_ERROR__JUN____USB_disconnect____8f6633d0,(int *)((ulonglong)uVar17 >> 0x20),
param_3,piVar5);
if (iVar16 == 0) {
dprintf((byte *)s_ERROR__splash_Partition_table_no_8f6633f4,extraout_r1,param_3,piVar5);
iVar16 = -1;
uVar6 = extraout_r1_05;
goto LAB_8f62aaf0;
}
lVar18 = FUN_8f60688c(iVar16,extraout_r1);
piVar5 = (int *)((ulonglong)lVar18 >> 0x20);
uVar12 = (uint)lVar18 | (uint)piVar5;
if (lVar18 == 0) {
dprintf((byte *)s_ERROR__splash_Partition_invalid_8f663420,piVar5,param_3,0);
iVar16 = -1;
uVar6 = extraout_r1_06;
goto LAB_8f62aaf0;
}
uVar2 = FUN_8f606904(iVar16);
uVar17 = FUN_8f60db18(uVar2);
uVar19 = FUN_8f60d5cc((int)uVar17,(int)((ulonglong)uVar17 >> 0x20));
uVar3 = (uint)uVar19;
if (uVar3 == 0) {
dprintf((byte *)s_ERROR_splash_Partition_invalid_b_8f663444,(int *)(uVar19 >> 0x20),param_3,
uVar12);
iVar16 = -1;
uVar6 = extraout_r1_07;
goto LAB_8f62aaf0;
}
uVar17 = FUN_8f62fb78();
puVar4 = (undefined4 *)uVar17;
if (puVar4 == (undefined4 *)0x0) {
dprintf((byte *)s_ERROR__fb_config_is_not_allocate_8f663470,(int *)((ulonglong)uVar17 >> 0x20),
param_3,uVar12);
iVar16 = -1;
uVar6 = extraout_r1_13;
goto LAB_8f62aaf0;
}
puVar15 = (undefined4 *)*puVar4;
puVar14 = puVar15 + 0x300000;
puVar7 = puVar14;
uVar12 = uVar3;
uVar17 = FUN_8f60d85c((uint)lVar18,(uint)piVar5,(uint)puVar14,uVar3);
if ((int)uVar17 != 0) {
dprintf((byte *)s_ERROR__Cannot_read_splash_image_h_8f663494,(int *)((ulonglong)uVar17 >> 0x20),
puVar7,uVar12);
iVar16 = -1;
uVar6 = extraout_r1_10;
goto LAB_8f62aaf0;
}
uVar17 = FUN_8f62a6f8((char *)puVar14);
piVar5 = (int *)((ulonglong)uVar17 >> 0x20);
iVar16 = (int)uVar17;
if (iVar16 != 0) {
dprintf((byte *)s_ERROR__Splash_image_header_inval_8f6634bc,piVar5,puVar7,uVar12);
iVar16 = -1;
uVar6 = extraout_r1_11;
goto LAB_8f62aaf0;
}
if ((puVar15[0x300004] == 0) || (puVar15[0x300005] == 0)) {
piVar13 = (int *)puVar15[0x300002];
piVar8 = (int *)puVar4[1];
if (piVar13 <= piVar8) {
piVar8 = (int *)puVar15[0x300003];
piVar5 = (int *)puVar4[2];
if (piVar8 <= piVar5) {
uVar11 = (uint)(puVar4[4] * (int)piVar13 * (int)piVar8) >> 3;
uVar12 = (-uVar3 & uVar11 + 0x1ff + uVar3) - uVar3;
if (uVar3 == 0x200) {
uVar17 = FUN_8f60d85c((uint)(lVar18 + 0x200),(uint)((ulonglong)(lVar18 + 0x200) >> 0x20),
(uint)puVar15,uVar12);
uVar6 = (undefined4)((ulonglong)uVar17 >> 0x20);
if ((int)uVar17 != 0) {
FUN_8f62f508();
iVar16 = -1;
dprintf((byte *)s_ERROR__Cannot_read_splash_image_f_8f663334,extraout_r1_03,puVar15,
uVar12);
uVar6 = extraout_r1_04;
}
goto LAB_8f62aaf0;
}
lVar18 = lVar18 + (uVar19 & 0xffffffff);
pcVar9 = (char *)((int)puVar15 + uVar3 + 0xc00000);
uVar17 = FUN_8f60d85c((uint)lVar18,(uint)((ulonglong)lVar18 >> 0x20),(uint)pcVar9,uVar12);
piVar5 = (int *)((ulonglong)uVar17 >> 0x20);
if ((int)uVar17 == 0) {
FUN_8f63685c(puVar15,puVar15 + 0x300080,uVar11);
uVar6 = extraout_r1_00;
goto LAB_8f62aaf0;
}
goto LAB_8f62ac2c;
}
}
dprintf((byte *)s_Logo_config_greater_than_fb_conf_8f663364,piVar5,piVar8,piVar13);
iVar16 = -1;
uVar6 = extraout_r1_08;
}
else {
iVar10 = puVar15[0x300002];
uVar12 = (-uVar3 & uVar3 + puVar15[0x300005] * 0x200 + 0x1ff) - uVar3;
if (iVar10 == puVar4[1]) {
piVar8 = (int *)puVar4[2];
piVar5 = (int *)puVar15[0x300003];
if (piVar5 != piVar8) goto LAB_8f62ab50;
}
else {
LAB_8f62ab50:
FUN_8f62f508();
iVar10 = puVar4[1];
piVar8 = (int *)puVar4[2];
piVar5 = extraout_r1_01;
}
uVar11 = ((uint)puVar4[4] >> 3) * (int)piVar8 * iVar10 + 0xfff & 0xfffff000;
if (uVar11 < uVar12) {
dprintf((byte *)s_ERROR__Splash_image_size_invalid_8f6633a0,piVar5,uVar11,(int)piVar8 * iVar10
);
iVar16 = -1;
uVar6 = extraout_r1_12;
goto LAB_8f62aaf0;
}
lVar18 = lVar18 + (uVar19 & 0xffffffff);
pcVar9 = (char *)((int)puVar14 + uVar3);
uVar17 = FUN_8f60d85c((uint)lVar18,(uint)((ulonglong)lVar18 >> 0x20),(uint)pcVar9,uVar12);
piVar5 = (int *)((ulonglong)uVar17 >> 0x20);
if ((int)uVar17 == 0) {
FUN_8f62fbb8((int)puVar14,(int)(puVar15 + 0x300080));
uVar6 = extraout_r1_02;
goto LAB_8f62aaf0;
}
LAB_8f62ac2c:
dprintf((byte *)s_ERROR__Cannot_read_splash_image_f_8f663334,piVar5,pcVar9,uVar12);
iVar16 = -1;
uVar6 = extraout_r1_09;
}
LAB_8f62aaf0:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar16,uVar6,piVar1);
}
void FUN_8f62ac94(int *param_1,int *param_2)
{
int *piVar1;
int iVar2;
int *extraout_r1;
char *pcVar3;
int *piVar4;
undefined8 uVar5;
piVar1 = DAT_8f69d118;
DAT_8f67f354 = 1;
if (boot_into_recovery == 0) {
pcVar3 = (char *)0x8f6634ec;
}
else {
pcVar3 = s__recovery_8f6634e0;
}
piVar4 = DAT_8f69d118;
iVar2 = FUN_8f60e8d8(param_1,param_2,(byte *)pcVar3);
FUN_8f60ed6c(iVar2);
if (iVar2 != 0) {
piVar4 = &DAT_8f690408;
pcVar3 = (char *)0x0;
DAT_8f690408 = 1;
DAT_8f67f354 = 0;
}
uVar5 = FUN_8f60ed2c();
if ((int)uVar5 == 2) {
if (piVar1 == DAT_8f69d118) {
dprintf((byte *)s_Your_device_has_loaded_a_differe_8f663534,(int *)((ulonglong)uVar5 >> 0x20),
piVar1,DAT_8f69d118);
return;
}
}
else if ((int)uVar5 == 3) {
uVar5 = FUN_8f6100cc(2);
FUN_8f62a9bc((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),pcVar3);
dprintf((byte *)s_Your_device_has_failed_verificat_8f6634f4,extraout_r1,pcVar3,piVar4);
uVar5 = FUN_8f6104a8(30000);
if (piVar1 == DAT_8f69d118) {
FUN_8f624e04((int)uVar5,(int *)((ulonglong)uVar5 >> 0x20),piVar1);
return;
}
}
else if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),piVar1);
}
void FUN_8f62ad98(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
undefined uVar2;
uint uVar3;
undefined4 *puVar4;
int *extraout_r1;
int *piVar5;
undefined4 extraout_r1_00;
undefined4 uVar6;
int *extraout_r1_01;
undefined4 extraout_r1_02;
int *extraout_r1_03;
undefined4 extraout_r1_04;
undefined4 extraout_r1_05;
undefined4 extraout_r1_06;
undefined4 extraout_r1_07;
undefined4 extraout_r1_08;
undefined4 extraout_r1_09;
undefined4 extraout_r1_10;
undefined4 extraout_r1_11;
undefined4 extraout_r1_12;
undefined4 extraout_r1_13;
undefined4 *puVar7;
int *piVar8;
char *pcVar9;
int iVar10;
uint uVar11;
uint uVar12;
int *piVar13;
undefined4 *puVar14;
undefined4 *puVar15;
int iVar16;
undefined8 uVar17;
longlong lVar18;
ulonglong uVar19;
piVar1 = DAT_8f69d118;
piVar5 = DAT_8f69d118;
uVar17 = FUN_8f606760((byte *)s_splash_5_8f66356c);
iVar16 = (int)uVar17;
dprintf((byte *)s_ERROR__JUN____USB_disconnect____8f6633d0,(int *)((ulonglong)uVar17 >> 0x20),
param_3,piVar5);
if (iVar16 == 0) {
dprintf((byte *)s_ERROR__splash_Partition_table_no_8f6633f4,extraout_r1,param_3,piVar5);
iVar16 = -1;
uVar6 = extraout_r1_05;
goto LAB_8f62aecc;
}
lVar18 = FUN_8f60688c(iVar16,extraout_r1);
piVar5 = (int *)((ulonglong)lVar18 >> 0x20);
uVar12 = (uint)lVar18 | (uint)piVar5;
if (lVar18 == 0) {
dprintf((byte *)s_ERROR__splash_Partition_invalid_8f663420,piVar5,param_3,0);
iVar16 = -1;
uVar6 = extraout_r1_06;
goto LAB_8f62aecc;
}
uVar2 = FUN_8f606904(iVar16);
uVar17 = FUN_8f60db18(uVar2);
uVar19 = FUN_8f60d5cc((int)uVar17,(int)((ulonglong)uVar17 >> 0x20));
uVar3 = (uint)uVar19;
if (uVar3 == 0) {
dprintf((byte *)s_ERROR_splash_Partition_invalid_b_8f663444,(int *)(uVar19 >> 0x20),param_3,
uVar12);
iVar16 = -1;
uVar6 = extraout_r1_07;
goto LAB_8f62aecc;
}
uVar17 = FUN_8f62fb78();
puVar4 = (undefined4 *)uVar17;
if (puVar4 == (undefined4 *)0x0) {
dprintf((byte *)s_ERROR__fb_config_is_not_allocate_8f663470,(int *)((ulonglong)uVar17 >> 0x20),
param_3,uVar12);
iVar16 = -1;
uVar6 = extraout_r1_13;
goto LAB_8f62aecc;
}
puVar15 = (undefined4 *)*puVar4;
puVar14 = puVar15 + 0x300000;
puVar7 = puVar14;
uVar12 = uVar3;
uVar17 = FUN_8f60d85c((uint)lVar18,(uint)piVar5,(uint)puVar14,uVar3);
if ((int)uVar17 != 0) {
dprintf((byte *)s_ERROR__Cannot_read_splash_image_h_8f663494,(int *)((ulonglong)uVar17 >> 0x20),
puVar7,uVar12);
iVar16 = -1;
uVar6 = extraout_r1_10;
goto LAB_8f62aecc;
}
uVar17 = FUN_8f62a6f8((char *)puVar14);
piVar5 = (int *)((ulonglong)uVar17 >> 0x20);
iVar16 = (int)uVar17;
if (iVar16 != 0) {
dprintf((byte *)s_ERROR__Splash_image_header_inval_8f6634bc,piVar5,puVar7,uVar12);
iVar16 = -1;
uVar6 = extraout_r1_11;
goto LAB_8f62aecc;
}
if ((puVar15[0x300004] == 0) || (puVar15[0x300005] == 0)) {
piVar13 = (int *)puVar15[0x300002];
piVar8 = (int *)puVar4[1];
if (piVar13 <= piVar8) {
piVar8 = (int *)puVar15[0x300003];
piVar5 = (int *)puVar4[2];
if (piVar8 <= piVar5) {
uVar11 = (uint)(puVar4[4] * (int)piVar13 * (int)piVar8) >> 3;
uVar12 = (-uVar3 & uVar11 + 0x1ff + uVar3) - uVar3;
if (uVar3 == 0x200) {
uVar17 = FUN_8f60d85c((uint)(lVar18 + 0x200),(uint)((ulonglong)(lVar18 + 0x200) >> 0x20),
(uint)puVar15,uVar12);
uVar6 = (undefined4)((ulonglong)uVar17 >> 0x20);
if ((int)uVar17 != 0) {
FUN_8f62f508();
iVar16 = -1;
dprintf((byte *)s_ERROR__Cannot_read_splash_image_f_8f663334,extraout_r1_03,puVar15,
uVar12);
uVar6 = extraout_r1_04;
}
goto LAB_8f62aecc;
}
lVar18 = lVar18 + (uVar19 & 0xffffffff);
pcVar9 = (char *)((int)puVar15 + uVar3 + 0xc00000);
uVar17 = FUN_8f60d85c((uint)lVar18,(uint)((ulonglong)lVar18 >> 0x20),(uint)pcVar9,uVar12);
piVar5 = (int *)((ulonglong)uVar17 >> 0x20);
if ((int)uVar17 == 0) {
FUN_8f63685c(puVar15,puVar15 + 0x300080,uVar11);
uVar6 = extraout_r1_00;
goto LAB_8f62aecc;
}
goto LAB_8f62b008;
}
}
dprintf((byte *)s_Logo_config_greater_than_fb_conf_8f663364,piVar5,piVar8,piVar13);
iVar16 = -1;
uVar6 = extraout_r1_08;
}
else {
iVar10 = puVar15[0x300002];
uVar12 = (-uVar3 & uVar3 + puVar15[0x300005] * 0x200 + 0x1ff) - uVar3;
if (iVar10 == puVar4[1]) {
piVar8 = (int *)puVar4[2];
piVar5 = (int *)puVar15[0x300003];
if (piVar5 != piVar8) goto LAB_8f62af2c;
}
else {
LAB_8f62af2c:
FUN_8f62f508();
iVar10 = puVar4[1];
piVar8 = (int *)puVar4[2];
piVar5 = extraout_r1_01;
}
uVar11 = ((uint)puVar4[4] >> 3) * (int)piVar8 * iVar10 + 0xfff & 0xfffff000;
if (uVar11 < uVar12) {
dprintf((byte *)s_ERROR__Splash_image_size_invalid_8f6633a0,piVar5,uVar11,(int)piVar8 * iVar10
);
iVar16 = -1;
uVar6 = extraout_r1_12;
goto LAB_8f62aecc;
}
lVar18 = lVar18 + (uVar19 & 0xffffffff);
pcVar9 = (char *)((int)puVar14 + uVar3);
uVar17 = FUN_8f60d85c((uint)lVar18,(uint)((ulonglong)lVar18 >> 0x20),(uint)pcVar9,uVar12);
piVar5 = (int *)((ulonglong)uVar17 >> 0x20);
if ((int)uVar17 == 0) {
FUN_8f62fbb8((int)puVar14,(int)(puVar15 + 0x300080));
uVar6 = extraout_r1_02;
goto LAB_8f62aecc;
}
LAB_8f62b008:
dprintf((byte *)s_ERROR__Cannot_read_splash_image_f_8f663334,piVar5,pcVar9,uVar12);
iVar16 = -1;
uVar6 = extraout_r1_09;
}
LAB_8f62aecc:
if (piVar1 == DAT_8f69d118) {
return;
}
// WARNING: Subroutine does not return
FUN_8f635428(iVar16,uVar6,piVar1);
}
void FUN_8f62b070(undefined4 param_1,uint *param_2,byte *param_3,undefined4 param_4,
undefined4 param_5,int param_6)
{
int *piVar1;
undefined4 *puVar2;
uint uVar3;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
char *pcVar4;
int *in_lr;
undefined8 uVar5;
undefined8 uVar6;
undefined8 uVar7;
undefined8 uVar8;
piVar1 = DAT_8f69d118;
uVar5 = FUN_8f602f04(param_1,param_2);
uVar6 = FUN_8f602f04(param_2,(int)((ulonglong)uVar5 >> 0x20));
uVar7 = FUN_8f602f04(param_1,(int)((ulonglong)uVar6 >> 0x20));
uVar8 = FUN_8f602f04(param_5,(int)((ulonglong)uVar7 >> 0x20));
pcVar4 = (char *)uVar8;
puVar2 = (undefined4 *)FUN_8f628d98(param_3,(int)((ulonglong)uVar8 >> 0x20),(int)pcVar4);
uVar8 = FUN_8f61953c(param_2,puVar2,(uint)pcVar4,param_6);
if ((int)uVar8 != 0) {
dprintf((byte *)s_ERROR__Updating_Device_Tree_Fail_8f663578,(int *)((ulonglong)uVar8 >> 0x20),
pcVar4,param_6);
pcVar4 = s_app_aboot_aboot_c_8f662664;
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x41c);
}
uVar8 = FUN_8f636758((int)puVar2);
if (DAT_8f67f420 == 0) {
dprintf((byte *)s_The_dm_verity_is_not_started_in_e_8f6635a0,(int *)((ulonglong)uVar8 >> 0x20),
pcVar4,0);
uVar8 = FUN_8f610014(8);
FUN_8f62ad98((int)uVar8,(int)((ulonglong)uVar8 >> 0x20),pcVar4);
uVar8 = FUN_8f60f6d4();
if (DAT_8f6903e4 == 0) {
uVar8 = FUN_8f624e04((int)uVar8,(int *)((ulonglong)uVar8 >> 0x20),pcVar4);
}
}
if ((((DAT_8f6903f4 == 0) || (DAT_8f6903f8 == 0)) && (boot_into_recovery == 0)) &&
(((uVar8 = FUN_8f6267d0((int)uVar8,(int)((ulonglong)uVar8 >> 0x20)), (int)uVar8 != 0 &&
(DAT_8f67f33c != 0)) &&
(uVar8 = FUN_8f60dbb0((byte *)s_devinfo_8f65a2fc,'\x01'), (int)uVar8 != 0)))) {
pcVar4 = s_app_aboot_aboot_c_8f662664;
uVar8 = FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x451);
}
uVar8 = FUN_8f601b80((int)uVar8,(int)((ulonglong)uVar8 >> 0x20));
uVar8 = FUN_8f600884((int)uVar8,(int)((ulonglong)uVar8 >> 0x20),pcVar4);
DAT_8f67f324 = DAT_8f67f324 + 1;
if (DAT_8f67f324 == 1) {
uVar3 = FUN_8f625b9c();
uVar8 = CONCAT44(extraout_r1_00,uVar3);
}
FUN_8f602d14((int)uVar8,(int)((ulonglong)uVar8 >> 0x20));
FUN_8f62591c(3);
FUN_8f6262fc();
uVar8 = FUN_8f607f64((int *)0x1,extraout_r1);
if (*(int *)((int)uVar7 + 0x38) == 0x644d5241) {
if (piVar1 == DAT_8f69d118) {
FUN_8f6158f0(param_1,(int)uVar6);
return;
}
}
else {
uVar8 = (*(code *)uVar5)(0,param_4,(int)uVar6);
if (piVar1 == DAT_8f69d118) {
return;
}
}
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar8,(int)((ulonglong)uVar8 >> 0x20),piVar1);
}
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f62b2d8(void)
{
undefined uVar1;
int *piVar2;
int **ppiVar3;
uint uVar4;
int *extraout_r1;
int *piVar5;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 extraout_r1_03;
undefined4 extraout_r1_04;
undefined4 extraout_r1_05;
undefined4 extraout_r1_06;
undefined4 extraout_r1_07;
undefined4 extraout_r1_08;
undefined4 extraout_r1_09;
undefined4 extraout_r1_10;
undefined4 extraout_r1_11;
undefined4 extraout_r1_12;
undefined4 extraout_r1_13;
undefined4 extraout_r1_14;
undefined4 extraout_r1_15;
byte *pbVar6;
undefined4 uVar7;
code *pcVar8;
code *pcVar9;
undefined4 *puVar10;
int iVar11;
int *piVar12;
int iVar13;
undefined *puVar14;
uint *puVar15;
undefined4 uVar16;
int *piVar17;
undefined4 *puVar18;
int *in_lr;
undefined8 uVar19;
longlong lVar20;
uint local_68;
uint uStack_64;
int *local_50;
int *local_48;
uint local_40;
int *local_34;
uint *local_30;
int *local_2c;
local_34 = (int *)0x0;
local_30 = (uint *)0x0;
local_2c = DAT_8f69d118;
uVar19 = FUN_8f606760((byte *)s_bootselect_8f6635d4);
if ((int)uVar19 == -1) {
LAB_8f62b328:
iVar11 = boot_into_recovery;
if (boot_into_recovery != 0) goto LAB_8f62b3bc;
pbVar6 = (byte *)0x8;
FUN_8f636968((uint *)&DAT_8f691440,0,8);
uVar19 = FUN_8f62ef84((int)&DAT_8f691440,(byte *)0x8,pbVar6);
if ((int)uVar19 < 1) {
DAT_8f69144c = iVar11;
if ((int)uVar19 != 0) {
dprintf((byte *)s_failed_to_get_ffbm_cookie_8f663620,(int *)((ulonglong)uVar19 >> 0x20),
pbVar6,&DAT_8f69144c);
}
}
else {
DAT_8f69144c = 1;
}
}
else {
lVar20 = FUN_8f60688c((int)uVar19,(int)((ulonglong)uVar19 >> 0x20));
if (lVar20 == 0) goto LAB_8f62b328;
ppiVar3 = (int **)FUN_8f6366a8((int *)0x40,(int)DAT_8f6903e0 + 0x3fU & 0xffffffc0);
if (ppiVar3 == (int **)0x0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x545);
}
iVar11 = FUN_8f60d85c((uint)lVar20,(uint)((ulonglong)lVar20 >> 0x20),(uint)ppiVar3,
(uint)DAT_8f6903e0);
if (iVar11 != 0) {
LAB_8f62b9b4:
FUN_8f636758((int)ppiVar3);
goto LAB_8f62b328;
}
uVar7 = 0x6c655342;
if ((*ppiVar3 != (int *)0x6c655342) || (uVar7 = 0x10001, ppiVar3[1] != (int *)0x10001)) {
dprintf((byte *)s_Signature__0x_08x_or_version__0x_8f6635e0,*ppiVar3,ppiVar3[1],uVar7);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x555);
goto LAB_8f62b9b4;
}
piVar2 = ppiVar3[3];
if (-1 < (int)piVar2) goto LAB_8f62b9b4;
FUN_8f636758((int)ppiVar3);
if (((uint)piVar2 & 0x40000000) != 0) goto LAB_8f62b328;
boot_into_recovery = 1;
LAB_8f62b3bc:
DAT_8f69144c = 0;
}
uVar7 = 8;
uVar19 = FUN_8f636a7c((char *)0x8f6ff000,s_ANDROID__8f662c60,8);
if ((int)uVar19 == 0) {
puVar14 = (undefined *)0x8f6ff000;
LAB_8f62ba5c:
uVar16 = *(undefined4 *)(puVar14 + 0xc);
puVar15 = *(uint **)(puVar14 + 0x20);
uVar7 = FUN_8f6005c8((int)uVar19,(int)((ulonglong)uVar19 >> 0x20));
FUN_8f62b070(uVar16,puVar15,puVar14 + 0x40,uVar7,*(undefined4 *)(puVar14 + 0x14),
*(int *)(puVar14 + 0x10));
uVar16 = 0;
uVar7 = extraout_r1_03;
}
else {
if (boot_into_recovery == 0) {
iVar11 = boot_into_recovery;
uVar19 = FUN_8f606760((byte *)(s_fastboot_8f66403c + 4));
iVar13 = (int)uVar19;
lVar20 = FUN_8f60688c(iVar13,(int)((ulonglong)uVar19 >> 0x20));
if (lVar20 == 0) {
dprintf((byte *)s_ERROR__No_boot_partition_found_8f66363c,(int *)0x0,uVar7,iVar11);
uVar16 = 0xffffffff;
uVar7 = extraout_r1_01;
goto LAB_8f62b9e4;
}
}
else {
iVar11 = boot_into_recovery;
uVar19 = FUN_8f606760((byte *)s_recovery_8f65b074);
iVar13 = (int)uVar19;
lVar20 = FUN_8f60688c(iVar13,(int)((ulonglong)uVar19 >> 0x20));
if (lVar20 == 0) {
dprintf((byte *)s_ERROR__No_recovery_partition_fou_8f66365c,
(int *)((ulonglong)lVar20 >> 0x20),0,iVar11);
uVar16 = 0xffffffff;
uVar7 = extraout_r1_12;
goto LAB_8f62b9e4;
}
}
uStack_64 = (uint)((ulonglong)lVar20 >> 0x20);
local_68 = (uint)lVar20;
puVar14 = &DAT_8f690440;
uVar1 = FUN_8f606904(iVar13);
FUN_8f60db18(uVar1);
piVar2 = DAT_8f6903e0;
uVar19 = FUN_8f60d85c(local_68,uStack_64,(uint)&DAT_8f690440,(uint)DAT_8f6903e0);
if ((int)uVar19 != 0) {
dprintf((byte *)s_ERROR__Cannot_read_boot_image_he_8f6632e8,(int *)((ulonglong)uVar19 >> 0x20)
,puVar14,piVar2);
uVar16 = 0xffffffff;
uVar7 = extraout_r1_10;
goto LAB_8f62b9e4;
}
uVar7 = 8;
uVar19 = FUN_8f636a7c(&DAT_8f690440,s_ANDROID__8f662c60,8);
piVar12 = (int *)((ulonglong)uVar19 >> 0x20);
if ((int)uVar19 != 0) {
dprintf((byte *)s_ERROR__Invalid_boot_image_header_8f663680,piVar12,uVar7,piVar2);
uVar16 = 0xffffffff;
uVar7 = extraout_r1_11;
goto LAB_8f62b9e4;
}
if ((DAT_8f690464 != (int *)0x0) && (DAT_8f690464 != DAT_8f6903e0)) {
if ((int *)0x1000 < DAT_8f690464) {
dprintf((byte *)s_ERROR__Invalid_page_size_8f6636a4,piVar12,DAT_8f6903e0,DAT_8f690464);
uVar16 = 0xffffffff;
uVar7 = extraout_r1_14;
goto LAB_8f62b9e4;
}
DAT_8f690430 = (int *)((int)DAT_8f690464 + -1);
DAT_8f6903e0 = DAT_8f690464;
}
local_40 = ~(uint)DAT_8f690430;
local_50 = (int *)(local_40 & (int)DAT_8f690430 + (int)DAT_8f690448);
if (local_50 < DAT_8f690448) {
local_50 = (int *)0xffffffff;
}
local_48 = (int *)((int)DAT_8f690430 + (int)DAT_8f690450 & local_40);
if (local_48 < DAT_8f690450) {
local_48 = (int *)0xffffffff;
}
local_40 = (int)DAT_8f690430 + DAT_8f690458 & local_40;
piVar2 = local_48;
uVar4 = DAT_8f690458;
if (local_40 < DAT_8f690458) {
local_40 = 0xffffffff;
piVar2 = (int *)0xffffffff;
uVar4 = 0;
}
piVar2 = (int *)FUN_8f601228(piVar2,uVar4);
FUN_8f63685c(piVar2,(undefined4 *)&DAT_8f690440,(int)DAT_8f6903e0);
DAT_8f69067f = 0;
pcVar8 = (code *)((int)local_50 + (int)DAT_8f6903e0 + (int)local_48);
pcVar9 = pcVar8 + local_40;
iVar11 = (uint)CARRY4((uint)local_50,(uint)DAT_8f6903e0) +
(uint)CARRY4((int)local_50 + (int)DAT_8f6903e0,(uint)local_48) +
(uint)CARRY4((uint)pcVar8,local_40);
if ((iVar11 != 0 || (code *)0xfffffffe < pcVar9) &&
(iVar11 != 0 || pcVar9 != (code *)0xffffffff)) {
dprintf((byte *)s_Integer_overflow_detected_in_boo_8f6636c0,(int *)0x5e1,
s_app_aboot_aboot_c_8f662664,iVar11);
uVar16 = 0xffffffff;
uVar7 = extraout_r1_07;
goto LAB_8f62b9e4;
}
iVar11 = (int)local_50 + (int)DAT_8f6903e0;
piVar12 = local_48;
FUN_8f629d24(0xffffffff,(uint)local_50);
piVar17 = (int *)((int)local_48 + local_40 + iVar11);
pcVar8 = (code *)~(uint)piVar2;
if (pcVar8 < piVar17) {
LAB_8f62b9d4:
dprintf((byte *)s_Boot_image_buffer_address_overla_8f663874,extraout_r1,piVar12,pcVar8);
uVar16 = 0xffffffff;
uVar7 = extraout_r1_02;
goto LAB_8f62b9e4;
}
if (piVar2 < thunk_FUN_8f600020) {
piVar12 = (int *)((int)piVar2 + (int)piVar17);
pcVar8 = thunk_FUN_8f600020;
if (thunk_FUN_8f600020 < piVar12) goto LAB_8f62b9d4;
}
else {
pcVar8 = (code *)0x8f9fffff;
if (piVar2 < (int *)0x8fa00000) goto LAB_8f62b9d4;
}
uVar19 = FUN_8f607f64((int *)&DAT_00000004,extraout_r1);
uVar19 = FUN_8f601264((int)uVar19,(int)((ulonglong)uVar19 >> 0x20));
if ((int *)((int)uVar19 - (int)DAT_8f6903e0) < piVar17) {
dprintf((byte *)s_booimage_size_is_greater_than_DD_8f663704,(int *)((ulonglong)uVar19 >> 0x20)
,piVar12,DAT_8f6903e0);
uVar16 = 0xffffffff;
uVar7 = extraout_r1_08;
goto LAB_8f62b9e4;
}
pcVar8 = (code *)((int)piVar2 + (int)DAT_8f6903e0);
piVar12 = (int *)((int)piVar17 - (int)DAT_8f6903e0);
uVar19 = FUN_8f60d85c((uint)(lVar20 + ZEXT48(DAT_8f6903e0)),
(uint)(lVar20 + ZEXT48(DAT_8f6903e0) >> 0x20),(uint)pcVar8,(uint)piVar12);
piVar5 = (int *)((ulonglong)uVar19 >> 0x20);
if ((int)uVar19 != 0) {
dprintf((byte *)s_ERROR__Cannot_read_boot_image_8f663734,piVar5,pcVar8,piVar12);
uVar16 = 0xffffffff;
uVar7 = extraout_r1_09;
goto LAB_8f62b9e4;
}
uVar19 = FUN_8f607f64((int *)&DAT_00000005,piVar5);
iVar11 = FUN_8f626498((int)uVar19,(int)((ulonglong)uVar19 >> 0x20));
if ((iVar11 != 0) && (piVar12 = DAT_8f67f350, DAT_8f67f350 == (int *)0x0)) {
pcVar8 = (code *)((int)piVar2 + (int)piVar17);
pcVar9 = (code *)~(uint)pcVar8;
if (pcVar9 < DAT_8f6903e0) {
LAB_8f62bb90:
dprintf((byte *)s_Signature_read_buffer_address_ov_8f6638b0,(int *)pcVar9,pcVar8,
DAT_8f6903e0);
uVar16 = 0xffffffff;
uVar7 = extraout_r1_06;
goto LAB_8f62b9e4;
}
if (pcVar8 < thunk_FUN_8f600020) {
pcVar9 = thunk_FUN_8f600020;
if (thunk_FUN_8f600020 < pcVar8 + (int)DAT_8f6903e0) goto LAB_8f62bb90;
}
else {
pcVar9 = (code *)0x8f9fffff;
if (pcVar8 < (code *)0x8fa00000) goto LAB_8f62bb90;
}
piVar12 = DAT_8f6903e0;
uVar19 = FUN_8f60d85c((uint)(lVar20 + ZEXT48(piVar17)),
(uint)(lVar20 + ZEXT48(piVar17) >> 0x20),(uint)pcVar8,(uint)DAT_8f6903e0
);
if ((int)uVar19 != 0) {
dprintf((byte *)s_ERROR__Cannot_read_boot_image_si_8f663754,
(int *)((ulonglong)uVar19 >> 0x20),pcVar8,piVar12);
uVar16 = 0xffffffff;
uVar7 = extraout_r1_13;
goto LAB_8f62b9e4;
}
FUN_8f62ac94(piVar2,piVar17);
}
uVar19 = FUN_8f60ed2c();
if ((int)uVar19 == 1) {
dprintf((byte *)s_Your_device_has_been_unlocked_an_8f663780,(int *)((ulonglong)uVar19 >> 0x20)
,pcVar8,piVar12);
}
iVar11 = FUN_8f60e054((int)DAT_8f67f350);
if (iVar11 == 0) {
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x666);
}
uVar19 = FUN_8f658230((char *)((int)piVar2 + (int)DAT_8f6903e0),(char *)DAT_8f690448);
piVar12 = DAT_8f6903e0;
local_68 = (uint)uVar19;
if (local_68 == 0) {
puVar18 = (undefined4 *)((int)piVar2 + (int)DAT_8f6903e0);
iVar11 = FUN_8f636e98((byte *)puVar18,(byte *)s_UNCOMPRESSED_IMG_8f6637e0,(int *)0x10);
piVar17 = DAT_8f690448;
if (iVar11 == 0) {
local_30 = (uint *)puVar18[4];
puVar18 = (undefined4 *)((int)piVar2 + (int)(piVar12 + 5));
local_68 = 0x14;
}
}
else {
iVar11 = FUN_8f601264(local_68,(int)((ulonglong)uVar19 >> 0x20));
puVar18 = (undefined4 *)((int)piVar2 + (int)piVar17 + (int)piVar12);
pbVar6 = (byte *)((iVar11 - (int)piVar17) - (int)DAT_8f6903e0);
puVar10 = puVar18;
uVar19 = FUN_8f6580c8((int)piVar2 + (int)DAT_8f6903e0,(byte *)DAT_8f690448,(byte *)puVar18,
pbVar6,(byte **)&local_30,(byte **)&local_34);
if ((int)uVar19 != 0) {
dprintf((byte *)s_decompressing_kernel_image_faile_8f6637b8,
(int *)((ulonglong)uVar19 >> 0x20),puVar10,pbVar6);
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x678);
}
local_68 = 0;
piVar17 = local_34;
}
FUN_8f628a5c((int)&DAT_8f690440,(uint)(puVar18[0xe] == 0x644d5241),(char *)piVar17);
uVar19 = FUN_8f602f38(DAT_8f69044c,extraout_r1_00);
DAT_8f69044c = (int *)uVar19;
uVar19 = FUN_8f602f38(DAT_8f690454,(int)((ulonglong)uVar19 >> 0x20));
DAT_8f690454 = (undefined4 *)uVar19;
DAT_8f690460 = (int **)FUN_8f602f38(DAT_8f690460,(int)((ulonglong)uVar19 >> 0x20));
piVar12 = (int *)((uint)((int)piVar17 + (int)DAT_8f690430) & ~(uint)DAT_8f690430);
pcVar8 = (code *)~(uint)DAT_8f69044c;
if (piVar12 < piVar17) {
piVar12 = (int *)0xffffffff;
}
piVar17 = DAT_8f690430;
pcVar9 = (code *)DAT_8f69044c;
if (piVar12 <= pcVar8) {
if (DAT_8f69044c < (int *)0x8f600000) {
pcVar8 = thunk_FUN_8f600020;
piVar17 = (int *)((int)piVar12 + (int)DAT_8f69044c);
if ((int *)((int)piVar12 + (int)DAT_8f69044c) < (int *)0x8f600001) {
LAB_8f62b7b0:
uVar19 = FUN_8f629c80((uint)DAT_8f69044c,(uint)piVar12,(char *)pcVar8);
piVar17 = (int *)((ulonglong)uVar19 >> 0x20);
if (((int)uVar19 == 0) &&
(piVar17 = local_48, pcVar9 = (code *)(int *)~(uint)DAT_8f690454,
local_48 <= (int *)~(uint)DAT_8f690454)) {
if (DAT_8f690454 < (undefined4 *)0x8f600000) {
pcVar8 = (code *)((int)local_48 + (int)DAT_8f690454);
pcVar9 = thunk_FUN_8f600020;
piVar17 = local_48;
pcVar9 = pcVar9;
if (pcVar8 < (int *)0x8f600001) {
LAB_8f62b7fc:
uVar19 = FUN_8f629c80((uint)DAT_8f690454,(uint)local_48,(char *)pcVar8);
piVar17 = (int *)((ulonglong)uVar19 >> 0x20);
if ((int)uVar19 == 0) {
FUN_8f63685c(DAT_8f69044c,puVar18,(int)piVar12);
piVar12 = DAT_8f690450;
FUN_8f63685c(DAT_8f690454,
(undefined4 *)((int)piVar2 + (int)local_50 + (int)DAT_8f6903e0),
(int)DAT_8f690450);
pcVar8 = (code *)~(uint)DAT_8f690460;
if (local_50 <= pcVar8) {
if (DAT_8f690460 < (int **)0x8f600000) {
pcVar8 = thunk_FUN_8f600020;
piVar12 = (int *)((int)local_50 + (int)DAT_8f690460);
if (piVar12 < (int *)0x8f600001) {
LAB_8f62b874:
uVar19 = FUN_8f629c80((uint)DAT_8f690460,(uint)local_50,(char *)piVar12);
local_50 = (int *)((ulonglong)uVar19 >> 0x20);
if ((int)uVar19 == 0) {
puVar15 = local_30;
ppiVar3 = DAT_8f690460;
uVar19 = FUN_8f6184cc((int)piVar2 + local_68 + (int)DAT_8f6903e0,
(int)DAT_8f690448,local_30,DAT_8f690460);
piVar2 = (int *)((ulonglong)uVar19 >> 0x20);
if ((int)uVar19 == 0) {
dprintf((byte *)s_ERROR__Appended_Device_Tree_Blob_8f663848,piVar2,
puVar15,ppiVar3);
uVar16 = 0xffffffff;
uVar7 = extraout_r1_15;
goto LAB_8f62b9e4;
}
if (((boot_into_recovery == 0) || (DAT_8f67f350 != (int *)0x0)) ||
(DAT_8f67f354 != 0)) {
puVar14 = &DAT_8f690440;
}
else {
uVar19 = FUN_8f600a9c((int)uVar19,piVar2);
puVar14 = &DAT_8f690440;
}
goto LAB_8f62ba5c;
}
}
}
else {
pcVar8 = (code *)0x8f9fffff;
if ((int **)0x8f9fffff < DAT_8f690460) goto LAB_8f62b874;
}
}
dprintf((byte *)s_Device_tree_addresses_are_not_va_8f663820,local_50,piVar12,
pcVar8);
uVar16 = 0xffffffff;
uVar7 = extraout_r1_04;
goto LAB_8f62b9e4;
}
}
}
else {
pcVar9 = (code *)0x8f9fffff;
piVar17 = local_48;
if ((undefined4 *)0x8f9fffff < DAT_8f690454) goto LAB_8f62b7fc;
}
}
}
}
else {
pcVar8 = (code *)0x8f9fffff;
if ((int *)0x8f9fffff < DAT_8f69044c) goto LAB_8f62b7b0;
}
}
dprintf((byte *)s_kernel_ramdisk_addresses_are_not_8f6637f4,piVar17,pcVar8,pcVar9);
uVar16 = 0xffffffff;
uVar7 = extraout_r1_05;
}
LAB_8f62b9e4:
if (local_2c != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar16,uVar7,local_2c);
}
return;
}
void FUN_8f62bcec(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int *piVar1;
int iVar2;
int *piVar3;
undefined4 *puVar4;
char *pcVar5;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
int *piVar6;
int *piVar7;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 extraout_r1_03;
undefined4 extraout_r1_04;
undefined4 extraout_r1_05;
undefined4 extraout_r1_06;
undefined4 extraout_r1_07;
undefined4 extraout_r1_08;
undefined4 extraout_r1_09;
undefined4 extraout_r1_10;
undefined4 extraout_r1_11;
undefined4 extraout_r1_12;
undefined4 extraout_r1_13;
undefined4 extraout_r1_14;
undefined4 extraout_r1_15;
undefined4 uVar8;
uint uVar9;
code *pcVar10;
code *pcVar11;
int iVar12;
undefined *puVar13;
uint *puVar14;
code *pcVar15;
undefined4 uVar16;
undefined4 *puVar17;
int *piVar18;
int *piVar19;
int *in_lr;
ulonglong uVar20;
undefined8 uVar21;
ulonglong uVar22;
int local_3c;
piVar1 = DAT_8f69d118;
piVar19 = DAT_8f69d118;
iVar2 = FUN_8f626460(param_1,param_2);
if (iVar2 == 0) {
uVar21 = FUN_8f614524();
iVar2 = (int)uVar21;
if (iVar2 == 0) {
dprintf((byte *)s_ERROR__Partition_table_not_found_8f6629c0,(int *)((ulonglong)uVar21 >> 0x20)
,param_3,piVar19);
uVar16 = 0xffffffff;
uVar8 = extraout_r1_13;
goto LAB_8f62bd70;
}
if (boot_into_recovery == 0) {
iVar12 = boot_into_recovery;
uVar21 = FUN_8f638f3c(iVar2,(byte *)(s_fastboot_8f66403c + 4));
local_3c = (int)uVar21;
if (local_3c == 0) {
dprintf((byte *)s_ERROR__No_boot_partition_found_8f66363c,(int *)((ulonglong)uVar21 >> 0x20)
,param_3,iVar12);
uVar16 = 0xffffffff;
uVar8 = extraout_r1_02;
goto LAB_8f62bd70;
}
}
else {
iVar12 = boot_into_recovery;
uVar21 = FUN_8f638f3c(iVar2,(byte *)s_recovery_8f65b074);
local_3c = (int)uVar21;
if (local_3c == 0) {
dprintf((byte *)s_ERROR__No_recovery_partition_fou_8f66365c,
(int *)((ulonglong)uVar21 >> 0x20),param_3,iVar12);
uVar16 = 0xffffffff;
uVar8 = extraout_r1_15;
goto LAB_8f62bd70;
}
}
piVar19 = (int *)&DAT_8f690440;
uVar8 = 0;
uVar21 = FUN_8f614564(local_3c,(undefined4 *)0x0,(int *)0x0,(undefined4 *)&DAT_8f690440,
DAT_8f6903e0);
if ((int)uVar21 != 0) {
dprintf((byte *)s_ERROR__Cannot_read_boot_image_he_8f6632e8,(int *)((ulonglong)uVar21 >> 0x20)
,uVar8,piVar19);
uVar16 = 0xffffffff;
uVar8 = extraout_r1_10;
goto LAB_8f62bd70;
}
uVar8 = 8;
uVar21 = FUN_8f636a7c(&DAT_8f690440,s_ANDROID__8f662c60,8);
piVar3 = (int *)((ulonglong)uVar21 >> 0x20);
if ((int)uVar21 != 0) goto LAB_8f62c1b4;
if (DAT_8f690464 != DAT_8f6903e0) {
dprintf((byte *)s_ERROR__Invalid_boot_image_pagesi_8f6638f0,DAT_8f6903e0,DAT_8f690464,piVar19)
;
uVar16 = 0xffffffff;
uVar8 = extraout_r1_05;
goto LAB_8f62bd70;
}
piVar3 = (int *)FUN_8f601228(0,DAT_8f6903e0);
piVar19 = DAT_8f6903e0;
FUN_8f63685c(piVar3,(undefined4 *)&DAT_8f690440,(int)DAT_8f6903e0);
FUN_8f628a5c((int)&DAT_8f690440,0,(char *)piVar19);
uVar21 = FUN_8f602f38(DAT_8f69044c,extraout_r1_00);
DAT_8f69044c = (undefined4 *)uVar21;
uVar21 = FUN_8f602f38(DAT_8f690454,(int)((ulonglong)uVar21 >> 0x20));
DAT_8f690454 = (undefined4 *)uVar21;
DAT_8f690460 = FUN_8f602f38(DAT_8f690460,(int)((ulonglong)uVar21 >> 0x20));
uVar9 = ~DAT_8f690430;
pcVar15 = (code *)(uVar9 & (uint)(DAT_8f690448 + DAT_8f690430));
puVar17 = (undefined4 *)((int)DAT_8f690450 + DAT_8f690430 & uVar9);
if (pcVar15 < DAT_8f690448) {
pcVar15 = (code *)0xffffffff;
}
piVar19 = (int *)((int)DAT_8f690458 + DAT_8f690430 & uVar9);
DAT_8f69067f = 0;
if (puVar17 < DAT_8f690450) {
puVar17 = (undefined4 *)0xffffffff;
}
pcVar10 = (code *)~(uint)DAT_8f69044c;
if (piVar19 < DAT_8f690458) {
piVar19 = (int *)0xffffffff;
}
piVar6 = DAT_8f690458;
pcVar11 = (code *)DAT_8f69044c;
if (pcVar15 <= pcVar10) {
if (DAT_8f69044c < (undefined4 *)0x8f600000) {
pcVar10 = thunk_FUN_8f600020;
piVar6 = (int *)(pcVar15 + (int)DAT_8f69044c);
if (pcVar15 + (int)DAT_8f69044c < (int *)0x8f600001) {
LAB_8f62bee8:
uVar21 = FUN_8f629c80((uint)DAT_8f69044c,(uint)pcVar15,(char *)pcVar10);
piVar6 = (int *)((ulonglong)uVar21 >> 0x20);
if (((int)uVar21 == 0) &&
(pcVar11 = (code *)(undefined4 *)~(uint)DAT_8f690454,
puVar17 <= (undefined4 *)~(uint)DAT_8f690454)) {
if (DAT_8f690454 < (undefined4 *)0x8f600000) {
pcVar10 = (code *)((int)puVar17 + (int)DAT_8f690454);
pcVar11 = thunk_FUN_8f600020;
if (pcVar10 < thunk_FUN_8f600020) {
LAB_8f62bf30:
uVar21 = FUN_8f629c80((uint)DAT_8f690454,(uint)puVar17,(char *)pcVar10);
piVar6 = (int *)((ulonglong)uVar21 >> 0x20);
if ((int)uVar21 == 0) {
pcVar10 = (code *)((int)DAT_8f6903e0 + (int)pcVar15) + (int)puVar17;
pcVar11 = pcVar10 + (int)piVar19;
iVar2 = (uint)CARRY4((uint)DAT_8f6903e0,(uint)pcVar15) +
(uint)CARRY4((uint)(code *)((int)DAT_8f6903e0 + (int)pcVar15),
(uint)puVar17) + (uint)CARRY4((uint)pcVar10,(uint)piVar19);
if ((iVar2 != 0 || (code *)0xfffffffe < pcVar11) &&
(iVar2 != 0 || pcVar11 != (code *)0xffffffff)) {
dprintf((byte *)s_Integer_overflow_detected_in_boo_8f663940,(int *)0x0,pcVar11,
iVar2);
uVar16 = 0xffffffff;
uVar8 = extraout_r1_12;
goto LAB_8f62bd70;
}
piVar6 = (int *)(pcVar15 + (int)DAT_8f6903e0);
piVar18 = (int *)((int)piVar6 + (int)puVar17 + (int)piVar19);
uVar9 = DAT_8f690460 + 0x70a00000;
if (0x3fffff < uVar9) {
uVar21 = FUN_8f629c80(DAT_8f690460,0,(char *)pcVar11);
piVar6 = (int *)((ulonglong)uVar21 >> 0x20);
if ((int)uVar21 == 0) {
uVar21 = FUN_8f607f64((int *)&DAT_00000004,piVar6);
if ((int *)~(uint)DAT_8f6903e0 < piVar18) {
dprintf((byte *)s_Integer_overflow_detected_in_boo_8f663978,(int *)0x7b5,
s_boot_linux_from_flash_8f663e20,(int *)~(uint)DAT_8f6903e0);
uVar16 = 0xffffffff;
uVar8 = extraout_r1_07;
goto LAB_8f62bd70;
}
uVar21 = FUN_8f601264((int)uVar21,(int)((ulonglong)uVar21 >> 0x20));
if ((uint)uVar21 < (uint)((int)piVar18 + (int)DAT_8f6903e0)) {
dprintf((byte *)s_bootimage_size_is_greater_than_D_8f6639b4,
(int *)((ulonglong)uVar21 >> 0x20),DAT_8f6903e0,
(int)piVar18 + (int)DAT_8f6903e0);
uVar16 = 0xffffffff;
uVar8 = extraout_r1_08;
goto LAB_8f62bd70;
}
puVar17 = (undefined4 *)((int)piVar3 + (int)DAT_8f6903e0);
piVar6 = DAT_8f6903e0;
uVar21 = FUN_8f614564(local_3c,(undefined4 *)0x0,DAT_8f6903e0,puVar17,
(undefined4 *)((int)piVar18 - (int)DAT_8f6903e0));
piVar7 = (int *)((ulonglong)uVar21 >> 0x20);
if ((int)uVar21 != 0) {
dprintf((byte *)s_ERROR__Cannot_read_boot_image_8f663734,piVar7,piVar6,
puVar17);
uVar16 = 0xffffffff;
uVar8 = extraout_r1_09;
goto LAB_8f62bd70;
}
uVar21 = FUN_8f607f64((int *)&DAT_00000005,piVar7);
iVar2 = FUN_8f626498((int)uVar21,(int)((ulonglong)uVar21 >> 0x20));
if ((iVar2 != 0) && (DAT_8f67f350 == 0)) {
puVar17 = (undefined4 *)((int)piVar3 + (int)piVar18);
piVar6 = piVar18;
uVar21 = FUN_8f614564(local_3c,(undefined4 *)0x0,piVar18,puVar17,
DAT_8f6903e0);
if ((int)uVar21 != 0) {
dprintf((byte *)s_ERROR__Cannot_read_boot_image_si_8f663754,
(int *)((ulonglong)uVar21 >> 0x20),piVar6,puVar17);
uVar16 = 0xffffffff;
uVar8 = extraout_r1_14;
goto LAB_8f62bd70;
}
FUN_8f62ac94(piVar3,piVar18);
}
if (DAT_8f690458 != (int *)0x0) {
if ((int *)~(uint)DAT_8f6903e0 < piVar19) {
dprintf((byte *)s_ERROR__Integer_overflow_in_boot_i_8f6639e4,
(int *)s_boot_linux_from_flash_8f663e20,0x7de,DAT_8f690458);
uVar16 = 0xffffffff;
uVar8 = extraout_r1_11;
goto LAB_8f62bd70;
}
FUN_8f6353a0(in_lr,(byte *)s_ASSERT_FAILED_at___s__d____s_8f659820,
(int *)s_app_aboot_aboot_c_8f662664,0x7e3);
}
FUN_8f63685c(DAT_8f69044c,(undefined4 *)((int)piVar3 + (int)DAT_8f6903e0),
(int)DAT_8f690448);
puVar17 = DAT_8f690450;
puVar4 = FUN_8f63685c(DAT_8f690454,
(undefined4 *)
((int)piVar3 + (int)(pcVar15 + (int)DAT_8f6903e0)),
(int)DAT_8f690450);
uVar22 = FUN_8f626498(puVar4,extraout_r1_01);
uVar8 = (undefined4)(uVar22 >> 0x20);
pcVar5 = (char *)uVar22;
if (pcVar5 != (char *)0x0) {
pcVar5 = s_ANDROID_BOOT__8f67f340;
uVar20 = CONCAT44(uVar8,0x8f67f340);
if (DAT_8f67f350 == 0) {
if (DAT_8f67f354 == 0) {
puVar13 = &DAT_8f690440;
}
else {
uVar20 = FUN_8f62a054((undefined4 *)s_ANDROID_BOOT__8f67f340,uVar8,
puVar17);
puVar13 = &DAT_8f690440;
}
goto LAB_8f62bd3c;
}
}
uVar20 = uVar22 & 0xffffffff00000000 | ZEXT48(pcVar5);
puVar13 = &DAT_8f690440;
goto LAB_8f62bd3c;
}
}
dprintf((byte *)s_Device_tree_addresses_are_not_va_8f663820,piVar6,pcVar11,uVar9);
uVar16 = 0xffffffff;
uVar8 = extraout_r1_04;
goto LAB_8f62bd70;
}
}
}
else {
pcVar11 = (code *)0x8f9fffff;
if ((undefined4 *)0x8f9fffff < DAT_8f690454) goto LAB_8f62bf30;
}
}
}
}
else {
pcVar10 = (code *)0x8f9fffff;
if ((undefined4 *)0x8f9fffff < DAT_8f69044c) goto LAB_8f62bee8;
}
}
dprintf((byte *)s_kernel_ramdisk_addresses_are_not_8f6637f4,piVar6,pcVar10,pcVar11);
uVar16 = 0xffffffff;
uVar8 = extraout_r1_03;
}
else {
uVar8 = 8;
uVar20 = FUN_8f636a7c((char *)0x8f6ff000,s_ANDROID__8f662c60,8);
piVar3 = (int *)(uVar20 >> 0x20);
if ((int)uVar20 != 0) {
LAB_8f62c1b4:
dprintf((byte *)s_ERROR__Invalid_boot_image_header_8f663680,piVar3,uVar8,piVar19);
uVar16 = 0xffffffff;
uVar8 = extraout_r1_06;
goto LAB_8f62bd70;
}
puVar13 = (undefined *)0x8f6ff000;
LAB_8f62bd3c:
uVar16 = *(undefined4 *)(puVar13 + 0xc);
puVar14 = *(uint **)(puVar13 + 0x20);
uVar8 = FUN_8f6005c8((int)uVar20,(int)(uVar20 >> 0x20));
FUN_8f62b070(uVar16,puVar14,puVar13 + 0x40,uVar8,*(undefined4 *)(puVar13 + 0x14),
*(int *)(puVar13 + 0x10));
uVar16 = 0;
uVar8 = extraout_r1;
}
LAB_8f62bd70:
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(uVar16,uVar8,piVar1);
}
return;
}
void FUN_8f62c608(undefined4 param_1,undefined4 param_2)
{
int *piVar1;
undefined uVar2;
uint uVar3;
int *piVar4;
undefined4 extraout_r1;
undefined4 extraout_r1_00;
undefined4 extraout_r1_01;
undefined4 extraout_r1_02;
undefined4 extraout_r1_03;
int *extraout_r1_04;
undefined4 extraout_r1_05;
undefined4 extraout_r1_06;
undefined4 extraout_r1_07;
undefined4 extraout_r1_08;
int *extraout_r1_09;
undefined4 extraout_r1_10;
int *extraout_r1_11;
undefined4 extraout_r1_12;
int *extraout_r1_13;
int *extraout_r1_14;
undefined4 extraout_r1_15;
int *extraout_r1_16;
undefined4 extraout_r1_17;
undefined4 extraout_r1_18;
undefined4 extraout_r1_19;
undefined4 extraout_r1_20;
undefined4 extraout_r1_21;
undefined4 extraout_r1_22;
undefined4 extraout_r1_23;
undefined4 extraout_r1_24;
undefined4 extraout_r1_25;
undefined4 uVar5;
int *piVar6;
undefined4 uVar7;
undefined4 *puVar8;
char *pcVar9;
int iVar10;
undefined4 *puVar11;
uint uVar12;
int *piVar13;
uint uVar14;
undefined *puVar15;
int iVar16;
undefined4 *puVar17;
undefined4 *puVar18;
longlong lVar19;
ulonglong uVar20;
undefined8 uVar21;
piVar6 = DAT_8f69d118;
uVar21 = FUN_8f626460(param_1,param_2);
piVar1 = DAT_8f69d118;
if ((int)uVar21 == 0) {
if (piVar6 == DAT_8f69d118) {
piVar4 = DAT_8f69d118;
uVar21 = FUN_8f614524();
if ((int)uVar21 == 0) {
dprintf((byte *)s_ERROR__Partition_table_not_found_8f6629c0,
(int *)((ulonglong)uVar21 >> 0x20),piVar6,piVar4);
iVar16 = -1;
uVar5 = extraout_r1_07;
}
else {
uVar21 = FUN_8f638f3c((int)uVar21,(byte *)s_splash_8f6632bc);
iVar10 = (int)uVar21;
if (iVar10 == 0) {
dprintf((byte *)s_ERROR__splash_Partition_not_foun_8f6632c4,
(int *)((ulonglong)uVar21 >> 0x20),piVar6,piVar4);
iVar16 = -1;
uVar5 = extraout_r1_08;
}
else {
puVar15 = &DAT_8f6901ac;
uVar5 = 0;
uVar21 = FUN_8f614564(iVar10,(undefined4 *)0x0,(int *)0x0,(undefined4 *)&DAT_8f6901ac,
(undefined4 *)0x200);
if ((int)uVar21 == 0) {
uVar21 = FUN_8f62a6f8(&DAT_8f6901ac);
iVar16 = (int)uVar21;
if (iVar16 == 0) {
uVar21 = FUN_8f62fb78();
uVar5 = (undefined4)((ulonglong)uVar21 >> 0x20);
piVar6 = (int *)uVar21;
if (piVar6 != (int *)0x0) {
if ((DAT_8f6901bc == 0) || (DAT_8f6901c0 == 0)) {
piVar4 = (int *)piVar6[1];
puVar15 = &DAT_8f6901ac;
if ((piVar4 < DAT_8f6901b4) ||
(puVar15 = (undefined *)piVar6[2], puVar15 < DAT_8f6901b8)) {
dprintf((byte *)s_Logo_config_greater_than_fb_conf_8f663364,piVar4,piVar6,
puVar15);
iVar16 = -1;
uVar5 = extraout_r1_01;
}
else {
puVar11 = (undefined4 *)*piVar6;
piVar4 = (int *)(((uint)piVar6[4] >> 3) * (int)piVar4 * (int)puVar15 + 0xfff &
0xfffff000);
piVar6 = (int *)(((uint)(piVar6[4] * (int)DAT_8f6901b4 * (int)DAT_8f6901b8) >> 3
) + 0x1ff & 0xfffffe00);
if (piVar4 < piVar6) {
dprintf((byte *)s_ERROR__Splash_image_size_invalid_8f6633a0,piVar4,piVar6,
puVar11);
iVar16 = -1;
uVar5 = extraout_r1_02;
}
else {
uVar7 = 0;
uVar21 = FUN_8f614564(iVar10 + 0x4000,(undefined4 *)0x0,(int *)0x0,puVar11,
piVar6);
uVar5 = (undefined4)((ulonglong)uVar21 >> 0x20);
if ((int)uVar21 != 0) {
FUN_8f62f508();
iVar16 = -1;
dprintf((byte *)s_ERROR__Cannot_read_splash_image_f_8f663334,extraout_r1_04,
uVar7,puVar11);
uVar5 = extraout_r1_05;
}
}
}
}
else {
puVar11 = (undefined4 *)(*piVar6 + 0xc00000);
if ((DAT_8f6901b4 != (int *)piVar6[1]) || (DAT_8f6901b8 != (undefined *)piVar6[2])
) {
FUN_8f62f508();
}
uVar5 = 0;
puVar8 = puVar11;
uVar21 = FUN_8f614564(iVar10 + 0x4000,(undefined4 *)0x0,(int *)0x0,puVar11,
(undefined4 *)(DAT_8f6901c0 << 9));
iVar16 = (int)uVar21;
if (iVar16 == 0) {
FUN_8f62fbb8((int)&DAT_8f6901ac,(int)puVar11);
uVar5 = extraout_r1;
}
else {
dprintf((byte *)s_ERROR__Cannot_read_splash_image_f_8f663334,
(int *)((ulonglong)uVar21 >> 0x20),uVar5,puVar8);
iVar16 = -1;
uVar5 = extraout_r1_06;
}
}
}
}
else {
dprintf((byte *)s_ERROR__Boot_image_header_invalid_8f663310,
(int *)((ulonglong)uVar21 >> 0x20),uVar5,puVar15);
iVar16 = -1;
uVar5 = extraout_r1_00;
}
}
else {
dprintf((byte *)s_ERROR__Cannot_read_boot_image_he_8f6632e8,
(int *)((ulonglong)uVar21 >> 0x20),uVar5,puVar15);
iVar16 = -1;
uVar5 = extraout_r1_03;
}
}
}
if (piVar1 != DAT_8f69d118) {
// WARNING: Subroutine does not return
FUN_8f635428(iVar16,uVar5,piVar1);
}
return;
}
LAB_8f62c65c:
// WARNING: Subroutine does not return
FUN_8f635428((int)uVar21,(int)((ulonglong)uVar21 >> 0x20),piVar6);
}
if (piVar6 != DAT_8f69d118) goto LAB_8f62c65c;
puVar11 = &DAT_8f67f328;
puVar8 = (undefined4 *)(uint)(DAT_8f6903f8 == 0);
DAT_8f67f328 = puVar8;
if (DAT_8f6903ec == 0) {
iVar16 = DAT_8f6903fc;
if ((DAT_8f6903fc == 0) || (puVar11 = puVar8, puVar8 == (undefined4 *)0x0)) {
uVar21 = FUN_8f606760((byte *)s_splash_8f6632bc);
iVar10 = (int)uVar21;
dprintf((byte *)s_ERROR__JUN____USB_disconnect____8f6633d0,(int *)((ulonglong)uVar21 >> 0x20),
iVar16,puVar11);
piVar6 = extraout_r1_09;
}
else {
uVar21 = FUN_8f606760((byte *)s_splash_2_8f663b30);
iVar10 = (int)uVar21;
dprintf((byte *)s_ERROR__JUN____USB_connect____8f663b3c,(int *)((ulonglong)uVar21 >> 0x20),
iVar16,puVar8);
piVar6 = extraout_r1_16;
puVar11 = puVar8;
}
}
else {
iVar16 = DAT_8f6903ec;
uVar21 = FUN_8f606760((byte *)s_splash_3_8f663b08);
iVar10 = (int)uVar21;
dprintf((byte *)s_ERROR___Booting_Fail___8f663b14,(int *)((ulonglong)uVar21 >> 0x20),iVar16,
puVar11);
piVar6 = extraout_r1_13;
}
if (iVar10 == 0) {
dprintf((byte *)s_ERROR__splash_Partition_table_no_8f6633f4,piVar6,iVar16,puVar11);
iVar16 = -1;
uVar5 = extraout_r1_17;
goto LAB_8f62c424;
}
lVar19 = FUN_8f60688c(iVar10,piVar6);
piVar6 = (int *)((ulonglong)lVar19 >> 0x20);
uVar12 = (uint)lVar19 | (uint)piVar6;
if (lVar19 == 0) {
dprintf((byte *)s_ERROR__splash_Partition_invalid_8f663420,piVar6,iVar16,0);
iVar16 = -1;
uVar5 = extraout_r1_18;
goto LAB_8f62c424;
}
uVar2 = FUN_8f606904(iVar10);
uVar21 = FUN_8f60db18(uVar2);
uVar20 = FUN_8f60d5cc((int)uVar21,(int)((ulonglong)uVar21 >> 0x20));
uVar3 = (uint)uVar20;
if (uVar3 == 0) {
dprintf((byte *)s_ERROR_splash_Partition_invalid_b_8f663444,(int *)(uVar20 >> 0x20),iVar16,
uVar12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment