Skip to content

Instantly share code, notes, and snippets.

@mouseos
Created August 3, 2023 14:48
Show Gist options
  • Save mouseos/b1ab023a71ce94286e8e02dfa2d24db1 to your computer and use it in GitHub Desktop.
Save mouseos/b1ab023a71ce94286e8e02dfa2d24db1 to your computer and use it in GitHub Desktop.
z581klのaboot
This file has been truncated, but you can view the full file.
#include "emmc_appsboot.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_8f626b28();
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_8f626b28();
do {
// WARNING: Do nothing block with infinite loop
} while( true );
}
// WARNING: Removing unreachable block (ram,0x8f600184)
void FUN_8f600140(void)
{
FUN_8f614c94(2,0,0x78b0000);
return;
}
void FUN_8f600188(void)
{
undefined local_9c [4];
undefined4 local_98;
undefined4 local_94;
undefined4 local_90;
undefined2 local_8c;
undefined4 local_88;
undefined local_83;
undefined4 local_80;
undefined4 uStack_7c;
undefined4 uStack_78;
undefined4 local_74;
undefined4 uStack_70;
undefined4 uStack_6c;
undefined4 uStack_68;
undefined4 local_64;
undefined4 uStack_60;
undefined4 uStack_5c;
undefined4 uStack_58;
undefined4 local_54;
undefined4 local_50;
undefined4 uStack_4c;
undefined4 uStack_48;
undefined4 uStack_44;
undefined4 local_40;
undefined4 uStack_3c;
undefined4 uStack_38;
undefined4 uStack_34;
undefined4 local_30;
int local_2c;
local_74 = DAT_8f661768;
uStack_70 = DAT_8f66176c;
uStack_6c = DAT_8f661770;
uStack_68 = DAT_8f661774;
local_2c = DAT_8f731d80;
local_64 = DAT_8f661778;
uStack_60 = DAT_8f66177c;
uStack_5c = DAT_8f661780;
uStack_58 = DAT_8f661784;
local_54 = DAT_8f661788;
local_50 = DAT_8f66178c;
uStack_4c = DAT_8f661790;
uStack_48 = DAT_8f661794;
uStack_44 = DAT_8f661798;
local_40 = DAT_8f66179c;
uStack_3c = DAT_8f6617a0;
uStack_38 = DAT_8f6617a4;
uStack_34 = DAT_8f6617a8;
local_80 = DAT_8f6617b0;
uStack_7c = DAT_8f6617b4;
uStack_78 = DAT_8f6617b8;
local_30 = DAT_8f6617ac;
FUN_8f61d7d8(&local_74,3);
FUN_8f61d878(&local_50,3);
FUN_8f61d878(&local_80,1);
local_88 = 192000000;
local_94 = 0x7824900;
local_90 = 0x7824000;
local_9c[0] = 1;
local_83 = 1;
local_8c = 2;
local_98 = 0xaa;
DAT_8f731d78 = FUN_8f60ea5c(local_9c);
if (DAT_8f731d78 == 0) {
local_83 = 0;
local_9c[0] = 2;
local_88 = 200000000;
local_94 = 0x7864900;
local_98 = 0xfd;
local_90 = 0x7864000;
DAT_8f731d78 = FUN_8f60ea5c(local_9c);
if (DAT_8f731d78 == 0) {
FUN_8f63cbb4(s_mmc_init_failed__8f6617d0);
FUN_8f63cce8();
}
}
if (local_2c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f600350)
void FUN_8f600314(void)
{
return;
}
void FUN_8f600354(void)
{
int iVar1;
char cVar2;
int iVar3;
undefined4 uVar4;
iVar1 = DAT_8f731d80;
iVar3 = FUN_8f603b68();
if (iVar3 == 0) {
uVar4 = 0x55;
}
else {
uVar4 = 0x71;
}
if (DAT_8f720400 == '\0') {
FUN_8f604d48(uVar4,0,0,3,0,0);
FUN_8f613d18(10000);
DAT_8f720400 = '\x01';
}
cVar2 = FUN_8f604ddc(uVar4);
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(cVar2 == '\0');
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f600420)
void FUN_8f6003ec(void)
{
FUN_8f6399cc();
return;
}
void FUN_8f600424(void)
{
int iVar1;
uint uVar2;
uint uVar3;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f639b8c();
uVar3 = FUN_8f639be4();
if (uVar3 != 0) {
uVar3 = (uint)((uVar2 & 0xdf) == 0x80);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f60047c(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f63cbb4(s_Going_down_for_shutdown__8f66181c);
DAT_8f720401 = 1;
FUN_8f60232c();
FUN_8f639aec(4);
_DAT_004ab000 = 0;
FUN_8f613cc4(5000);
FUN_8f63cbb4(s_shutdown_failed_8f661838);
FUN_8f63cce8();
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f600528(undefined4 param_1)
{
int iVar1;
int iVar2;
undefined4 uVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f625e60();
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
return;
}
}
else {
uVar3 = FUN_8f60f608();
if (iVar1 == DAT_8f731d80) {
FUN_8f63e068(param_1,0xd,&DAT_8f66184c,uVar3);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f6005d4)
void FUN_8f6005a0(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f600608)
void FUN_8f6005d8(void)
{
return;
}
void FUN_8f60060c(int *param_1)
{
uint uVar1;
int iVar2;
iVar2 = DAT_8f731d80;
if (*param_1 - 0x108U < 0x1a) {
uVar1 = 1 << (*param_1 - 0x108U & 0xff);
if ((uVar1 & 0x2002400) != 0) {
param_1[7] = 1;
goto LAB_8f6006a0;
}
if ((uVar1 & 0x4005) != 0) {
param_1[7] = 0;
goto LAB_8f6006a0;
}
}
FUN_8f63cbb4(s_Platform_type___u_is_not_support_8f661850);
FUN_8f63cce8();
LAB_8f6006a0:
if (iVar2 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f6006f0)
void FUN_8f6006bc(void)
{
FUN_8f614efc();
return;
}
// WARNING: Removing unreachable block (ram,0x8f600734)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f6006f4(void)
{
_DAT_0860065c = 0;
return;
}
void FUN_8f600738(void)
{
int iVar1;
uint uVar2;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f6397a8(0x88f);
FUN_8f639958(0x88f,uVar2 & 0x1f);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70((uVar2 << 0x13) >> 0x18);
}
void FUN_8f600788(void)
{
int iVar1;
undefined4 uVar2;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f61a290();
FUN_8f639c3c();
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
// WARNING: Removing unreachable block (ram,0x8f600800)
void FUN_8f6007cc(void)
{
FUN_8f63203c();
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f600804(uint param_1)
{
int iVar1;
uint uVar2;
int iVar3;
iVar1 = DAT_8f731d80;
DAT_8f720401 = 1;
FUN_8f60232c();
uVar2 = param_1;
if (param_1 != 1) {
FUN_8f61a290(2);
if ((param_1 & 0xfffffffd) == 0x77665500) {
uVar2 = 1;
}
else {
uVar2 = 7;
}
}
_DAT_0860065c = param_1;
FUN_8f639a4c(uVar2);
iVar3 = FUN_8f619a44();
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failed_to_halt_pmic_arbiter___d_8f661874);
}
_DAT_004ab000 = 0;
FUN_8f613cc4(5000);
if (iVar1 == DAT_8f731d80) {
FUN_8f63cbb4(s_Rebooting_failed_8f661898);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6008d0(void)
{
int iVar1;
uint uVar2;
uint uVar3;
uint uVar4;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f639b50();
uVar3 = FUN_8f639be4();
uVar4 = FUN_8f6397a8(0x21310);
if (uVar3 != 0) {
if ((uVar2 & 1) == 0) {
uVar3 = (uVar4 & 1 ^ 1) & ~uVar2 >> 7;
}
else {
uVar3 = 0;
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
void FUN_8f600944(void)
{
int iVar1;
byte bVar2;
uint uVar3;
iVar1 = DAT_8f731d80;
bVar2 = FUN_8f639b50();
uVar3 = FUN_8f639be4();
FUN_8f6397a8(0x21310);
if (uVar3 != 0) {
if ((bVar2 & 1) == 0) {
uVar3 = (uint)~(int)(char)bVar2 >> 0x1f;
}
else {
uVar3 = 0;
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
void FUN_8f6009b4(void)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f61e0bc();
if (iVar2 == 0) {
iVar2 = FUN_8f625f08();
}
else {
FUN_8f61eb68();
iVar2 = FUN_8f625f08();
}
if (iVar2 == 0) {
iVar2 = FUN_8f60a3d8();
}
else {
FUN_8f604b48(1);
iVar2 = FUN_8f60a3d8();
}
if ((iVar2 != 0) && (iVar2 = FUN_8f60a348(), iVar2 < 0)) {
FUN_8f63cbb4(s_Failed_to_unload_App_for_rpmb_8f6618ac);
FUN_8f63cce8();
}
iVar2 = FUN_8f624bac();
if (iVar2 < 0) {
FUN_8f63cbb4(s_RPMB_uninit_failed_8f6618cc);
FUN_8f63cce8();
}
FUN_8f604b48(1);
FUN_8f60f148(DAT_8f731d78);
FUN_8f60cd6c(DAT_8f731d78);
if (iVar1 == DAT_8f731d80) {
FUN_8f60a584();
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f600ae0(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f6095ac(3,0x97);
_DAT_078db0a0 = _DAT_078db0a0 | 0x80;
_DAT_078db140 = _DAT_078db140 | 0x2000000;
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f600b7c)
void FUN_8f600b40(void)
{
FUN_8f6095ac(3,0x98);
return;
}
void FUN_8f600b80(void)
{
int iVar1;
int iVar2;
uint uVar3;
iVar1 = DAT_8f731d80;
if (DAT_8f720401 == '\0') {
iVar2 = FUN_8f614f3c();
if (iVar2 - 1U < 0x15) {
uVar3 = 1 << (iVar2 - 1U & 0xff) & 0x100481;
if (uVar3 != 0) {
uVar3 = 1;
}
goto LAB_8f600bb0;
}
}
uVar3 = 0;
LAB_8f600bb0:
FUN_8f63cbb4(s__DISPLAY__Target_cont_splash__d_8f6618e0,uVar3);
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f600c4c)
void FUN_8f600c10(undefined param_1)
{
DAT_8f720401 = param_1;
return;
}
void FUN_8f600c50(void)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f614f3c();
if (iVar2 == 0xb) {
iVar2 = FUN_8f603b68(0xb);
if (iVar2 != 0) {
iVar2 = 1;
}
}
else {
iVar2 = 0;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
return;
}
void FUN_8f600ca0(void)
{
int iVar1;
int iVar2;
undefined4 uVar3;
int iVar4;
int iVar5;
char *pcVar6;
longlong lVar7;
longlong lVar8;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f625f08();
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
return;
}
}
else {
uVar3 = FUN_8f607810(&DAT_8f661904);
lVar7 = FUN_8f60793c();
if (lVar7 == 0) {
if (iVar1 == DAT_8f731d80) {
pcVar6 = s_Error__ssd_partition_not_found_8f661908;
LAB_8f600da0:
FUN_8f63cbb4(pcVar6);
return;
}
}
else {
lVar8 = FUN_8f6078c4(uVar3);
iVar2 = (int)lVar8;
if (lVar8 == 0) {
if (iVar1 == DAT_8f731d80) {
pcVar6 = s_Error__invalid_ssd_partition_siz_8f661928;
goto LAB_8f600da0;
}
}
else {
iVar4 = FUN_8f63e150(0x40,iVar2 + 0x3fU & 0xffffffc0);
if (iVar4 == 0) {
if (iVar1 == DAT_8f731d80) {
pcVar6 = s_Error__allocating_memory_for_ssd_8f66194c;
goto LAB_8f600da0;
}
}
else {
iVar5 = FUN_8f60f940((int)lVar7,(int)((ulonglong)lVar7 >> 0x20),iVar4,iVar2);
if (iVar5 == 0) {
FUN_8f604954(1);
FUN_8f61968c(iVar4,iVar2);
FUN_8f604b48(1);
}
else {
FUN_8f63cbb4(s_Error__cannot_read_data_8f661978);
}
if (iVar1 == DAT_8f731d80) {
FUN_8f63e200(iVar4);
return;
}
}
}
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f600e04(void)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f625f08();
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
return;
}
}
else {
FUN_8f604954(1);
if (iVar1 == DAT_8f731d80) {
FUN_8f600ca0();
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f600e9c)
void FUN_8f600e68(void)
{
return;
}
void FUN_8f600ea0(void)
{
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_8f731d80;
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;
FUN_8f61eb24(&local_30);
if (local_c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f600f34(void)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
int *piVar5;
int *piVar6;
bool bVar7;
iVar1 = DAT_8f731d80;
FUN_8f615814(0,0);
FUN_8f63cbb4(s__s___8f661994,s_config_pcb_id_gpios_8f6617bc);
if (PTR_s_hw_id_8f70f684 != (undefined *)0x0) {
piVar6 = &DAT_8f70f688;
do {
iVar2 = *piVar6;
if (iVar2 != 0) {
piVar5 = piVar6 + -1;
do {
FUN_8f604d48(iVar2,0,0,0,0,0);
FUN_8f627600(10);
iVar2 = piVar5[2];
piVar5 = piVar5 + 1;
} while (iVar2 != 0);
}
piVar5 = piVar6 + 6;
piVar6 = piVar6 + 7;
} while (*piVar5 != 0);
}
FUN_8f63964c();
iVar2 = FUN_8f6399cc();
if (iVar2 != 0) {
FUN_8f639694(0x116,1);
}
iVar2 = FUN_8f600354();
if (iVar2 != 0) {
FUN_8f639694(0x115,1);
}
FUN_8f600188();
iVar3 = FUN_8f606a18();
iVar2 = DAT_8f731d78;
if (iVar3 != 0) {
iVar3 = 2;
do {
FUN_8f63cbb4(s_Error_reading_the_partition_tabl_8f66199c);
FUN_8f6069d4();
if (*(int *)(iVar2 + 0x50) - 3U < 2) {
if (iVar3 == 0) {
FUN_8f63cbb4(s_Disable_HS200_8f6619e4);
*(undefined *)(iVar2 + 0x110) = 0;
FUN_8f60eb64(iVar2);
}
else {
if (iVar3 == 1) {
FUN_8f63cbb4(s_Disable_HS400_8f6619d4);
*(undefined *)(iVar2 + 0x111) = 0;
}
FUN_8f60eb64(iVar2);
}
}
iVar4 = FUN_8f606a18();
if (iVar4 == 0) break;
if (iVar3 == 0) {
FUN_8f63cbb4(s_Error_reading_the_partition_tabl_8f6619f4);
FUN_8f63cce8();
break;
}
bVar7 = iVar3 != 0;
iVar3 = iVar3 + -1;
} while (bVar7);
}
FUN_8f61d9a8();
FUN_8f63ca58(0xfa);
iVar2 = FUN_8f625ed0();
if (iVar2 != 0) {
FUN_8f600ea0();
}
FUN_8f604954(1);
iVar2 = FUN_8f61b8c0();
if (iVar2 < 0) {
FUN_8f63cbb4(s_Failed_to_initialize_qseecom__er_8f661a1c);
FUN_8f63cce8();
iVar2 = FUN_8f61b764();
}
else {
iVar2 = FUN_8f61b764();
}
if (iVar2 < 0) {
FUN_8f63cbb4(s_Failed_to_start_qseecom__error____8f661a48);
FUN_8f63cce8();
}
iVar2 = FUN_8f624844();
if (iVar2 < 0) {
FUN_8f63cbb4(s_RPMB_init_failed_8f661a6c);
FUN_8f63cce8();
}
iVar2 = FUN_8f60a1f8();
if (iVar2 < 0) {
FUN_8f63cbb4(s_Failed_to_load_App_for_verified_8f661a80);
FUN_8f63cce8();
}
if (iVar1 == DAT_8f731d80) {
FUN_8f60a540();
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f601288)
void FUN_8f601254(void)
{
return;
}
void FUN_8f60128c(undefined4 param_1)
{
undefined *puVar1;
int iVar2;
undefined *puVar3;
undefined *puVar4;
int iVar5;
undefined *puVar6;
undefined **ppuVar7;
iVar2 = DAT_8f731d80;
ppuVar7 = &PTR_s_hw_id_8f70f684;
if (PTR_s_hw_id_8f70f684 != (undefined *)0x0) {
iVar5 = 0;
puVar3 = PTR_s_hw_id_8f70f684;
do {
puVar3 = (undefined *)FUN_8f63e6f4(puVar3,param_1);
if (puVar3 == (undefined *)0x0) {
puVar4 = (undefined *)(&DAT_8f70f688)[iVar5 * 7];
ppuVar7 = &PTR_s_hw_id_8f70f684 + iVar5 * 7;
puVar6 = puVar4;
puVar1 = puVar3;
while (puVar4 != (undefined *)0x0) {
iVar5 = FUN_8f604ddc(puVar4);
puVar4 = ppuVar7[2];
if (iVar5 != 0) {
iVar5 = 1;
}
puVar6 = (undefined *)((uint)puVar1 | iVar5 << ((uint)puVar3 & 0xff));
puVar3 = puVar3 + 1;
ppuVar7 = ppuVar7 + 1;
puVar1 = puVar6;
}
goto LAB_8f60133c;
}
ppuVar7 = ppuVar7 + 7;
puVar3 = *ppuVar7;
iVar5 = iVar5 + 1;
} while (puVar3 != (undefined *)0x0);
}
puVar6 = (undefined *)0xffffffff;
LAB_8f60133c:
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(puVar6);
}
void FUN_8f60135c(void)
{
int iVar1;
int iVar2;
int iVar3;
int *piVar4;
uint uVar5;
uint uVar6;
undefined *puVar7;
int *piVar8;
iVar1 = DAT_8f731d80;
puVar7 = PTR_s_hw_id_8f70f684;
if (PTR_s_hw_id_8f70f684 != (undefined *)0x0) {
puVar7 = (undefined *)0x0;
uVar5 = 0;
piVar8 = &DAT_8f70f688;
do {
iVar3 = *piVar8;
if (iVar3 != 0) {
piVar4 = piVar8 + -1;
uVar6 = uVar5;
do {
uVar5 = uVar6 + 1;
iVar2 = FUN_8f604ddc(iVar3);
iVar3 = piVar4[2];
piVar4 = piVar4 + 1;
if (iVar2 != 0) {
iVar2 = 1;
}
puVar7 = (undefined *)((uint)puVar7 | iVar2 << (uVar6 & 0xff));
uVar6 = uVar5;
} while (iVar3 != 0);
}
piVar4 = piVar8 + 6;
piVar8 = piVar8 + 7;
} while (*piVar4 != 0);
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(puVar7);
}
return;
}
void FUN_8f601408(void)
{
int iVar1;
uint uVar2;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f6397a8(0x21310);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2 & 1 ^ 1);
}
void FUN_8f601450(undefined4 param_1,undefined4 param_2)
{
int iVar1;
int iVar2;
int iVar3;
undefined auStack_6c [16];
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
int local_48;
int local_40;
int local_24;
local_24 = DAT_8f731d80;
iVar1 = FUN_8f6055b0();
if (iVar1 == 0) {
FUN_8f63cce8();
}
iVar1 = FUN_8f605710();
if (iVar1 != 0) {
iVar3 = 0;
do {
FUN_8f6056c0(auStack_6c,iVar3);
if (((local_48 == 0xe) && (local_40 == 1)) &&
(iVar2 = FUN_8f61d0cc(param_1,param_2,local_5c,local_58,local_54,local_50), iVar2 != 0)) {
FUN_8f63cbb4(s_Failed_to_add_secondary_banks_me_8f661b2c);
goto LAB_8f601508;
}
iVar3 = iVar3 + 1;
} while (iVar3 != iVar1);
}
iVar2 = 0;
LAB_8f601508:
if (local_24 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
// WARNING: Removing unreachable block (ram,0x8f601588)
void FUN_8f601550(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6015c0)
void FUN_8f60158c(void)
{
return;
}
void FUN_8f6015c4(int param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
*(undefined4 *)(param_1 + 0x68) = 1;
FUN_8f613d18(1);
*(undefined4 *)(param_1 + 0x68) = 0;
if (iVar1 == DAT_8f731d80) {
FUN_8f613d18(1);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f60161c(int param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
*(undefined4 *)(param_1 + 100) = 4;
FUN_8f613d18(1);
*(undefined4 *)(param_1 + 100) = 5;
if (iVar1 == DAT_8f731d80) {
FUN_8f613d18(0x200);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f601674(int param_1,undefined4 param_2,undefined4 param_3)
{
int iVar1;
int iVar2;
uint uVar3;
uint uVar4;
uint uVar5;
undefined4 *puVar6;
uint *puVar7;
undefined4 *puVar8;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f603b68();
if (iVar2 == 0) {
*(undefined4 *)(param_1 + 0x68) = 1;
FUN_8f613cc4(1);
*(undefined4 *)(param_1 + 0x68) = 0;
FUN_8f613cc4(1);
}
else {
FUN_8f6015c4(param_1);
}
FUN_8f623844(param_1,param_2,param_3);
uVar3 = FUN_8f603b68();
if (uVar3 == 0) {
puVar8 = (undefined4 *)(param_1 + 0x70);
puVar6 = (undefined4 *)(param_1 + 0x20);
puVar7 = (uint *)(param_1 + 0xc0);
do {
uVar3 = uVar3 + 1;
FUN_8f6015c4(param_1);
*puVar8 = 0x34;
*puVar6 = 1;
*puVar6 = 5;
*puVar6 = 0xf;
FUN_8f613d18(500);
FUN_8f60161c(param_1);
uVar5 = *puVar7 & 1;
uVar4 = uVar5 ^ 1;
if (2 < uVar3) {
uVar4 = 0;
}
} while (uVar4 != 0);
if (uVar5 == 0) {
do {
uVar5 = uVar5 + 1;
FUN_8f6015c4(param_1);
*puVar8 = 0x14;
*puVar6 = 1;
*puVar6 = 5;
FUN_8f613d18(3);
*puVar6 = 0xf;
FUN_8f613d18(500);
FUN_8f60161c(param_1);
uVar4 = *puVar7 & 1;
uVar3 = uVar4 ^ 1;
if (2 < uVar5) {
uVar3 = 0;
}
} while (uVar3 != 0);
if (uVar4 == 0) {
do {
uVar4 = uVar4 + 1;
FUN_8f6015c4(param_1);
*puVar8 = 4;
*puVar6 = 1;
*puVar6 = 5;
FUN_8f613d18(3);
*puVar6 = 0xf;
FUN_8f613d18(500);
FUN_8f60161c(param_1);
uVar3 = *puVar7 & 1;
uVar5 = uVar3 ^ 1;
if (2 < uVar4) {
uVar5 = 0;
}
} while (uVar5 != 0);
goto LAB_8f601758;
}
}
uVar3 = 1;
}
else {
*(undefined4 *)(param_1 + 100) = 0xd;
*(undefined4 *)(param_1 + 0x70) = 0x34;
*(undefined4 *)(param_1 + 0x5c) = 0x10;
*(undefined4 *)(param_1 + 0x60) = 0x1a;
*(undefined4 *)(param_1 + 0x20) = 1;
FUN_8f613d18(300);
*(undefined4 *)(param_1 + 0x20) = 5;
FUN_8f613d18(300);
*(undefined4 *)(param_1 + 0x20) = 0xf;
FUN_8f613d18(300);
*(undefined4 *)(param_1 + 0x20) = 7;
FUN_8f613d18(300);
*(undefined4 *)(param_1 + 0x20) = 0xf;
FUN_8f613d18(1000);
uVar3 = *(uint *)(param_1 + 0xc0) & 1;
if (uVar3 == 0) {
uVar4 = 0;
do {
uVar4 = uVar4 + 1;
FUN_8f613d18(100);
uVar3 = *(uint *)(param_1 + 0xc0) & 1;
uVar5 = uVar3 ^ 1;
if (4 < uVar4) {
uVar5 = 0;
}
} while (uVar5 != 0);
}
}
LAB_8f601758:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
void FUN_8f601910(short *param_1,undefined4 param_2)
{
int iVar1;
iVar1 = DAT_8f731d80;
if (*param_1 != 2) {
FUN_8f63a03c(3);
FUN_8f63bf08(param_2);
FUN_8f63bde0(param_2);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f601970(int param_1,int param_2)
{
int iVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
iVar1 = DAT_8f731d80;
if (*(int *)(param_2 + 0x1c) == 2) {
if (*(char *)(param_2 + 0x287) == '\0') {
uVar4 = 2;
}
else {
uVar4 = 3;
}
}
else if (*(char *)(param_2 + 0x287) == '\0') {
uVar4 = 1;
}
else {
uVar4 = 3;
}
iVar3 = *(int *)(param_2 + 0x25c);
*(undefined4 *)(iVar3 + 0x18) = 1000;
if (param_1 == 0) {
iVar3 = FUN_8f600b80();
if (iVar3 == 0) {
FUN_8f6046bc(uVar4);
FUN_8f60457c();
FUN_8f6045f0();
FUN_8f604368(0);
param_1 = iVar3;
}
}
else {
FUN_8f604368(param_1);
FUN_8f604634();
FUN_8f6043f4();
param_1 = FUN_8f618c9c(1);
if (param_1 == 0) {
iVar2 = FUN_8f601674(*(undefined4 *)(param_2 + 0x2ac),*(undefined4 *)(param_2 + 0x294),iVar3);
if (iVar2 == 0) {
FUN_8f63cbb4(s_Not_able_to_enable_master_pll_8f661bf0);
}
iVar2 = FUN_8f603b68();
if ((((iVar2 != 0) && (*(char *)(param_2 + 0x287) != '\0')) &&
(iVar2 = FUN_8f603c6c(), iVar2 == 0)) &&
(iVar2 = FUN_8f601674(*(undefined4 *)(param_2 + 0x2b0),*(undefined4 *)(param_2 + 0x29c),
iVar3), iVar2 == 0)) {
FUN_8f63cbb4(s_Not_able_to_enable_second_pll_8f661c10);
}
FUN_8f604750(uVar4,*(undefined *)(param_2 + 0x288),*(undefined *)(iVar3 + 0x2b),
*(undefined *)(iVar3 + 0x2c),*(undefined *)(iVar3 + 0x2d));
param_1 = 0;
}
else {
FUN_8f63cbb4(s__s__Failed_to_restore_MDP_securi_8f661bc4,s_target_panel_clock_8f661d0c);
FUN_8f60457c();
FUN_8f6045f0();
FUN_8f604368(0);
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(param_1);
}
void FUN_8f601afc(int param_1,int param_2,int param_3)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
char cVar5;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f614f3c();
iVar3 = FUN_8f614f7c();
iVar4 = FUN_8f603b68();
if (iVar4 == 0) {
if (iVar3 == 0x40 && iVar2 == 0xb) {
DAT_8f70f784 = 0x13;
}
}
else {
DAT_8f70f7b4 = 0x19;
DAT_8f70f79c = 0x42;
}
if (param_1 == 0) {
iVar2 = FUN_8f600b80();
if (iVar2 != 0) goto LAB_8f601c98;
FUN_8f604d9c(DAT_8f70f7b4,0);
if ((*(int *)(param_3 + 0x290) != 0) && (iVar2 = FUN_8f603b68(), iVar2 == 0)) {
FUN_8f604d9c(DAT_8f70f784,0);
}
iVar2 = FUN_8f603b68();
if (iVar2 == 0) goto LAB_8f601c98;
}
else {
FUN_8f604d48(0x45,0,1,0,3,1);
FUN_8f604d48(0x14,0,1,0,3,1);
FUN_8f604d9c(0x14,2);
FUN_8f613cc4(3);
FUN_8f604d9c(0x45,2);
iVar2 = FUN_8f603544();
if ((iVar2 != 1) && (iVar2 = FUN_8f603544(), iVar2 < 0x32)) {
FUN_8f613cc4(0xf);
FUN_8f604d9c(0x45,0);
FUN_8f613d18(5);
FUN_8f604d9c(0x45,2);
}
if ((*(int *)(param_3 + 0x290) != 0) && (iVar2 = FUN_8f603b68(), iVar2 == 0)) {
FUN_8f604d48(DAT_8f70f784,0,DAT_8f70f78c,DAT_8f70f790,DAT_8f70f788,DAT_8f70f794);
FUN_8f604d9c(DAT_8f70f784,2);
}
iVar3 = 0;
FUN_8f604d48(DAT_8f70f79c,0,DAT_8f70f7a4,DAT_8f70f7a8,DAT_8f70f7a0,DAT_8f70f7ac);
FUN_8f604d9c(DAT_8f70f79c,2);
FUN_8f604d48(DAT_8f70f7b4,0,DAT_8f70f7bc,DAT_8f70f7c0,DAT_8f70f7b8,DAT_8f70f7c4);
FUN_8f604d9c(DAT_8f70f7b4,2);
iVar2 = param_2;
do {
cVar5 = *(char *)(param_2 + iVar3);
iVar3 = iVar3 + 1;
if (cVar5 != '\0') {
cVar5 = '\x02';
}
FUN_8f604d9c(DAT_8f70f7b4,cVar5);
FUN_8f613cc4(*(undefined4 *)(iVar2 + 8));
iVar2 = iVar2 + 4;
} while (iVar3 != 3);
iVar2 = FUN_8f603b68();
if (iVar2 == 0) goto LAB_8f601c98;
FUN_8f604d48(0x6b,0,1,0,3,1);
if ((*(uint *)(param_3 + 0x88) & 0xff00ff00) == 0) {
FUN_8f604d9c(0x6b,2);
goto LAB_8f601c98;
}
}
FUN_8f604d9c(0x6b,0);
LAB_8f601c98:
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
return;
}
void FUN_8f601df4(int param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f63e304(param_1,&DAT_8f72046c,0x1c);
FUN_8f63e304(param_1 + 0xbc,&DAT_8f661b64,0x10);
FUN_8f63e304(param_1 + 0xcc,&DAT_8f661b5c,8);
FUN_8f63e304(param_1 + 0xf4,&DAT_8f661b74,6);
FUN_8f63e304(param_1 + 0xfa,&DAT_8f661b7c,0x2d);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f601e90(int param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f603b68();
if (iVar2 != 0) {
if (param_1 == 0x1a98000) {
iVar2 = -0x4000;
}
else if (param_1 == 0x1a98500) {
iVar2 = -0x4100;
}
else if (param_1 == 0x1a98300) {
iVar2 = -0x3900;
}
else {
iVar2 = -0x3c00;
if (param_1 != 0x1a98780) {
iVar2 = 0;
}
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f601f44(int param_1,int param_2)
{
int iVar1;
byte bVar2;
undefined4 uVar3;
byte *pbVar4;
byte bVar5;
byte bVar6;
byte *local_4c;
uint local_48;
undefined4 local_44;
undefined4 local_40;
undefined4 local_3c;
undefined4 local_38;
undefined4 local_34;
undefined4 local_30;
int local_2c;
undefined4 local_28;
int local_24;
local_24 = DAT_8f731d80;
iVar1 = FUN_8f603b68();
uVar3 = 0x10022;
if (iVar1 != 0) {
uVar3 = 0x10021;
}
if (param_1 == 0) {
FUN_8f6036a0(0x10000);
goto LAB_8f601f94;
}
FUN_8f6035c4(uVar3);
FUN_8f613cc4(10);
local_4c = *(byte **)(param_2 + 0x3ec);
local_48 = 0;
local_44 = 0;
local_40 = 0;
local_3c = 0;
local_38 = 0;
local_2c = 0;
local_28 = 0;
if (local_4c == (byte *)0x0) {
LAB_8f602160:
local_48 = 0x10303;
bVar6 = 3;
local_44 = 5500000;
local_40 = 5500000;
local_3c = 5500000;
local_38 = 5500000;
bVar5 = 3;
bVar2 = 1;
pbVar4 = (byte *)0x0;
}
else {
pbVar4 = (byte *)(uint)*local_4c;
if (pbVar4 == (byte *)0x0) {
LAB_8f6020d0:
if (local_4c[1] == 0) {
bVar5 = 3;
bVar2 = 1;
local_48 = 0x10303;
local_4c = pbVar4;
if (pbVar4 == (byte *)0x0) goto LAB_8f602160;
local_44 = 4600000;
local_40 = 4600000;
local_3c = 4000000;
local_38 = 4000000;
bVar6 = bVar5;
}
else {
local_3c = *(undefined4 *)(local_4c + 4);
local_38 = *(undefined4 *)(local_4c + 8);
local_44 = *(undefined4 *)(local_4c + 0xc);
local_40 = *(undefined4 *)(local_4c + 0x10);
bVar5 = local_4c[0x14];
bVar6 = local_4c[0x15];
bVar2 = local_4c[0x16];
local_48 = (uint)*(uint3 *)(local_4c + 0x14);
local_4c = pbVar4;
}
}
else {
local_2c = *(int *)(local_4c + 0x18);
local_28 = 1;
if (local_2c == 0) goto LAB_8f6020d0;
bVar2 = 0;
bVar5 = 0;
local_4c = pbVar4;
bVar6 = 0;
}
}
local_30 = 4600000;
local_34 = 1400000;
FUN_8f63cbb4(s__s___d__d__d__d__d__d__d__d__d___8f661cb8,s_wled_init_8f661d20,pbVar4,local_44,
local_40,local_3c,local_38,4600000,1400000,bVar5,bVar6,bVar2);
FUN_8f63a03c(3);
FUN_8f63c020(&local_4c);
FUN_8f63bde0(1);
FUN_8f613cc4(0x32);
LAB_8f601f94:
if (local_24 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
// WARNING: Removing unreachable block (ram,0x8f602224)
void FUN_8f6021f0(void)
{
FUN_8f637ad0();
return;
}
void FUN_8f602228(void)
{
int iVar1;
uint uVar2;
undefined auStack_160 [168];
undefined auStack_b8 [128];
int local_38;
uint local_34;
int local_14;
local_14 = DAT_8f731d80;
FUN_8f6377b0();
FUN_8f637730(auStack_160);
FUN_8f63e304(auStack_b8,auStack_160,0xa4);
iVar1 = FUN_8f63e6f4(auStack_b8,&DAT_8f661cdc);
if ((((iVar1 != 0) && (iVar1 = FUN_8f63e6f4(auStack_b8,s_sim_video_panel_8f661ce4), iVar1 != 0))
&& (iVar1 = FUN_8f63e6f4(auStack_b8,s_sim_cmd_panel_8f661cf4), iVar1 != 0)) && (local_34 == 0)
) {
do {
FUN_8f600c10(0);
iVar1 = FUN_8f6371d8(auStack_b8,0xd,0x83200000);
if (iVar1 == -0x18 || iVar1 == 0) break;
local_34 = local_34 + 1;
FUN_8f600c10();
FUN_8f6216f8();
uVar2 = FUN_8f602440();
} while (local_34 <= uVar2);
if (local_38 == 0) {
FUN_8f600c10(1);
}
}
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f602360)
void FUN_8f60232c(void)
{
FUN_8f6375b0();
return;
}
// WARNING: Removing unreachable block (ram,0x8f602398)
void FUN_8f602364(void)
{
return;
}
void FUN_8f60239c(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
if (DAT_8f720404 == 2) {
FUN_8f613cc4(0x3c);
}
else if (DAT_8f720404 < 2) {
FUN_8f613cc4(0x28);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
// WARNING: Removing unreachable block (ram,0x8f60243c)
void FUN_8f602408(void)
{
return;
}
void FUN_8f602440(void)
{
int iVar1;
int iVar2;
undefined4 uVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f600c50();
if (iVar2 == 0) {
uVar3 = 0;
}
else {
uVar3 = 2;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
return;
}
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f602484(int param_1,undefined4 *param_2,int param_3,int param_4)
{
int iVar1;
int iVar2;
undefined4 uVar3;
undefined *puVar4;
iVar1 = DAT_8f731d80;
if (param_1 == 0) {
LAB_8f6024d4:
uVar3 = FUN_8f60128c(s_hw_id_8f661aa4);
iVar2 = FUN_8f60128c(s_lcm_id_8f661ab4);
DAT_8f720448 = 1;
if (iVar2 == 0) {
DAT_8f720404 = 0x10;
}
else {
DAT_8f720404 = 0xc;
}
FUN_8f63cbb4(s__DISPLAY__hw_id____d__panel_id_g_8f661dcc,uVar3,iVar2,DAT_8f720404);
FUN_8f63cbb4(s__DISPLAY__pw_iris2_chip_version___8f661e0c,DAT_8f720448);
iVar2 = DAT_8f720404;
}
else {
iVar2 = FUN_8f638e48(s_truly_1080p_video_8f711f64,0x12,param_1);
if (iVar2 < 0) {
FUN_8f63cbb4(s_Not_able_to_search_the_panel__s_8f661da8,param_1);
goto LAB_8f6024d4;
}
if (0x11 < iVar2) goto LAB_8f6024d4;
}
DAT_8f720404 = iVar2;
iVar2 = FUN_8f603b68();
if (iVar2 == 0) {
uVar3 = 0x8f661d5c;
}
else {
uVar3 = 0x8f6621ac;
}
FUN_8f63e304(&DAT_8f72046c,uVar3,0x1c);
iVar2 = DAT_8f720404;
*(undefined4 *)(param_3 + 0x24) = 1;
switch(iVar2) {
case 0:
*param_2 = &PTR_s_qcom_mdss_dsi_truly_1080p_video_8f713990;
DAT_8f7139c4 = 1;
param_2[1] = &DAT_8f710bd0;
puVar4 = &DAT_8f662498;
param_2[2] = &DAT_8f7128cc;
param_2[3] = &DAT_8f71033c;
param_2[4] = &DAT_8f7204c8;
param_2[5] = &DAT_8f713094;
param_2[6] = &DAT_8f714bac;
param_2[7] = &DAT_8f714c70;
param_2[8] = &DAT_8f71263c;
param_2[9] = &DAT_8f712840;
*(undefined **)(param_3 + 0x260) = &DAT_8f7139d8;
*(undefined **)(param_3 + 0x268) = &DAT_8f7107f0;
*(undefined4 *)(param_3 + 0x264) = 0x15;
*(undefined4 *)(param_3 + 0x26c) = 2;
goto LAB_8f602784;
case 1:
*param_2 = &PTR_s_qcom_mdss_dsi_truly_1080p_cmd_8f70fcf8;
DAT_8f70fd2c = 1;
param_2[1] = &DAT_8f711908;
param_2[2] = &DAT_8f713d18;
param_2[3] = &DAT_8f711d40;
param_2[4] = &DAT_8f712d54;
param_2[5] = &DAT_8f713af0;
param_2[6] = &DAT_8f712838;
param_2[7] = &DAT_8f712a2c;
param_2[8] = &DAT_8f711a3c;
param_2[9] = &DAT_8f710408;
*(undefined **)(param_3 + 0x260) = &DAT_8f710840;
*(undefined **)(param_3 + 0x268) = &DAT_8f713e14;
*(undefined4 *)(param_3 + 0x264) = 0x16;
puVar4 = &DAT_8f661d2c;
*(undefined4 *)(param_3 + 0x26c) = 2;
goto LAB_8f602784;
case 2:
*param_2 = &PTR_s_qcom_mdss_dsi_otm1906c_1080p_cmd_8f7133f8;
DAT_8f71342c = 1;
param_2[1] = &DAT_8f7106ec;
param_2[2] = &DAT_8f711f14;
param_2[3] = &DAT_8f712794;
param_2[4] = &DAT_8f714c98;
param_2[5] = &DAT_8f711d1c;
param_2[6] = &DAT_8f712e1c;
param_2[7] = &DAT_8f712ef0;
param_2[8] = &DAT_8f7127c4;
param_2[9] = &DAT_8f7116d4;
*(undefined **)(param_3 + 0x260) = &DAT_8f713e7c;
*(undefined **)(param_3 + 0x268) = &DAT_8f70f840;
*(undefined4 *)(param_3 + 0x264) = 0xf0;
puVar4 = &DAT_8f662408;
*(undefined4 *)(param_3 + 0x26c) = 2;
LAB_8f602784:
FUN_8f63e304(param_4 + 0x1c,puVar4,0x30);
uVar3 = 1;
*(undefined4 *)(param_3 + 0x28c) = 0xffff;
goto LAB_8f6026b8;
case 3:
*param_2 = &PTR_s_qcom_mdss_dsi_sharp_1080p_cmd_8f70f8e0;
param_2[1] = &DAT_8f713538;
DAT_8f70f914 = 1;
param_2[2] = &DAT_8f713960;
param_2[3] = &DAT_8f710c18;
param_2[4] = &DAT_8f711bb0;
param_2[5] = &DAT_8f713894;
param_2[6] = &DAT_8f711ac8;
param_2[7] = &DAT_8f70ff30;
param_2[8] = &DAT_8f711a8c;
param_2[9] = &DAT_8f711be0;
*(undefined **)(param_3 + 0x260) = &DAT_8f70fb70;
*(undefined4 *)(param_3 + 0x264) = 0xd;
*(undefined **)(param_3 + 0x268) = &DAT_8f712e34;
*(undefined4 *)(param_3 + 0x26c) = 2;
FUN_8f63e304(param_4 + 0x1c,&DAT_8f661d78,0x30);
uVar3 = 1;
goto LAB_8f6026b8;
case 4:
*param_2 = &PTR_s_qcom_mdss_dsi_nt35597_wqxga_vide_8f711c18;
DAT_8f711c48 = 0x19;
DAT_8f711c4c = 0;
param_2[1] = &DAT_8f70fcb8;
param_2[2] = &DAT_8f714cf0;
param_2[3] = &DAT_8f7127f0;
param_2[4] = &DAT_8f720428;
param_2[5] = &DAT_8f714c74;
param_2[6] = &DAT_8f712e2c;
param_2[7] = &DAT_8f711a30;
param_2[8] = &DAT_8f712858;
param_2[9] = &DAT_8f712b20;
*(undefined **)(param_3 + 0x3ec) = &DAT_8f7126e0;
*(undefined **)(param_3 + 0x260) = &DAT_8f71251c;
*(undefined **)(param_3 + 0x268) = &DAT_8f70f88c;
*(undefined4 *)(param_3 + 0x264) = 0x16;
*(undefined4 *)(param_3 + 0x26c) = 2;
puVar4 = &DAT_8f6623d8;
break;
case 5:
*param_2 = &PTR_s_qcom_mdss_dsi_nt35597_wqxga_cmd_8f712e5c;
DAT_8f712e8c = 0x19;
DAT_8f712e90 = 0;
param_2[7] = &DAT_8f711a5c;
param_2[1] = &DAT_8f7132a8;
param_2[2] = &DAT_8f7135cc;
param_2[3] = &DAT_8f712824;
param_2[4] = &DAT_8f70f7c8;
param_2[5] = &DAT_8f7134f4;
param_2[6] = &DAT_8f712e4c;
param_2[8] = &DAT_8f710bb0;
param_2[9] = &DAT_8f70fc94;
*(undefined **)(param_3 + 0x3ec) = &DAT_8f711708;
*(undefined **)(param_3 + 0x260) = &DAT_8f7136f4;
*(undefined4 *)(param_3 + 0x264) = 0x18;
*(undefined **)(param_3 + 0x268) = &DAT_8f712d10;
*(undefined4 *)(param_3 + 0x26c) = 2;
DAT_8f711a5e = 0x2b;
DAT_8f711a5f = 0x28;
FUN_8f63e304(param_4 + 0x1c,&DAT_8f662468,0x30);
uVar3 = 1;
*(undefined *)(param_3 + 0x24e) = 1;
goto LAB_8f6026b8;
case 6:
*param_2 = &PTR_s_qcom_mdss_dsi_hx8399a_1080p_vide_8f712688;
param_2[1] = &DAT_8f7104cc;
param_2[2] = &DAT_8f70fc4c;
param_2[3] = &DAT_8f711bf8;
param_2[4] = &DAT_8f720408;
param_2[5] = &DAT_8f7118ac;
param_2[6] = &DAT_8f7107d0;
param_2[7] = &DAT_8f7109a8;
param_2[8] = &DAT_8f712df8;
param_2[9] = &DAT_8f711d80;
*(undefined **)(param_3 + 0x260) = &DAT_8f70f990;
*(undefined **)(param_3 + 0x268) = &DAT_8f710b08;
*(undefined4 *)(param_3 + 0x264) = 0x11;
*(undefined4 *)(param_3 + 0x26c) = 2;
FUN_8f63e304(param_4 + 0x1c,&DAT_8f6624c8,0x30);
uVar3 = 1;
*(undefined4 *)(param_3 + 0x28c) = 0xa0000;
goto LAB_8f6026b8;
case 7:
*param_2 = &PTR_s_qcom_mdss_dsi_nt35597_dsc_wqxga__8f7105c0;
DAT_8f7105f4 = 0;
DAT_8f7105f0 = 0x20;
param_2[1] = &DAT_8f713604;
param_2[2] = &DAT_8f710750;
param_2[3] = &DAT_8f71267c;
param_2[4] = &DAT_8f70fc2c;
param_2[5] = &DAT_8f710688;
param_2[6] = &DAT_8f712d48;
param_2[7] = &DAT_8f71196c;
param_2[8] = &DAT_8f71172c;
param_2[9] = &DAT_8f70f830;
*(undefined **)(param_3 + 0x3ec) = &DAT_8f711b8c;
*(undefined **)(param_3 + 0x260) = &DAT_8f7128d4;
*(undefined **)(param_3 + 0x268) = &DAT_8f714cd8;
*(undefined4 *)(param_3 + 0x264) = 0x1c;
*(undefined4 *)(param_3 + 0x26c) = 2;
FUN_8f63e304(param_4 + 0x1c,&DAT_8f6622b8,0x30);
puVar4 = &DAT_8f6622e8;
*(undefined *)(param_2[7] + 2) = 4;
goto LAB_8f602d38;
case 8:
*param_2 = &PTR_s_qcom_mdss_dsi_nt35597_dsc_wqxga__8f71192c;
DAT_8f711960 = 0;
DAT_8f71195c = 0x20;
param_2[1] = &DAT_8f710714;
param_2[2] = &DAT_8f714d20;
param_2[3] = &DAT_8f7116fc;
param_2[4] = &DAT_8f70fee8;
param_2[5] = &DAT_8f712758;
param_2[6] = &DAT_8f7102b0;
param_2[7] = &DAT_8f710308;
param_2[8] = &DAT_8f712ff8;
param_2[9] = &DAT_8f712fb0;
*(undefined **)(param_3 + 0x3ec) = &DAT_8f7106d0;
*(undefined **)(param_3 + 0x260) = &DAT_8f713b78;
*(undefined **)(param_3 + 0x268) = &DAT_8f711b10;
*(undefined4 *)(param_3 + 0x264) = 0x1f;
*(undefined4 *)(param_3 + 0x26c) = 2;
FUN_8f63e304(param_4 + 0x1c,&DAT_8f662378,0x30);
*(undefined *)(param_2[7] + 2) = 4;
puVar4 = &DAT_8f662438;
LAB_8f602d38:
*(undefined *)(param_2[7] + 3) = 0x20;
*(undefined *)(param_3 + 0x24e) = 1;
*(undefined4 *)(param_3 + 0x20) = 1;
FUN_8f63e304(param_2 + 0x1c,puVar4,0x30);
*(code **)(param_3 + 0x224) = FUN_8f622b34;
*(undefined **)(param_3 + 0x228) = &LAB_8f6228b0;
uVar3 = 1;
*(undefined **)(param_3 + 0x22c) = &LAB_8f62310c;
*(undefined **)(param_3 + 0x230) = &LAB_8f622ecc;
goto LAB_8f6026b8;
case 9:
*param_2 = &PTR_s_qcom_mdss_dsi_byd_1200p_video_8f71068c;
DAT_8f7106c0 = 1;
param_2[1] = &DAT_8f711ce8;
param_2[2] = &DAT_8f711ba8;
param_2[3] = &DAT_8f713848;
param_2[4] = &DAT_8f72044c;
param_2[5] = &DAT_8f7126fc;
param_2[6] = &DAT_8f714be4;
param_2[7] = &DAT_8f712b78;
param_2[8] = &DAT_8f710c54;
param_2[9] = &DAT_8f70fce8;
*(undefined **)(param_3 + 0x260) = &DAT_8f710cec;
*(undefined **)(param_3 + 0x268) = &DAT_8f710828;
*(undefined4 *)(param_3 + 0x264) = 0xce;
*(undefined4 *)(param_3 + 0x26c) = 2;
FUN_8f63e304(param_4 + 0x1c,&DAT_8f66217c,0x30);
uVar3 = 1;
*(undefined4 *)(param_3 + 0x28c) = 0xffff;
*(undefined *)(param_4 + 0x127) = 1;
goto LAB_8f6026b8;
case 10:
*param_2 = &PTR_s_qcom_mdss_dsi_nt35523_wqxga_vide_8f7109ac;
DAT_8f7109dc = 0x19;
DAT_8f7109e0 = 0;
param_2[1] = &DAT_8f7102d8;
param_2[2] = &DAT_8f712850;
param_2[3] = &DAT_8f711e1c;
param_2[4] = &DAT_8f720488;
param_2[5] = &DAT_8f712790;
param_2[6] = &DAT_8f712a68;
param_2[7] = &DAT_8f710cc0;
param_2[8] = &DAT_8f712c10;
param_2[9] = &DAT_8f7104bc;
*(undefined **)(param_3 + 0x3ec) = &DAT_8f713b30;
*(undefined **)(param_3 + 0x260) = &DAT_8f711894;
*(undefined **)(param_3 + 0x268) = &DAT_8f7149c0;
*(undefined4 *)(param_3 + 0x264) = 2;
puVar4 = &DAT_8f6621f8;
*(undefined4 *)(param_3 + 0x26c) = 2;
break;
case 0xb:
*param_2 = &PTR_s_qcom_mdss_dsi_tianma_r63319_dual_8f710418;
DAT_8f710448 = 0x19;
DAT_8f71044c = 0;
param_2[1] = &DAT_8f711ec8;
param_2[2] = &DAT_8f70ff3c;
param_2[3] = &DAT_8f710aac;
param_2[4] = &DAT_8f7204a8;
param_2[5] = &DAT_8f70fdcc;
param_2[6] = &DAT_8f712478;
param_2[7] = &DAT_8f70fce4;
param_2[8] = &DAT_8f70fb3c;
param_2[9] = &DAT_8f713830;
*(undefined **)(param_3 + 0x3ec) = &DAT_8f712714;
*(undefined **)(param_3 + 0x260) = &DAT_8f710a64;
*(undefined **)(param_3 + 0x268) = &DAT_8f712d30;
*(undefined4 *)(param_3 + 0x264) = 6;
*(undefined4 *)(param_3 + 0x26c) = 2;
puVar4 = &DAT_8f662288;
break;
case 0xc:
*param_2 = &PTR_s_qcom_mdss_dsi_tianma_r63319_dual_8f711f1c;
DAT_8f711f4c = 0x19;
DAT_8f711f50 = 0;
param_2[1] = &DAT_8f712800;
param_2[2] = &DAT_8f711f5c;
param_2[3] = &DAT_8f712e9c;
param_2[4] = &DAT_8f713568;
param_2[5] = &DAT_8f713888;
param_2[6] = &DAT_8f713828;
param_2[7] = &DAT_8f712834;
param_2[8] = &DAT_8f710c24;
param_2[9] = &DAT_8f713e58;
*(undefined **)(param_3 + 0x3ec) = &DAT_8f710bfc;
*(undefined **)(param_3 + 0x260) = &DAT_8f712b9c;
*(undefined **)(param_3 + 0x268) = &DAT_8f7126c8;
*(undefined4 *)(param_3 + 0x264) = 6;
*(undefined4 *)(param_3 + 0x26c) = 2;
puVar4 = &DAT_8f6623a8;
break;
case 0xd:
*param_2 = &PTR_s_qcom_mdss_dsi_auo_nt35523_dualmi_8f7124c4;
DAT_8f7124f4 = 0x19;
DAT_8f7124f8 = 0;
param_2[1] = &DAT_8f712ea8;
param_2[2] = &DAT_8f71266c;
param_2[3] = &DAT_8f713b54;
param_2[4] = &DAT_8f711970;
param_2[5] = &DAT_8f712cec;
param_2[6] = &DAT_8f714d34;
param_2[7] = &DAT_8f712d50;
param_2[8] = &DAT_8f714cf8;
param_2[9] = &DAT_8f70fd38;
*(undefined **)(param_3 + 0x3ec) = &DAT_8f7133b0;
*(undefined **)(param_3 + 0x260) = &DAT_8f70f7e8;
*(undefined **)(param_3 + 0x268) = &DAT_8f710ae4;
*(undefined4 *)(param_3 + 0x264) = 6;
*(undefined4 *)(param_3 + 0x26c) = 3;
puVar4 = &DAT_8f662348;
break;
case 0xe:
*param_2 = &PTR_s_qcom_mdss_dsi_tianma_nt35523_dua_8f70f920;
DAT_8f70f950 = 0x19;
DAT_8f70f954 = 0;
param_2[1] = &DAT_8f712aa4;
param_2[2] = &DAT_8f70fc0c;
param_2[3] = &DAT_8f70f97c;
param_2[4] = &DAT_8f714cb8;
param_2[5] = &DAT_8f70fb30;
param_2[6] = &DAT_8f710278;
param_2[7] = &DAT_8f7135f4;
param_2[8] = &DAT_8f70ff08;
param_2[9] = &DAT_8f713e2c;
*(undefined **)(param_3 + 0x3ec) = &DAT_8f710ac8;
*(undefined **)(param_3 + 0x260) = &DAT_8f70ff60;
*(undefined **)(param_3 + 0x268) = &DAT_8f70fd8c;
*(undefined4 *)(param_3 + 0x264) = 0x41;
*(undefined4 *)(param_3 + 0x26c) = 2;
puVar4 = &DAT_8f6621c8;
break;
case 0xf:
*param_2 = &PTR_s_qcom_mdss_dsi_tianma_nt35523_dua_8f710968;
DAT_8f710998 = 0x19;
DAT_8f71099c = 0;
param_2[1] = &DAT_8f713508;
param_2[2] = &DAT_8f70fc80;
param_2[3] = &DAT_8f713148;
param_2[4] = &DAT_8f710948;
param_2[5] = &DAT_8f70f8c8;
param_2[6] = &DAT_8f711d28;
param_2[7] = &DAT_8f71311c;
param_2[8] = &DAT_8f7116b4;
param_2[9] = &DAT_8f711a18;
*(undefined **)(param_3 + 0x3ec) = &DAT_8f710c74;
*(undefined **)(param_3 + 0x260) = &DAT_8f714a1c;
*(undefined **)(param_3 + 0x268) = &DAT_8f713190;
*(undefined4 *)(param_3 + 0x264) = 0x11;
*(undefined4 *)(param_3 + 0x26c) = 4;
puVar4 = &DAT_8f662258;
break;
case 0x10:
*param_2 = &PTR_s_qcom_mdss_dsi_sharp_nt35523_dual_8f7118c0;
DAT_8f7118f0 = 0x19;
DAT_8f7118f4 = 0;
param_2[1] = &DAT_8f711844;
param_2[2] = &DAT_8f712c84;
param_2[3] = &DAT_8f711764;
param_2[4] = &DAT_8f710808;
param_2[5] = &DAT_8f711d34;
param_2[6] = &DAT_8f711d0c;
param_2[7] = &DAT_8f7103d4;
param_2[8] = &DAT_8f70fb0c;
param_2[9] = &DAT_8f712440;
*(undefined **)(param_3 + 0x3ec) = &DAT_8f712c94;
*(undefined **)(param_3 + 0x260) = &DAT_8f71045c;
*(undefined **)(param_3 + 0x268) = &DAT_8f7130bc;
*(undefined4 *)(param_3 + 0x264) = 8;
*(undefined4 *)(param_3 + 0x26c) = 3;
puVar4 = &DAT_8f662318;
break;
case 0x11:
*param_2 = &PTR_s_qcom_mdss_dsi_boe_nt35523_dualmi_8f712ad0;
DAT_8f712b04 = 0;
puVar4 = &DAT_8f662228;
DAT_8f712b00 = 0x19;
param_2[1] = &DAT_8f711868;
param_2[2] = &DAT_8f713d3c;
param_2[3] = &DAT_8f7127e4;
param_2[4] = &DAT_8f711798;
param_2[5] = &DAT_8f7127fc;
param_2[6] = &DAT_8f712e24;
param_2[7] = &DAT_8f711a2c;
param_2[8] = &DAT_8f713170;
param_2[9] = &DAT_8f713ae0;
*(undefined **)(param_3 + 0x3ec) = &DAT_8f713098;
*(undefined **)(param_3 + 0x260) = &DAT_8f7131c0;
*(undefined **)(param_3 + 0x268) = &DAT_8f70f85c;
*(undefined4 *)(param_3 + 0x264) = 0x11;
*(undefined4 *)(param_3 + 0x26c) = 4;
break;
default:
uVar3 = 0;
FUN_8f63e410(param_2,0,0xa0);
FUN_8f63e410(*(undefined4 *)(param_3 + 0x260),0,0xc);
*(undefined4 *)(param_3 + 0x264) = 0;
FUN_8f63e410(*(undefined4 *)(param_3 + 0x268),0,0xc);
*(undefined4 *)(param_3 + 0x26c) = 0;
FUN_8f63e410(param_4 + 0x1c,0,0x30);
goto LAB_8f6026b8;
}
FUN_8f63e304(param_4 + 0x1c,puVar4,0x30);
uVar3 = 1;
*(undefined *)(param_3 + 0x24e) = 1;
LAB_8f6026b8:
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f603580)
void FUN_8f603544(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6035c0)
void FUN_8f603584(void)
{
return;
}
void FUN_8f6035c4(uint param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f603b68();
if (iVar2 == 0) {
if ((param_1 & 2) != 0) {
FUN_8f60a508(PTR_DAT_8f603690,0x24);
}
}
else if ((param_1 & 1) != 0) {
FUN_8f60a508(PTR_DAT_8f60369c,0x24,0);
}
if ((param_1 & 0x10000) != 0) {
FUN_8f60a508(PTR_DAT_8f603694,0x24,0);
}
if ((param_1 & 0x20) == 0) {
if (iVar1 == DAT_8f731d80) {
return;
}
}
else if (iVar1 == DAT_8f731d80) {
FUN_8f60a508(PTR_DAT_8f603698,0x24,0);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6036a0(uint param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f603b68();
if (iVar2 == 0) {
if ((param_1 & 2) != 0) {
FUN_8f60a508(&DAT_8f714dec,0x24);
}
}
else if ((param_1 & 1) != 0) {
FUN_8f60a508(&DAT_8f714d94,0x24,0);
}
if ((param_1 & 0x10000) != 0) {
FUN_8f60a508(&DAT_8f714d3c,0x24,0);
}
if ((param_1 & 0x20) == 0) {
if (iVar1 == DAT_8f731d80) {
return;
}
}
else if (iVar1 == DAT_8f731d80) {
FUN_8f60a508(&DAT_8f714e44,0x24,0);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f60377c(undefined4 *param_1)
{
int iVar1;
int iVar2;
undefined4 uVar3;
iVar1 = DAT_8f731d80;
if (param_1 == (undefined4 *)0x0) {
FUN_8f63cbb4(s_mdtp__mdtp_get_target_efuse__ERR_8f6624f8);
iVar2 = -1;
}
else {
iVar2 = FUN_8f603b68();
if (iVar2 == 0) {
param_1[1] = 0;
uVar3 = 0x5c250;
}
else {
iVar2 = 0;
uVar3 = 0xa4408;
param_1[1] = 0;
}
*param_1 = uVar3;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
return;
}
void FUN_8f6037f4(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f615640();
FUN_8f604cac();
FUN_8f609d6c();
FUN_8f613d70();
if (iVar1 == DAT_8f731d80) {
FUN_8f618c50();
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f60386c)
void FUN_8f60383c(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6038a4)
void FUN_8f603870(void)
{
FUN_8f613c8c();
return;
}
// WARNING: Removing unreachable block (ram,0x8f6038e4)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f6038a8(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f603920)
void FUN_8f6038e8(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f603958)
void FUN_8f603924(void)
{
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f60395c(void)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
undefined4 uVar6;
undefined *puVar7;
undefined *puVar8;
undefined *puVar9;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f605790();
if ((_DAT_0193d000 == (int *)0x0) || (*_DAT_0193d000 != 0x49494953)) {
iVar5 = -0x79d00000;
}
else {
iVar5 = _DAT_0193d000[2];
}
iVar4 = 0;
do {
iVar3 = iVar2 + 0x5900000 + iVar4;
iVar4 = iVar4 + -0x100000;
FUN_8f625b98(iVar3,iVar3,0xc18);
puVar7 = PTR_DAT_8f603a5c;
} while (iVar4 != -0x5a00000);
FUN_8f625b98(iVar5,iVar5,0xc18);
puVar8 = puVar7 + -8;
puVar9 = puVar7 + 0x70;
do {
iVar2 = *(int *)(puVar8 + 8);
if (iVar2 != 0) {
iVar4 = *(int *)(puVar7 + -8);
iVar3 = *(int *)(puVar7 + -4);
uVar6 = *(undefined4 *)(puVar8 + 0xc);
iVar5 = iVar4 + (iVar2 + 0xfff) * 0x100000;
do {
FUN_8f625b98(iVar5,(iVar3 - iVar4) + iVar5,uVar6);
iVar2 = iVar2 + -1;
iVar5 = iVar5 + -0x100000;
} while (iVar2 != 0);
}
puVar7 = puVar7 + 0x10;
puVar8 = puVar8 + 0x10;
} while (puVar7 != puVar9);
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f603a90)
void FUN_8f603a60(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f603ac4)
void FUN_8f603a94(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f603b2c)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f603ac8(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f603b64)
void FUN_8f603b30(void)
{
return;
}
void FUN_8f603b68(void)
{
int iVar1;
int iVar2;
uint uVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f614e7c();
if (iVar2 - 0x10aU < 0xd) {
uVar3 = 1 << (iVar2 - 0x10aU & 0xff) & 0x1901;
if (uVar3 != 0) {
uVar3 = 1;
}
}
else {
uVar3 = 0;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f603bcc(void)
{
int iVar1;
uint uVar2;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f603b68();
if (uVar2 != 0) {
uVar2 = _DAT_000a0174 >> 0x1c;
FUN_8f63cbb4(s__platform_read_pte_reg__d_8f6625a4,uVar2);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
// WARNING: Removing unreachable block (ram,0x8f603c68)
void FUN_8f603c30(void)
{
return;
}
void FUN_8f603c6c(void)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f6150b0();
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2 == 0x10001);
}
void FUN_8f603cb8(uint *param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = 500;
do {
if ((*param_1 & 1) == 0) goto LAB_8f603cfc;
FUN_8f613d18(1);
iVar2 = iVar2 + -1;
} while (iVar2 != 0);
FUN_8f63cbb4(s_failed_to_update_rcg_config_for_r_8f6625c0,param_1);
FUN_8f63cce8();
LAB_8f603cfc:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f603d54(int *param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = 500;
do {
if (-1 < *param_1) goto LAB_8f603d98;
FUN_8f613d18(1);
iVar2 = iVar2 + -1;
} while (iVar2 != 0);
FUN_8f63cbb4(s_failed_to_enable_branch_for_reg___8f66260c,param_1);
FUN_8f63cce8();
LAB_8f603d98:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f603df0(void)
{
int iVar1;
int iVar2;
undefined4 uVar3;
undefined4 uVar4;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f61446c(s_usb_iface_clk_8f662634,0,1);
if (iVar2 != 0) {
FUN_8f63cbb4(s_failed_to_set_usb_iface_clk_ret___8f662644);
FUN_8f63cce8();
}
iVar2 = FUN_8f61446c(s_usb_core_clk_8f66266c,0x7f27450,1);
if (iVar2 != 0) {
FUN_8f63cbb4(s_failed_to_set_usb_core_clk_ret___8f66267c);
FUN_8f63cce8();
}
FUN_8f613cc4(0x14);
uVar3 = FUN_8f6143b8(s_usb_iface_clk_8f662634);
uVar4 = FUN_8f6143b8(s_usb_core_clk_8f66266c);
FUN_8f6141d0(uVar3);
FUN_8f6141d0(uVar4);
FUN_8f613cc4(0x14);
_DAT_01841000 = 1;
FUN_8f613cc4(0x14);
_DAT_01841000 = 0;
FUN_8f613cc4(0x14);
iVar2 = FUN_8f614264(uVar3);
if (iVar2 != 0) {
FUN_8f63cbb4(s_failed_to_set_usb_iface_clk_afte_8f6626a4);
FUN_8f63cce8();
}
iVar2 = FUN_8f614264(uVar4);
if (iVar2 != 0) {
FUN_8f63cbb4(s_failed_to_set_usb_iface_clk_afte_8f6626a4);
FUN_8f63cce8();
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f603fc8(undefined4 param_1)
{
int iVar1;
undefined auStack_54 [64];
int local_14;
local_14 = DAT_8f731d80;
FUN_8f63e068(auStack_54,0x40,s_sdc_u_iface_clk_8f6626d8,param_1);
iVar1 = FUN_8f61446c(auStack_54,0,1);
if (iVar1 != 0) {
FUN_8f63cbb4(s_failed_to_set_sdc1_iface_clk_ret_8f6626e8);
FUN_8f63cce8();
}
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f604064(undefined4 param_1,int param_2)
{
int iVar1;
undefined auStack_54 [64];
int local_14;
local_14 = DAT_8f731d80;
FUN_8f63e068(auStack_54,0x40,s_sdc_u_core_clk_8f662710,param_1);
if (param_2 == 400000) {
LAB_8f604184:
iVar1 = FUN_8f61446c(auStack_54,param_2,1);
LAB_8f604194:
if (iVar1 == 0) goto LAB_8f60416c;
}
else {
if (param_2 == 0x2ee0000) {
iVar1 = FUN_8f61446c(auStack_54,50000000,1);
goto LAB_8f604194;
}
if (param_2 == 0xa988e10) goto LAB_8f604184;
if (param_2 == 192000000) {
iVar1 = FUN_8f603b68();
if ((iVar1 == 0) || (iVar1 = FUN_8f603c6c(), iVar1 == 0)) {
iVar1 = FUN_8f61446c(auStack_54,192000000,1);
}
else {
iVar1 = FUN_8f61446c(auStack_54,0xb1c3d00,1);
}
goto LAB_8f604194;
}
if (param_2 == 200000000) goto LAB_8f604184;
if (param_2 == 400000000) {
iVar1 = FUN_8f603b68();
if ((iVar1 == 0) || (iVar1 = FUN_8f603c6c(), iVar1 == 0)) {
iVar1 = FUN_8f61446c(auStack_54,384000000,1);
}
else {
iVar1 = FUN_8f61446c(auStack_54,0x16387a00,1);
}
goto LAB_8f604194;
}
FUN_8f63cbb4(s_sdc_frequency___u__is_not_suppor_8f662720,param_2);
FUN_8f63cce8();
iVar1 = 1;
}
FUN_8f63cbb4(s_failed_to_set__s_ret____d_8f662748,auStack_54,iVar1);
FUN_8f63cce8();
LAB_8f60416c:
if (local_14 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f604254(undefined4 param_1)
{
int iVar1;
undefined auStack_94 [64];
undefined auStack_54 [64];
int local_14;
local_14 = DAT_8f731d80;
FUN_8f63e068(auStack_94,0x40,s_uart_u_iface_clk_8f662764,param_1);
FUN_8f63e068(auStack_54,0x40,s_uart_u_core_clk_8f662778,param_1);
iVar1 = FUN_8f61446c(auStack_94,0,1);
if (iVar1 != 0) {
FUN_8f63cbb4(s_failed_to_set__s_ret____d_8f662748,auStack_94);
FUN_8f63cce8();
}
iVar1 = FUN_8f61446c(auStack_54,0x708000,1);
if (iVar1 != 0) {
FUN_8f63cbb4(s_failed_to_set__s_ret____d_8f662748,auStack_54);
FUN_8f63cce8();
}
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f6043f0)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f604368(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_8f6043f4(void)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f61446c(s_mdp_ahb_clk_8f662788,0,1);
if (iVar2 != 0) {
FUN_8f63cbb4(s_failed_to_set_mdp_ahb_clk_ret_____8f662794);
FUN_8f63cce8();
}
iVar2 = FUN_8f61446c(s_mdss_mdp_clk_src_8f6627b8,320000000,1);
if (iVar2 != 0) {
FUN_8f63cbb4(s_failed_to_set_mdp_clk_src_ret_____8f6627cc);
FUN_8f63cce8();
}
iVar2 = FUN_8f61446c(s_mdss_vsync_clk_8f6627f0,0,1);
if (iVar2 != 0) {
FUN_8f63cbb4(s_failed_to_set_mdss_vsync_clk_ret_8f662800);
FUN_8f63cce8();
}
iVar2 = FUN_8f61446c(s_mdss_mdp_clk_8f662828,0,1);
if (iVar2 != 0) {
FUN_8f63cbb4(s_failed_to_set_mdp_clk_ret____d_8f662838);
FUN_8f63cce8();
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f60457c(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f6143b8(s_mdss_vsync_clk_8f6627f0);
FUN_8f6141d0();
FUN_8f6143b8(s_mdss_mdp_clk_8f662828);
FUN_8f6141d0();
FUN_8f6143b8(s_mdss_mdp_clk_src_8f6627b8);
FUN_8f6141d0();
FUN_8f6143b8(s_mdp_ahb_clk_8f662788);
if (iVar1 == DAT_8f731d80) {
FUN_8f6141d0();
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6045f0(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f6143b8(s_mdss_axi_clk_8f662858);
if (iVar1 == DAT_8f731d80) {
FUN_8f6141d0();
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f604634(void)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f61446c(s_mdss_axi_clk_8f662858,0,1);
if (iVar2 != 0) {
FUN_8f63cbb4(s_failed_to_set_mdss_axi_clk_ret___8f662868);
FUN_8f63cce8();
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f6046bc(uint param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
if ((param_1 & 1) != 0) {
FUN_8f6143b8(s_mdss_esc0_clk_8f662890);
FUN_8f6141d0();
_DAT_0184d084 = 0;
_DAT_0184d094 = 0;
}
if ((param_1 & 2) != 0) {
FUN_8f6143b8(s_mdss_esc1_clk_8f6628a0);
FUN_8f6141d0();
_DAT_0184d0a4 = 0;
_DAT_0184d0a0 = 0;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f604750(uint param_1,int param_2,undefined4 param_3,undefined4 param_4,uint param_5)
{
int iVar1;
int iVar2;
undefined4 in_lr;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f603c6c();
if ((iVar2 == 0) || (param_2 != 0)) {
param_2 = 0x100;
LAB_8f604798:
if ((param_1 & 1) != 0) goto LAB_8f6047cc;
}
else {
if (param_1 != 3) goto LAB_8f604798;
param_2 = 0x300;
LAB_8f6047cc:
_DAT_0184d048 = 0x100;
_DAT_0184d044 = 1;
FUN_8f603cb8(&DAT_0184d044);
_DAT_0184d094 = 1;
FUN_8f603d54(&DAT_0184d094);
_DAT_0184d004 = 0x100;
_DAT_0184d000 = 1;
_DAT_0184d008 = param_3;
_DAT_0184d00c = param_4;
_DAT_0184d010 = param_5 & 0xff;
FUN_8f603cb8(&DAT_0184d000);
_DAT_0184d084 = 1;
FUN_8f603d54(&DAT_0184d084);
iVar2 = FUN_8f61446c(s_mdss_esc0_clk_8f662890,0,1);
if (iVar2 != 0) {
FUN_8f63cbb4(s_failed_to_set_esc0_clk_ret____d_8f6628b0);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm8952_acpuclock_c_8f6625ec,0x175,s_card_size_sec___0_8f663308 + 0x10
);
}
}
if ((param_1 & 2) != 0) {
_DAT_0184d0b0 = 1;
_DAT_0184d0b4 = param_2;
FUN_8f603cb8(&DAT_0184d0b0);
_DAT_0184d0a0 = 1;
FUN_8f603d54(&DAT_0184d0a0);
_DAT_0184d0b8 = 1;
_DAT_0184d0bc = param_2;
_DAT_0184d0c0 = param_3;
_DAT_0184d0c4 = param_4;
_DAT_0184d0c8 = param_5 & 0xff;
FUN_8f603cb8(&DAT_0184d0b8);
_DAT_0184d0a4 = 1;
FUN_8f603d54(&DAT_0184d0a4);
iVar2 = FUN_8f61446c(s_mdss_esc1_clk_8f6628a0,0,1);
if (iVar2 != 0) {
FUN_8f63cbb4(s_failed_to_set_esc1_clk_ret____d_8f6628d4);
if (iVar1 == DAT_8f731d80) {
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm8952_acpuclock_c_8f6625ec,0x197);
return;
}
goto LAB_8f604950;
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
LAB_8f604950:
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f604954(undefined4 param_1)
{
int iVar1;
undefined auStack_54 [64];
int local_14;
local_14 = DAT_8f731d80;
FUN_8f63e068(auStack_54,0x40,s_ce_u_src_clk_8f6628f8,param_1);
iVar1 = FUN_8f61446c(auStack_54,160000000,1);
if (iVar1 != 0) {
FUN_8f63cbb4(s_failed_to_set_ce_u_src_clk_ret___8f662908,param_1);
FUN_8f63cce8();
}
FUN_8f63e068(auStack_54,0x40,s_ce_u_core_clk_8f662930,param_1);
iVar1 = FUN_8f61446c(auStack_54,0,1);
if (iVar1 != 0) {
FUN_8f63cbb4(s_failed_to_set_ce_u_core_clk_ret___8f662940,param_1);
FUN_8f63cce8();
}
FUN_8f63e068(auStack_54,0x40,s_ce_u_ahb_clk_8f662968,param_1);
iVar1 = FUN_8f61446c(auStack_54,0,1);
if (iVar1 != 0) {
FUN_8f63cbb4(s_failed_to_set_ce_u_ahb_clk_ret___8f662978,param_1);
FUN_8f63cce8();
}
FUN_8f63e068(auStack_54,0x40,s_ce_u_axi_clk_8f6629a0,param_1);
iVar1 = FUN_8f61446c(auStack_54,0,1);
if (iVar1 != 0) {
FUN_8f63cbb4(s_failed_to_set_ce_u_axi_clk_ret___8f6629b0,param_1);
FUN_8f63cce8();
}
FUN_8f613d18(1);
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f604b48(undefined4 param_1)
{
undefined4 uVar1;
undefined4 uVar2;
undefined4 uVar3;
undefined4 uVar4;
undefined auStack_5c [64];
int local_1c;
local_1c = DAT_8f731d80;
FUN_8f63e068(auStack_5c,0x40,s_ce_u_src_clk_8f6628f8,param_1);
uVar1 = FUN_8f6143b8(auStack_5c);
FUN_8f63e068(auStack_5c,0x40,s_ce_u_ahb_clk_8f662968,param_1);
uVar2 = FUN_8f6143b8(auStack_5c);
FUN_8f63e068(auStack_5c,0x40,s_ce_u_axi_clk_8f6629a0,param_1);
uVar3 = FUN_8f6143b8(auStack_5c);
FUN_8f63e068(auStack_5c,0x40,s_ce_u_core_clk_8f662930,param_1);
uVar4 = FUN_8f6143b8(auStack_5c);
FUN_8f6141d0(uVar2);
FUN_8f6141d0(uVar3);
FUN_8f6141d0(uVar4);
FUN_8f6141d0(uVar1);
FUN_8f613d18(1);
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f604c38(undefined4 param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f604954();
FUN_8f604b48(param_1);
_DAT_01816000 = 1;
FUN_8f613d18(2);
_DAT_01816000 = 0;
FUN_8f613d18(2);
if (iVar1 == DAT_8f731d80) {
FUN_8f604954(param_1);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f604cac(void)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f603b68();
if (iVar2 != 0) {
DAT_8f7155f8 = 0x20000;
DAT_8f7155f4 = 0x1824024;
PTR_DAT_8f7152c0 = &DAT_8f715380;
iVar2 = FUN_8f603c6c();
if (iVar2 != 0) {
PTR_DAT_8f7152f4 = (undefined *)0x8f714f7c;
}
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
FUN_8f614370(&PTR_s_sdc1_iface_clk_8f715910,0x1c);
return;
}
void FUN_8f604d48(int param_1,int param_2,undefined4 param_3,uint param_4,byte param_5,int param_6)
{
int iVar1;
iVar1 = DAT_8f731d80;
*(uint *)((param_1 + 0x1000) * 0x1000) =
param_4 | (uint)param_5 << 6 | param_6 << 9 | param_2 << 2;
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f604d9c(int param_1,undefined4 param_2)
{
int iVar1;
iVar1 = DAT_8f731d80;
*(undefined4 *)(param_1 * 0x1000 + 0x1000004) = param_2;
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f604e1c)
void FUN_8f604ddc(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f604e6c)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f604e20(void)
{
_DAT_01005000 = 0x2c8;
_DAT_01004000 = 0x2c8;
return;
}
void FUN_8f604e70(undefined4 param_1)
{
int iVar1;
int iVar2;
int iVar3;
undefined *puVar4;
undefined4 uVar5;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f603544();
if (iVar2 == 1) {
iVar3 = FUN_8f603584();
if (iVar3 == 0x10) {
if (iVar1 == DAT_8f731d80) {
uVar5 = 9;
puVar4 = &DAT_8f716070;
goto LAB_8f604ec0;
}
}
else if (iVar1 == DAT_8f731d80) {
FUN_8f6218ac(param_1,&DAT_8f71659c,9,1);
return;
}
}
else if (iVar1 == DAT_8f731d80) {
puVar4 = &DAT_8f716230;
uVar5 = 10;
iVar2 = 1;
LAB_8f604ec0:
FUN_8f6218ac(param_1,puVar4,uVar5,iVar2);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f604f70)
void FUN_8f604f2c(undefined4 param_1)
{
FUN_8f6218ac(param_1,&DAT_8f7160ec,8,1);
return;
}
void FUN_8f604f74(int param_1)
{
undefined4 uStack_18;
undefined *puStack_14;
undefined4 uStack_10;
int local_c;
uStack_18 = DAT_8f662d50;
puStack_14 = PTR_DAT_8f662d54;
uStack_10 = DAT_8f662d58;
local_c = DAT_8f731d80;
FUN_8f6218ac(param_1,&uStack_18,1,*(undefined *)(param_1 + 0x55));
if (local_c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f605000)
void FUN_8f604fd0(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f605078)
void FUN_8f605004(undefined4 param_1)
{
int iVar1;
iVar1 = DAT_8f716788;
DAT_8f716788 = DAT_8f716788 + 1;
DAT_8f716784 = DAT_8f716784 + 1;
if (DAT_8f716780 <= DAT_8f716788) {
DAT_8f716788 = 0;
}
(&DAT_8f71678c)[iVar1] = (char)param_1;
FUN_8f614e0c(0,param_1);
return;
}
void FUN_8f60507c(void)
{
int iVar1;
FUN_8f63ca20();
iVar1 = FUN_8f600788(0);
if (iVar1 == 0) {
FUN_8f63cbb4(s_HALT__reboot_into_dload_mode____8f662d5c);
FUN_8f600804(1);
FUN_8f63cbb4(s_HALT__reboot_device_failed_8f662d80);
}
else {
FUN_8f63cbb4(s_HALT__set_download_mode_not_supp_8f662d9c);
}
FUN_8f63cbb4(s_HALT__spinning_forever____8f662dc4);
do {
// WARNING: Do nothing block with infinite loop
} while( true );
}
void FUN_8f6050e8(int param_1,uint param_2,uint param_3)
{
int iVar1;
uint uVar2;
int iVar3;
undefined4 *puVar4;
undefined4 *puVar5;
iVar1 = DAT_8f731d80;
DAT_8f7204e8 = FUN_8f603ac8();
if (((((param_3 & 3) == 0) && (uVar2 = param_2 & 3, uVar2 == 0)) &&
((param_1 - 7U & 0xffff) < 0x19c)) &&
((iVar3 = DAT_8f7204e8 + (param_1 + 0xd) * 0x10,
*(int *)(DAT_8f7204e8 + (param_1 + 0xd) * 0x10) != 0 &&
((param_3 + 7 & 0xfffffff8) <= *(uint *)(iVar3 + 8))))) {
puVar4 = (undefined4 *)(DAT_8f7204e8 + *(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 (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
void FUN_8f6051c8(int param_1,undefined4 *param_2)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f603ac8();
DAT_8f7204e8 = iVar2;
if ((param_1 - 7U & 0xffff) < 0x19c) {
iVar3 = *(int *)(iVar2 + (param_1 + 0xd) * 0x10);
iVar4 = iVar2 + (param_1 + 0xd) * 0x10;
if (iVar3 != 0) {
*param_2 = *(undefined4 *)(iVar4 + 8);
if (*(int *)(iVar4 + 0xc) == 0) {
iVar3 = iVar2 + *(int *)(iVar4 + 4);
}
else {
iVar3 = *(int *)(iVar4 + 4) + *(int *)(iVar4 + 0xc);
}
}
}
else {
iVar3 = 0;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar3);
}
return;
}
void FUN_8f605260(int param_1,uint param_2,uint param_3,int param_4)
{
int iVar1;
uint uVar2;
undefined4 *puVar3;
int iVar4;
iVar1 = DAT_8f731d80;
DAT_8f7204e8 = FUN_8f603ac8();
if (((((param_3 & 3) == 0) && (uVar2 = param_2 & 3, uVar2 == 0)) &&
((param_1 - 7U & 0xffff) < 0x19c)) && (*(int *)(DAT_8f7204e8 + (param_1 + 0xd) * 0x10) != 0))
{
puVar3 = (undefined4 *)
(param_4 + *(int *)(DAT_8f7204e8 + (param_1 + 0xd) * 0x10 + 4) + DAT_8f7204e8);
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 (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
void FUN_8f605320(int param_1,uint param_2)
{
int iVar1;
int iVar2;
undefined *puVar3;
iVar1 = DAT_8f731d80;
if (param_1 == 0) {
FUN_8f63cbb4(s_ERROR__buf_is_NULL_8f662de0);
}
else {
iVar2 = FUN_8f614f3c();
puVar3 = (&PTR_s_Unknown_8f71778c)[iVar2];
iVar2 = FUN_8f63e9a0(puVar3);
if (iVar2 + 1U <= param_2) {
if (iVar1 == DAT_8f731d80) {
FUN_8f63e068(param_1,iVar2 + 1U,s_SERIAL_NUMBER____s_8f666a6c + 0x10,puVar3);
return;
}
goto LAB_8f6053c4;
}
}
iVar2 = 1;
if (iVar1 == DAT_8f731d80) {
return;
}
LAB_8f6053c4:
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f6053c8(undefined4 *param_1)
{
int iVar1;
int iVar2;
int iVar3;
undefined4 *puVar4;
int iVar5;
undefined4 uVar6;
iVar1 = DAT_8f731d80;
iVar2 = param_1[2];
DAT_8f7204ec = *param_1;
puVar4 = &DAT_8f7204ec;
DAT_8f7204f0 = param_1[1];
DAT_8f7204f8 = param_1[3];
DAT_8f7204fc = param_1[4];
DAT_8f7204f4 = iVar2;
if (iVar2 == 2) {
FUN_8f63e304(&DAT_8f7204ec,param_1,0x918);
return;
}
if (iVar2 == 1) {
iVar2 = param_1[4];
if (iVar2 != 0) {
iVar5 = 0;
do {
iVar3 = iVar5 + 1;
uVar6 = param_1[iVar5 * 0x10 + 0xb];
(&DAT_8f720514)[iVar5 * 0x12] = param_1[iVar5 * 0x10 + 10];
(&DAT_8f720518)[iVar5 * 0x12] = uVar6;
uVar6 = param_1[iVar5 * 0x10 + 0xd];
(&DAT_8f72051c)[iVar5 * 0x12] = param_1[iVar5 * 0x10 + 0xc];
(&DAT_8f720520)[iVar5 * 0x12] = uVar6;
puVar4[0xe] = param_1[iVar5 * 0x10 + 0xe];
puVar4[0xf] = param_1[iVar5 * 0x10 + 0xf];
puVar4[0x10] = param_1[iVar5 * 0x10 + 0x10];
puVar4[0x11] = param_1[iVar5 * 0x10 + 0x11];
puVar4 = puVar4 + 0x12;
*puVar4 = param_1[iVar5 * 0x10 + 0x12];
iVar5 = iVar3;
} while (iVar3 != iVar2);
}
}
else if (iVar2 == 0) {
iVar5 = param_1[4];
if (iVar5 != 0) {
do {
iVar3 = iVar2 + 1;
uVar6 = param_1[iVar2 * 0xe + 9];
(&DAT_8f720518)[iVar2 * 0x12] = 0;
(&DAT_8f720514)[iVar2 * 0x12] = uVar6;
uVar6 = param_1[iVar2 * 0xe + 10];
(&DAT_8f720520)[iVar2 * 0x12] = 0;
(&DAT_8f72051c)[iVar2 * 0x12] = uVar6;
puVar4[0xe] = param_1[iVar2 * 0xe + 0xb];
puVar4[0xf] = param_1[iVar2 * 0xe + 0xc];
puVar4[0x10] = param_1[iVar2 * 0xe + 0xd];
puVar4[0x11] = param_1[iVar2 * 0xe + 0xe];
puVar4 = puVar4 + 0x12;
*puVar4 = param_1[iVar3 * 0xe + 1];
iVar2 = iVar3;
} while (iVar3 != iVar5);
}
}
else {
FUN_8f63cbb4(s_ERROR__Unknown_smem_ram_ptable_v_8f662e58);
FUN_8f63cce8();
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6055b0(void)
{
int iVar1;
undefined4 uVar2;
int local_18;
int local_14;
local_14 = DAT_8f731d80;
iVar1 = FUN_8f605260(0x192,&local_18,4,8);
if (iVar1 == 0) {
if (((local_18 != 2) && (local_18 != 1)) && (local_18 != 0)) {
FUN_8f63cbb4(s_ERROR__Wrong_smem_ram_ptable_ver_8f662f34);
FUN_8f63cce8();
}
iVar1 = FUN_8f6050e8(0x192,&DAT_8f720e04);
if (((iVar1 == 0) && (DAT_8f720e04 == -0x625a1f58)) && (DAT_8f720e08 == -0x50613b1e)) {
FUN_8f6053c8(&DAT_8f720e04);
uVar2 = 1;
goto LAB_8f605644;
}
}
uVar2 = 0;
LAB_8f605644:
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
// WARNING: Removing unreachable block (ram,0x8f60570c)
void FUN_8f6056c0(undefined4 param_1,int param_2)
{
FUN_8f63e304(param_1,param_2 * 0x48 + -0x708dfafc,0x48);
return;
}
// WARNING: Removing unreachable block (ram,0x8f60574c)
void FUN_8f605710(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f60578c)
void FUN_8f605750(void)
{
return;
}
void FUN_8f605790(void)
{
int iVar1;
int iVar2;
int iVar3;
undefined auStack_64 [16];
uint local_54;
int local_40;
int local_38;
int local_1c;
local_1c = DAT_8f731d80;
iVar1 = FUN_8f6055b0();
if (iVar1 == 0) {
FUN_8f63cce8();
}
iVar1 = DAT_8f7204fc;
if (DAT_8f7204fc != 0) {
iVar2 = -0x708dfafc;
iVar3 = 0;
do {
FUN_8f63e304(auStack_64,iVar2,0x48);
if ((local_38 == 1) && (local_40 == 0xe || local_40 == 5)) {
if ((local_54 & 0xfffff) != 0) {
FUN_8f63cce8();
}
goto LAB_8f605844;
}
iVar3 = iVar3 + 1;
iVar2 = iVar2 + 0x48;
} while (iVar3 != iVar1);
}
local_54 = 0;
LAB_8f605844:
if (local_1c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(local_54);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f605c14)
// WARNING: Removing unreachable block (ram,0x8f605c5c)
// WARNING: Removing unreachable block (ram,0x8f605ca4)
// WARNING: Removing unreachable block (ram,0x8f605cec)
// WARNING: Removing unreachable block (ram,0x8f605d34)
// WARNING: Removing unreachable block (ram,0x8f605d10)
// WARNING: Removing unreachable block (ram,0x8f605cc8)
// WARNING: Removing unreachable block (ram,0x8f605c80)
// WARNING: Removing unreachable block (ram,0x8f605c38)
// WARNING: Removing unreachable block (ram,0x8f605bf0)
// WARNING: Removing unreachable block (ram,0x8f605d58)
void FUN_8f6058bc(int param_1,undefined4 param_2)
{
int iVar1;
int iVar2;
char *pcVar3;
undefined4 uVar4;
undefined *puVar5;
iVar1 = DAT_8f731d80;
switch(param_2) {
case 6:
case 0xc:
puVar5 = (&PTR_s_modem_8f7177f0)[DAT_8f723278];
iVar2 = FUN_8f63e6f4(puVar5,&DAT_8f662fd0);
if (iVar2 != 0) {
FUN_8f63e8d8(param_1 + 0x48,puVar5,0x48);
DAT_8f723278 = DAT_8f723278 + 1;
}
default:
switchD_8f6058e0_caseD_7:
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
case 0x45:
uVar4 = 4;
pcVar3 = &DAT_8f662fe8;
break;
case 0x46:
uVar4 = 2;
pcVar3 = &DAT_8f662ff4;
break;
case 0x47:
uVar4 = 3;
pcVar3 = &DAT_8f662ff0;
break;
case 0x48:
uVar4 = 4;
pcVar3 = s_fastboot_8f66c5d8 + 4;
break;
case 0x4a:
uVar4 = 9;
pcVar3 = s_modem_st1_8f663000;
break;
case 0x4b:
uVar4 = 9;
pcVar3 = s_modem_st2_8f66300c;
break;
case 0x4c:
uVar4 = 5;
pcVar3 = s_aboot_8f662ff8;
break;
case 0x4d:
uVar4 = 4;
pcVar3 = &DAT_8f662fd8;
break;
case 0x4e:
uVar4 = 4;
pcVar3 = &DAT_8f663018;
break;
case 0x51:
uVar4 = 4;
pcVar3 = &DAT_8f662fe0;
break;
case 0x5d:
uVar4 = 3;
pcVar3 = &DAT_8f661904;
break;
case 0x60:
uVar4 = 8;
pcVar3 = s_recovery_8f663020;
break;
case 99:
uVar4 = 4;
pcVar3 = &DAT_8f66302c;
break;
case 0x83:
if (DAT_8f72326c != 5) {
FUN_8f63e8d8(param_1 + 0x48,(&PTR_s_system_8f7177fc)[DAT_8f72326c],0x48);
DAT_8f72326c = DAT_8f72326c + 1;
}
goto switchD_8f6058e0_caseD_7;
}
FUN_8f63e304(param_1 + 0x48,pcVar3,uVar4);
return;
}
void FUN_8f605d5c(int *param_1,uint *param_2,uint *param_3,uint *param_4,uint *param_5)
{
byte bVar1;
byte bVar2;
byte bVar3;
byte bVar4;
undefined uVar5;
undefined uVar6;
undefined uVar7;
undefined uVar8;
undefined uVar9;
byte bVar10;
byte bVar11;
byte bVar12;
byte bVar13;
int iVar14;
uint uVar15;
int iVar16;
uint uVar17;
int iVar18;
int iVar19;
uint uVar20;
int extraout_r1;
uint uVar21;
uint uVar22;
uint uVar23;
uint uVar24;
bool bVar25;
undefined8 uVar26;
iVar14 = DAT_8f731d80;
uVar15 = FUN_8f60f6b0();
uVar26 = FUN_8f60f65c();
if ((*param_1 != 0x20494645) || (param_1[1] != 0x54524150)) {
iVar16 = 1;
goto LAB_8f605db0;
}
uVar21 = (uint)*(byte *)((int)param_1 + 0xe) << 0x10 | (uint)*(byte *)((int)param_1 + 0xd) << 8 |
(uint)*(byte *)(param_1 + 3) | (uint)*(byte *)((int)param_1 + 0xf) << 0x18;
*param_4 = uVar21;
if (uVar21 < 0x5c) {
FUN_8f63cbb4(s_GPT_Header_size_is_too_small_8f663034);
iVar16 = 1;
goto LAB_8f605db0;
}
if (uVar15 < uVar21) {
FUN_8f63cbb4(s_GPT_Header_size_is_too_large_8f663054);
iVar16 = 1;
goto LAB_8f605db0;
}
bVar1 = *(byte *)((int)param_1 + 0x12);
bVar2 = *(byte *)((int)param_1 + 0x11);
bVar3 = *(byte *)(param_1 + 4);
*(undefined *)(param_1 + 4) = 0;
bVar4 = *(byte *)((int)param_1 + 0x13);
*(undefined *)((int)param_1 + 0x11) = 0;
*(undefined *)((int)param_1 + 0x12) = 0;
*(undefined *)((int)param_1 + 0x13) = 0;
uVar23 = (uint)bVar1 << 0x10 | (uint)bVar2 << 8 | (uint)bVar3 | (uint)bVar4 << 0x18;
uVar21 = FUN_8f609fe8(0xffffffff,param_1,*param_4);
uVar21 = ~uVar21;
if (uVar21 != uVar23) {
FUN_8f63cbb4(s_Header_crc_mismatch_crc_val____u_8f663074,uVar21,uVar23);
iVar16 = 1;
goto LAB_8f605db0;
}
uVar5 = *(undefined *)((int)param_1 + 0x2e);
uVar22 = (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;
uVar23 = param_1[0xb];
bVar1 = *(byte *)((int)param_1 + 0x1b);
uVar6 = *(undefined *)(param_1 + 7);
bVar2 = *(byte *)(param_1 + 6);
*(char *)(param_1 + 4) = (char)uVar21;
uVar7 = *(undefined *)((int)param_1 + 0x1e);
*(char *)((int)param_1 + 0x13) = (char)(uVar21 >> 0x18);
uVar8 = *(undefined *)((int)param_1 + 0x1f);
uVar9 = *(undefined *)((int)param_1 + 0x1d);
*(char *)((int)param_1 + 0x11) = (char)(uVar21 >> 8);
*(char *)((int)param_1 + 0x12) = (char)(uVar21 >> 0x10);
bVar3 = *(byte *)((int)param_1 + 0x19);
bVar4 = *(byte *)((int)param_1 + 0x1a);
*param_2 = uVar22;
param_2[1] = uVar23;
iVar16 = DAT_8f723274;
*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;
uVar24 = (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 = uVar24;
bVar10 = *(byte *)(param_1 + 0xc);
bVar11 = *(byte *)((int)param_1 + 0x31);
bVar12 = *(byte *)((int)param_1 + 0x32);
bVar13 = *(byte *)((int)param_1 + 0x33);
uVar21 = param_1[0xd];
if ((iVar16 == 0) &&
(CONCAT13(uVar8,CONCAT12(uVar7,CONCAT11(uVar9,uVar6))) != 0 ||
((uint)bVar2 | (uint)bVar4 << 0x10 | (uint)bVar3 << 8 | (uint)bVar1 << 0x18) != 1)) {
FUN_8f63cbb4(s_GPT_first_usable_LBA_mismatch_8f6630ac);
iVar16 = 1;
goto LAB_8f605db0;
}
uVar26 = FUN_8f660e18((int)uVar26,(int)((ulonglong)uVar26 >> 0x20),uVar15,0,uVar5,0);
uVar20 = (uint)((ulonglong)uVar26 >> 0x20);
uVar17 = (uint)uVar26;
bVar25 = uVar20 <= uVar23;
if (uVar23 == uVar20) {
bVar25 = uVar17 <= uVar22;
}
if (bVar25 && (uVar23 != uVar20 || uVar22 != uVar17)) {
FUN_8f63cbb4(s_Invalid_first_usable_lba_8f6630cc);
iVar16 = 1;
goto LAB_8f605db0;
}
uVar23 = (uint)bVar10 | (uint)bVar12 << 0x10 | (uint)bVar11 << 8 | (uint)bVar13 << 0x18;
bVar25 = uVar20 <= uVar21;
if (uVar21 == uVar20) {
bVar25 = uVar17 <= uVar23;
}
if (bVar25 && (uVar21 != uVar20 || uVar23 != uVar17)) {
FUN_8f63cbb4(s_Invalid_last_usable_lba_8f6630e8);
iVar16 = 1;
goto LAB_8f605db0;
}
if (uVar24 != 0x80) {
FUN_8f63cbb4(s_Invalid_parition_entry_size_8f663104);
iVar16 = 1;
goto LAB_8f605db0;
}
uVar21 = *param_5;
if (0x80 < uVar21) {
FUN_8f63cbb4(s_Invalid_maximum_partition_count_8f663124);
iVar16 = 1;
goto LAB_8f605db0;
}
iVar18 = FUN_8f66024c(uVar21,uVar15 >> 7);
FUN_8f6602f4(uVar21,uVar15 >> 7);
if (extraout_r1 != 0) {
iVar18 = iVar18 + 1;
}
iVar19 = FUN_8f63e150(0x40,uVar15 * iVar18 + 0x3f & 0xffffffc0);
iVar16 = DAT_8f723270;
if (iVar19 == 0) {
FUN_8f63cbb4(s_Failed_to_Allocate_memory_to_rea_8f663148);
iVar16 = 1;
goto LAB_8f605db0;
}
if (DAT_8f723270 == 0) {
if (param_1[0x13] == 0 &&
((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) == 2) {
iVar16 = FUN_8f60f940(uVar15 * 2,CARRY4(uVar15,uVar15),iVar19,uVar15 * iVar18);
if (iVar16 == 0) {
uVar21 = (uint)*(byte *)((int)param_1 + 0x5a) << 0x10 |
(uint)*(byte *)((int)param_1 + 0x59) << 8 | (uint)*(byte *)(param_1 + 0x16) |
(uint)*(byte *)((int)param_1 + 0x5b) << 0x18;
uVar15 = FUN_8f609fe8(0xffffffff,iVar19,*param_3 * *param_5);
if (~uVar15 == uVar21) goto LAB_8f6062ec;
iVar16 = 1;
FUN_8f63cbb4(s_Partition_entires_crc_mismatch_c_8f6631c0,~uVar15,uVar21);
}
else {
FUN_8f63cbb4(s_GPT__Could_not_read_primary_gpt_f_8f663194);
}
}
else {
FUN_8f63cbb4(s_Starting_LBA_mismatch_8f66317c);
}
}
else {
LAB_8f6062ec:
iVar16 = 0;
}
FUN_8f63e200(iVar19);
LAB_8f605db0:
if (iVar14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar16);
}
void FUN_8f606524(int param_1,undefined4 param_2,undefined4 param_3,uint param_4)
{
longlong lVar1;
int iVar2;
int iVar3;
iVar2 = DAT_8f731d80;
lVar1 = (ulonglong)param_4 *
(ulonglong)
((uint)*(byte *)(param_1 + 0x4a) << 0x10 | (uint)*(byte *)(param_1 + 0x49) << 8 |
(uint)*(byte *)(param_1 + 0x48) | (uint)*(byte *)(param_1 + 0x4b) << 0x18);
iVar3 = FUN_8f60f704((int)lVar1,
param_4 * *(int *)(param_1 + 0x4c) + (int)((ulonglong)lVar1 >> 0x20),param_3,
param_2,*(undefined *)(param_1 + 0x4e),0,*(undefined *)(param_1 + 0x4f),0);
if (iVar3 != 0) {
FUN_8f63cbb4(s_GPT__FAILED_to_write_the_partiti_8f663204);
}
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar3);
}
void FUN_8f606648(int param_1)
{
int iVar1;
undefined4 uVar2;
iVar1 = DAT_8f731d80;
if ((*(char *)(param_1 + 0x1fe) == 'U') && (*(char *)(param_1 + 0x1ff) == -0x56)) {
uVar2 = 0;
}
else {
FUN_8f63cbb4(s_MBR_signature_does_not_match__8f663234);
uVar2 = 1;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f6066ac(uint param_1)
{
byte bVar1;
byte bVar2;
byte bVar3;
byte bVar4;
int iVar5;
int iVar6;
int iVar7;
int iVar8;
int iVar9;
uint uVar10;
uint uVar11;
iVar5 = DAT_8f731d80;
iVar6 = FUN_8f63e150(0x40,param_1 + 0x3f & 0xffffffc0);
if (iVar6 == 0) {
FUN_8f63cbb4(s_Error_allocating_memory_while_re_8f663254);
iVar7 = -1;
}
else {
iVar7 = FUN_8f60f940(0,0,iVar6,param_1);
if (iVar7 == 0) {
if (param_1 < 0x1ff) {
iVar7 = 1;
}
else {
iVar7 = FUN_8f606648(iVar6);
iVar9 = iVar6;
if (iVar7 == 0) {
do {
uVar11 = (uint)*(byte *)(iVar9 + 0x1c2);
if (uVar11 == 0xee) {
iVar7 = 0;
DAT_8f723268 = 1;
goto LAB_8f60670c;
}
iVar8 = DAT_8f723264 * 0x98 + DAT_8f731d88;
*(uint *)(iVar8 + 0x10) = uVar11;
*(uint *)(iVar8 + 0x40) = (uint)*(byte *)(iVar9 + 0x1be);
*(undefined4 *)(iVar8 + 0x44) = 0;
bVar1 = *(byte *)(iVar9 + 0x1c8);
bVar2 = *(byte *)(iVar9 + 0x1c7);
bVar3 = *(byte *)(iVar9 + 0x1c6);
bVar4 = *(byte *)(iVar9 + 0x1c9);
*(undefined4 *)(iVar8 + 0x2c) = 0;
uVar10 = (uint)bVar1 << 0x10 | (uint)bVar2 << 8 | (uint)bVar3 | (uint)bVar4 << 0x18;
*(uint *)(iVar8 + 0x28) = uVar10;
bVar1 = *(byte *)(iVar9 + 0x1cc);
bVar2 = *(byte *)(iVar9 + 0x1cb);
bVar3 = *(byte *)(iVar9 + 0x1ca);
bVar4 = *(byte *)(iVar9 + 0x1cd);
*(undefined4 *)(iVar8 + 0x3c) = 0;
*(uint *)(iVar8 + 0x38) =
(uint)bVar1 << 0x10 | (uint)bVar2 << 8 | (uint)bVar3 | (uint)bVar4 << 0x18;
FUN_8f6058bc(iVar8,uVar11);
DAT_8f723264 = DAT_8f723264 + 1;
if (DAT_8f723264 == 0x80) goto LAB_8f606858;
iVar7 = iVar7 + 1;
iVar9 = iVar9 + 0x10;
} while (iVar7 != 4);
if (uVar11 == 5) {
iVar7 = FUN_8f60f940(param_1 * uVar10,0,iVar6,param_1);
uVar11 = uVar10;
while (iVar7 == 0) {
iVar7 = FUN_8f606648(iVar6);
if (iVar7 != 0) goto LAB_8f606858;
iVar7 = DAT_8f723264 * 0x98 + DAT_8f731d88;
*(uint *)(iVar7 + 0x40) = (uint)*(byte *)(iVar6 + 0x1be);
*(undefined4 *)(iVar7 + 0x44) = 0;
*(uint *)(iVar7 + 0x10) = (uint)*(byte *)(iVar6 + 0x1c2);
bVar1 = *(byte *)(iVar6 + 0x1c8);
bVar2 = *(byte *)(iVar6 + 0x1c7);
bVar3 = *(byte *)(iVar6 + 0x1c6);
bVar4 = *(byte *)(iVar6 + 0x1c9);
*(undefined4 *)(iVar7 + 0x2c) = 0;
*(uint *)(iVar7 + 0x28) =
uVar11 + ((uint)bVar1 << 0x10 | (uint)bVar2 << 8 | (uint)bVar3 |
(uint)bVar4 << 0x18);
bVar1 = *(byte *)(iVar6 + 0x1cc);
bVar2 = *(byte *)(iVar6 + 0x1cb);
bVar3 = *(byte *)(iVar6 + 0x1ca);
bVar4 = *(byte *)(iVar6 + 0x1cd);
*(undefined4 *)(iVar7 + 0x3c) = 0;
*(uint *)(iVar7 + 0x38) =
(uint)bVar1 << 0x10 | (uint)bVar2 << 8 | (uint)bVar3 | (uint)bVar4 << 0x18;
FUN_8f6058bc(iVar7);
DAT_8f723264 = DAT_8f723264 + 1;
if ((DAT_8f723264 == 0x80) ||
(uVar11 = (uint)*(byte *)(iVar6 + 0x1d8) << 0x10 |
(uint)*(byte *)(iVar6 + 0x1d7) << 8 | (uint)*(byte *)(iVar6 + 0x1d6) |
(uint)*(byte *)(iVar6 + 0x1d9) << 0x18, uVar11 == 0)) goto LAB_8f606858;
uVar11 = uVar10 + uVar11;
iVar7 = FUN_8f60f940(param_1 * uVar11,0,iVar6,param_1);
}
}
else {
LAB_8f606858:
iVar7 = 0;
}
}
}
}
else {
FUN_8f63cbb4(s_Could_not_read_partition_from_mm_8f66328c);
}
LAB_8f60670c:
FUN_8f63e200(iVar6);
}
if (iVar5 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar7);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f606a14)
void FUN_8f6069d4(void)
{
DAT_8f723264 = 0;
return;
}
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f606a18(void)
{
uint uVar1;
undefined *puVar2;
byte bVar3;
byte bVar4;
byte bVar5;
byte bVar6;
longlong lVar7;
uint uVar8;
uint uVar9;
undefined uVar10;
uint uVar11;
int iVar12;
undefined4 uVar13;
int iVar14;
int iVar15;
uint uVar16;
undefined *puVar17;
int iVar18;
uint uVar19;
uint uVar20;
int iVar21;
undefined4 in_lr;
int iVar22;
undefined8 uVar23;
longlong lVar24;
uint local_ac;
undefined auStack_8c [4];
int local_88;
int local_84;
undefined auStack_80 [12];
undefined local_74 [72];
int local_2c;
local_2c = DAT_8f731d80;
uVar11 = FUN_8f60f6b0();
if ((DAT_8f731d88 == 0) && (DAT_8f731d88 = FUN_8f63e1a4(0x80,0x98), DAT_8f731d88 == 0)) {
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_partition_pa_8f6632b0,0x68,s_partition_entries_8f6632d8);
}
iVar12 = FUN_8f6066ac(uVar11);
if (iVar12 != 0) {
FUN_8f63cbb4(s_MMC_Boot__MBR_read_failed__8f6632ec);
uVar13 = 1;
goto LAB_8f606a80;
}
if (DAT_8f723268 == 0) {
LAB_8f606a7c:
uVar13 = 0;
}
else {
local_88 = iVar12;
uVar23 = FUN_8f60f65c();
iVar12 = FUN_8f63e150(0x40,uVar11 + 0x3f & 0xffffffc0);
if (iVar12 == 0) {
FUN_8f63cbb4(s_Failed_to_Allocate_memory_to_rea_8f663148);
}
else {
iVar14 = FUN_8f60f940(uVar11,0,iVar12,uVar11);
if (iVar14 == 0) {
iVar15 = FUN_8f605d5c(iVar12,auStack_80,&local_84,auStack_8c,&local_88);
iVar14 = DAT_8f723274;
if (iVar15 == 0) {
LAB_8f606bd8:
DAT_8f723274 = iVar14;
bVar3 = *(byte *)(iVar12 + 0x49);
bVar4 = *(byte *)(iVar12 + 0x4a);
bVar5 = *(byte *)(iVar12 + 0x4b);
bVar6 = *(byte *)(iVar12 + 0x48);
iVar14 = *(int *)(iVar12 + 0x4c);
uVar1 = uVar11 >> 7;
uVar8 = -uVar1;
iVar15 = FUN_8f66024c(uVar8 & local_88 + -1 + uVar1,uVar1);
if (iVar15 != 0) {
lVar24 = (ulonglong)uVar11 *
(ulonglong)
((uint)bVar6 | (uint)bVar3 << 8 | (uint)bVar4 << 0x10 | (uint)bVar5 << 0x18);
local_ac = 0;
uVar9 = (uint)lVar24;
do {
if (0x7f < DAT_8f723264) {
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_partition_pa_8f6632b0,0x147,
s_partition_count___NUM_PARTITIONS_8f663374);
}
uVar16 = FUN_8f60f940(uVar9 + uVar11 * local_ac,
uVar11 * iVar14 + (int)((ulonglong)lVar24 >> 0x20) +
(uint)CARRY4(uVar9,uVar11 * local_ac),iVar12,uVar11);
if (uVar16 != 0) {
FUN_8f63cbb4(s_GPT__mmc_read_card_failed_readin_8f663398);
goto LAB_8f606b64;
}
if (uVar1 == 0) {
uVar16 = uVar8 & local_88 - 1U;
}
else {
iVar15 = DAT_8f731d88;
do {
FUN_8f63e304(DAT_8f723264 * 0x98 + iVar15,local_84 * uVar16 + iVar12,0x10);
if (*(short *)(DAT_8f731d88 + DAT_8f723264 * 0x98) == 0) {
uVar16 = uVar8 & local_88 + -1 + uVar1;
local_ac = uVar16;
goto LAB_8f6071a4;
}
FUN_8f63e304(DAT_8f731d88 + DAT_8f723264 * 0x98 + 0x14,
local_84 * uVar16 + iVar12 + 0x10);
iVar21 = local_84 * uVar16 + iVar12;
iVar22 = DAT_8f723264 * 0x98 + DAT_8f731d88;
uVar20 = (uint)*(byte *)(iVar21 + 0x21) << 8 |
(uint)*(byte *)(iVar21 + 0x22) << 0x10 | (uint)*(byte *)(iVar21 + 0x20) |
(uint)*(byte *)(iVar21 + 0x23) << 0x18;
iVar15 = *(int *)(iVar21 + 0x24);
*(uint *)(iVar22 + 0x28) = uVar20;
*(int *)(iVar22 + 0x2c) = iVar15;
uVar19 = (uint)*(byte *)(iVar21 + 0x29) << 8 |
(uint)*(byte *)(iVar21 + 0x2a) << 0x10 | (uint)*(byte *)(iVar21 + 0x28) |
(uint)*(byte *)(iVar21 + 0x2b) << 0x18;
iVar18 = *(int *)(iVar21 + 0x2c);
*(uint *)(iVar22 + 0x30) = uVar19;
*(int *)(iVar22 + 0x34) = iVar18;
*(uint *)(iVar22 + 0x38) = (uVar19 + 1) - uVar20;
*(uint *)(iVar22 + 0x3c) =
(iVar18 + (uint)(0xfffffffe < uVar19)) -
(iVar15 + (uint)(uVar19 + 1 < uVar20));
uVar13 = *(undefined4 *)(iVar21 + 0x34);
*(uint *)(iVar22 + 0x40) =
(uint)*(byte *)(iVar21 + 0x33) << 0x18 |
(uint)*(byte *)(iVar21 + 0x31) << 8 | (uint)*(byte *)(iVar21 + 0x32) << 0x10
| (uint)*(byte *)(iVar21 + 0x30);
*(undefined4 *)(iVar22 + 0x44) = uVar13;
FUN_8f63e410(local_74,0,0x48);
FUN_8f63e304(local_74,local_84 * uVar16 + iVar12 + 0x38,0x48);
iVar21 = DAT_8f723264 * 0x98 + DAT_8f731d88;
uVar10 = FUN_8f60ffd4();
iVar15 = DAT_8f731d88;
iVar18 = 0;
puVar17 = (undefined *)(DAT_8f723264 * 0x98 + DAT_8f731d88 + 0x47);
*(undefined *)(iVar21 + 0x90) = uVar10;
do {
puVar2 = local_74 + iVar18;
iVar18 = iVar18 + 2;
puVar17 = puVar17 + 1;
*puVar17 = *puVar2;
} while (iVar18 != 0x48);
uVar16 = uVar16 + 1;
DAT_8f723264 = DAT_8f723264 + 1;
} while (uVar16 != uVar1);
uVar16 = local_88 + -1 + uVar1 & uVar8;
}
LAB_8f6071a4:
uVar16 = FUN_8f66024c(uVar16,uVar1);
local_ac = local_ac + 1;
} while (local_ac < uVar16);
}
FUN_8f63e200(iVar12);
goto LAB_8f606a7c;
}
lVar24 = FUN_8f660e18((int)uVar23,(int)((ulonglong)uVar23 >> 0x20),uVar11,0);
if (lVar24 == 0) {
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_partition_pa_8f6632b0,0x12d,
s_card_size_sec___0_8f663308);
}
lVar7 = (ulonglong)uVar11 * (ulonglong)((int)lVar24 - 1);
iVar14 = FUN_8f60f940((int)lVar7,
uVar11 * ((int)((ulonglong)lVar24 >> 0x20) - (uint)((int)lVar24 == 0))
+ (int)((ulonglong)lVar7 >> 0x20),iVar12,uVar11);
if (iVar14 == 0) {
DAT_8f723274 = 1;
iVar14 = FUN_8f605d5c(iVar12,auStack_80,&local_84,auStack_8c,&local_88);
if (iVar14 == 0) goto LAB_8f606bd8;
FUN_8f63cbb4(s_GPT__Primary_and_backup_signatur_8f663348);
}
else {
FUN_8f63cbb4(s_GPT__Could_not_read_backup_gpt_f_8f66331c);
}
}
else {
FUN_8f63cbb4(s_GPT__Could_not_read_primary_gpt_f_8f663194);
}
LAB_8f606b64:
FUN_8f63e200(iVar12);
}
FUN_8f63cbb4(s_MMC_Boot__GPT_read_failed__8f6633d0);
uVar13 = 1;
}
LAB_8f606a80:
if (local_2c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar13);
}
// WARNING: Removing unreachable block (ram,0x8f6073a0)
void FUN_8f6072d0(byte *param_1,int param_2)
{
uint uVar1;
byte *pbVar2;
uint uVar4;
int iVar5;
uint uVar6;
uint uVar7;
uint uVar8;
bool bVar9;
byte *pbVar3;
if (0 < param_2) {
uVar7 = 0xffffffff;
pbVar3 = param_1;
do {
pbVar2 = pbVar3 + 1;
uVar8 = (uint)*pbVar3;
uVar4 = 7;
uVar6 = 0;
do {
uVar1 = uVar8 & 1;
uVar8 = (int)uVar8 >> 1;
if (uVar1 != 0) {
uVar6 = uVar6 | 1 << (uVar4 & 0xff);
}
uVar4 = uVar4 - 1;
} while (uVar4 != 0xffffffff);
iVar5 = 8;
do {
bVar9 = -((int)uVar7 >> 0x1f) != (uVar6 << 0x18) >> 0x1f;
uVar7 = uVar7 << 1;
if (bVar9) {
uVar7 = uVar7 ^ 0x4c00000;
}
uVar6 = uVar6 << 1;
if (bVar9) {
uVar7 = uVar7 ^ 0x11db7;
}
iVar5 = iVar5 + -1;
} while (iVar5 != 0);
pbVar3 = pbVar2;
} while (pbVar2 != param_1 + param_2);
}
iVar5 = 0x1f;
do {
iVar5 = iVar5 + -1;
} while (iVar5 != -1);
return;
}
void FUN_8f6073a4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5,
int param_6,int param_7,int param_8)
{
int iVar1;
undefined uVar2;
uint uVar3;
undefined4 uVar4;
char cVar5;
char *pcVar6;
char cVar7;
int iVar8;
int iVar9;
char cVar10;
int iVar11;
int iVar12;
char *pcVar13;
char cVar14;
int iVar15;
char cVar16;
char cVar17;
int iVar18;
char cVar19;
char cVar20;
bool bVar21;
longlong lVar22;
undefined local_84;
char local_78;
char local_74;
char local_70;
char local_6c;
char local_68;
char local_60;
undefined local_5c;
undefined local_58;
undefined local_54;
char local_4c;
undefined local_48;
undefined local_44;
undefined local_40;
undefined local_3c;
iVar1 = DAT_8f731d80;
lVar22 = FUN_8f660e18(param_3,param_4,param_8,0);
iVar18 = (int)((ulonglong)lVar22 >> 0x20);
uVar3 = (uint)lVar22;
if (lVar22 == 0) {
cVar17 = '\0';
uVar2 = 0x7f;
cVar19 = -1;
local_54 = 0x7f;
local_74 = '\x7f';
cVar20 = '\0';
local_4c = -0x22;
local_58 = 0xff;
local_3c = 0;
local_40 = 0;
local_44 = 0;
local_48 = 0;
local_68 = '\0';
local_6c = '\0';
local_70 = '\0';
local_84 = 0;
local_5c = 0;
local_78 = -0x23;
local_60 = -2;
cVar5 = cVar17;
cVar7 = cVar17;
cVar14 = cVar19;
cVar10 = cVar17;
cVar16 = cVar17;
}
else {
iVar11 = uVar3 - 1;
local_4c = (char)lVar22;
iVar12 = iVar18 - (uint)(uVar3 == 0);
iVar8 = uVar3 - 0x22;
iVar9 = iVar18 - (uint)(uVar3 < 0x22);
local_60 = local_4c + -1;
iVar15 = uVar3 - 0x21;
local_78 = local_4c + -0x22;
local_4c = local_4c + -0x21;
iVar18 = iVar18 - (uint)(uVar3 < 0x21);
local_5c = (undefined)((uint)iVar11 >> 0x18);
local_84 = (undefined)((uint)iVar12 >> 0x18);
cVar17 = (char)iVar12;
local_70 = (char)((uint)iVar8 >> 0x18);
local_74 = (char)((uint)(iVar8 * 0x100) >> 0x18);
cVar19 = (char)((uint)(iVar11 * 0x10000) >> 0x18);
uVar2 = (undefined)((uint)(iVar11 * 0x100) >> 0x18);
local_54 = (undefined)((uint)(iVar15 * 0x100) >> 0x18);
local_58 = (undefined)((uint)(iVar15 * 0x10000) >> 0x18);
local_68 = (char)((uint)(iVar9 * 0x10000) >> 0x18);
local_40 = (undefined)((uint)(iVar18 * 0x10000) >> 0x18);
local_44 = (undefined)iVar18;
local_48 = (undefined)((uint)iVar15 >> 0x18);
local_6c = (char)iVar9;
cVar20 = (char)((uint)iVar9 >> 0x18);
local_3c = (undefined)((uint)(iVar18 * 0x100) >> 0x18);
cVar5 = (char)((uint)(iVar12 * 0x10000) >> 0x18);
cVar7 = (char)((uint)(iVar12 * 0x100) >> 0x18);
cVar14 = (char)((uint)(iVar8 * 0x10000) >> 0x18);
cVar10 = (char)((uint)(iVar9 * 0x100) >> 0x18);
cVar16 = (char)((uint)iVar18 >> 0x18);
}
iVar8 = param_1 + param_8;
iVar18 = iVar8 + param_8 + param_5 * 2;
pcVar13 = (char *)(iVar8 + param_8);
*(char *)(iVar8 + 0x21) = cVar19;
*(undefined *)(iVar8 + 0x22) = uVar2;
*(char *)(iVar8 + 0x20) = local_60;
*(char *)(iVar8 + 0x24) = cVar17;
*(char *)(iVar8 + 0x25) = cVar5;
*(undefined *)(iVar8 + 0x23) = local_5c;
*(char *)(iVar8 + 0x26) = cVar7;
*(char *)(iVar8 + 0x31) = cVar14;
*(undefined *)(iVar8 + 0x27) = local_84;
*(char *)(iVar8 + 0x36) = cVar10;
*(char *)(iVar8 + 0x37) = cVar20;
*(char *)(iVar8 + 0x30) = local_78;
*(char *)(iVar8 + 0x32) = local_74;
*(char *)(iVar8 + 0x33) = local_70;
*(char *)(iVar8 + 0x34) = local_6c;
*(char *)(iVar8 + 0x35) = local_68;
*(char *)(iVar18 + 0x19) = cVar19;
*(char *)(iVar18 + 0x18) = local_60;
*(undefined *)(iVar18 + 0x1a) = uVar2;
*(undefined *)(iVar18 + 0x1b) = local_5c;
*(char *)(iVar18 + 0x1c) = cVar17;
*(char *)(iVar18 + 0x1d) = cVar5;
*(char *)(iVar18 + 0x1e) = cVar7;
*(char *)(iVar18 + 0x30) = local_78;
*(char *)(iVar18 + 0x32) = local_74;
*(char *)(iVar18 + 0x33) = local_70;
*(undefined *)(iVar18 + 0x1f) = local_84;
*(char *)(iVar18 + 0x34) = local_6c;
*(char *)(iVar18 + 0x35) = local_68;
*(char *)(iVar18 + 0x48) = local_4c;
*(undefined *)(iVar18 + 0x49) = local_58;
*(char *)(iVar18 + 0x31) = cVar14;
*(char *)(iVar18 + 0x36) = cVar10;
*(char *)(iVar18 + 0x37) = cVar20;
*(undefined *)(iVar18 + 0x4a) = local_54;
*(undefined *)(iVar18 + 0x4b) = local_48;
*(undefined *)(iVar18 + 0x4c) = local_44;
*(undefined *)(iVar18 + 0x4d) = local_40;
*(undefined *)(iVar18 + 0x4e) = local_3c;
*(char *)(iVar18 + 0x4f) = cVar16;
if (*(char *)(param_1 + param_8 * 2) == '\0') {
iVar9 = -0x58;
}
else {
iVar9 = 0;
pcVar6 = pcVar13;
do {
pcVar6 = pcVar6 + 0x80;
iVar9 = iVar9 + 1;
} while (*pcVar6 != '\0');
iVar9 = iVar9 * 0x80 + -0x58;
}
pcVar6 = (char *)(iVar8 + iVar9 + param_8);
*pcVar6 = local_78;
pcVar6[7] = cVar20;
pcVar6[2] = local_74;
pcVar6[3] = local_70;
pcVar6[1] = cVar14;
pcVar6[4] = local_6c;
pcVar6[5] = local_68;
pcVar6[6] = cVar10;
pcVar6 = (char *)(iVar8 + iVar9 + param_8 + param_5);
*pcVar6 = local_78;
pcVar6[1] = cVar14;
pcVar6[7] = cVar20;
pcVar6[4] = local_6c;
pcVar6[2] = local_74;
pcVar6[5] = local_68;
pcVar6[3] = local_70;
pcVar6[6] = cVar10;
uVar4 = FUN_8f6072d0(pcVar13,param_7 * param_6);
*(char *)(iVar8 + 0x58) = (char)uVar4;
*(char *)(iVar8 + 0x59) = (char)((uint)uVar4 >> 8);
*(char *)(iVar8 + 0x5a) = (char)((uint)uVar4 >> 0x10);
*(char *)(iVar8 + 0x5b) = (char)((uint)uVar4 >> 0x18);
uVar4 = FUN_8f6072d0(pcVar13 + param_5,param_7 * param_6);
*(char *)(iVar18 + 0x58) = (char)uVar4;
*(char *)(iVar18 + 0x59) = (char)((uint)uVar4 >> 8);
*(char *)(iVar18 + 0x5a) = (char)((uint)uVar4 >> 0x10);
*(char *)(iVar18 + 0x5b) = (char)((uint)uVar4 >> 0x18);
*(undefined *)(iVar8 + 0x10) = 0;
*(undefined *)(iVar8 + 0x11) = 0;
*(undefined *)(iVar8 + 0x12) = 0;
*(undefined *)(iVar8 + 0x13) = 0;
uVar4 = FUN_8f6072d0(iVar8,0x5c);
*(char *)(iVar8 + 0x10) = (char)uVar4;
*(char *)(iVar8 + 0x11) = (char)((uint)uVar4 >> 8);
*(char *)(iVar8 + 0x12) = (char)((uint)uVar4 >> 0x10);
*(char *)(iVar8 + 0x13) = (char)((uint)uVar4 >> 0x18);
*(undefined *)(iVar18 + 0x10) = 0;
*(undefined *)(iVar18 + 0x11) = 0;
*(undefined *)(iVar18 + 0x12) = 0;
*(undefined *)(iVar18 + 0x13) = 0;
uVar4 = FUN_8f6072d0(iVar18,0x5c);
bVar21 = iVar1 == DAT_8f731d80;
*(char *)(iVar18 + 0x10) = (char)uVar4;
*(char *)(iVar18 + 0x11) = (char)((uint)uVar4 >> 8);
*(char *)(iVar18 + 0x12) = (char)((uint)uVar4 >> 0x10);
*(char *)(iVar18 + 0x13) = (char)((uint)uVar4 >> 0x18);
if (bVar21) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f607810(undefined4 param_1)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
int iVar6;
iVar2 = DAT_8f731d80;
iVar3 = FUN_8f63e9a0();
iVar1 = DAT_8f723264;
if (DAT_8f723264 - 1U < 0x7f) {
iVar6 = 0;
iVar5 = DAT_8f731d88 + 0x48;
do {
iVar4 = FUN_8f63e9a0(iVar5);
if ((iVar4 == iVar3) && (iVar4 = FUN_8f63e524(param_1,iVar5,iVar3), iVar4 == 0))
goto LAB_8f6078a8;
iVar6 = iVar6 + 1;
iVar5 = iVar5 + 0x98;
} while (iVar6 != iVar1);
}
iVar6 = -1;
LAB_8f6078a8:
if (iVar2 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar6);
}
return;
}
void FUN_8f6078c4(int param_1)
{
longlong lVar1;
int iVar2;
uint uVar3;
undefined4 uVar4;
int iVar5;
iVar2 = DAT_8f731d80;
uVar3 = FUN_8f60f6b0();
if (param_1 == -1) {
uVar4 = 0;
iVar5 = 0;
}
else {
iVar5 = param_1 * 0x98 + DAT_8f731d88;
lVar1 = (ulonglong)uVar3 * (ulonglong)*(uint *)(iVar5 + 0x38);
uVar4 = (undefined4)lVar1;
iVar5 = uVar3 * *(int *)(iVar5 + 0x3c) + (int)((ulonglong)lVar1 >> 0x20);
}
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar4,iVar5);
}
void FUN_8f60793c(int param_1)
{
longlong lVar1;
int iVar2;
uint uVar3;
undefined4 uVar4;
int iVar5;
iVar2 = DAT_8f731d80;
uVar3 = FUN_8f60f6b0();
if (param_1 == -1) {
uVar4 = 0;
iVar5 = 0;
}
else {
iVar5 = param_1 * 0x98 + DAT_8f731d88;
lVar1 = (ulonglong)uVar3 * (ulonglong)*(uint *)(iVar5 + 0x28);
uVar4 = (undefined4)lVar1;
iVar5 = uVar3 * *(int *)(iVar5 + 0x2c) + (int)((ulonglong)lVar1 >> 0x20);
}
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar4,iVar5);
}
// WARNING: Removing unreachable block (ram,0x8f6079fc)
void FUN_8f6079b4(void)
{
return;
}
void FUN_8f607a00(uint param_1,undefined4 param_2,undefined4 param_3)
{
int iVar1;
undefined4 uVar2;
iVar1 = DAT_8f731d80;
if (param_1 < DAT_8f723264) {
FUN_8f63e068(param_2,param_3,s_ptn__d___s__llu_0x_02x__llu__llu_8f663434,param_1,
param_1 * 0x98 + DAT_8f731d88 + 0x48);
uVar2 = 0;
}
else {
uVar2 = 0xffffffff;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
// WARNING: Removing unreachable block (ram,0x8f607adc)
void FUN_8f607aac(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f607b24)
void FUN_8f607ae0(void)
{
return;
}
void FUN_8f607b28(int param_1)
{
undefined *puVar1;
int iVar2;
undefined *puVar3;
undefined *puVar4;
iVar2 = DAT_8f731d80;
FUN_8f63e410(&DAT_8f731d8c,0,0x48);
puVar3 = DAT_8f607b9c + 0x48;
puVar4 = DAT_8f607b9c;
do {
puVar1 = (undefined *)(param_1 + 0x38);
param_1 = param_1 + 2;
puVar4 = puVar4 + 1;
*puVar4 = *puVar1;
} while (puVar4 != puVar3);
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(&DAT_8f731d8c);
}
void FUN_8f607ba0(undefined4 param_1)
{
int iVar1;
int iVar2;
undefined4 uVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f63e6f4(s_userdata_8f663458,param_1);
if (iVar2 == 0) {
uVar3 = 1;
}
else {
iVar2 = FUN_8f63e6f4(s_cache_8f663464,param_1);
if (iVar2 == 0) {
uVar3 = 2;
}
else {
iVar2 = FUN_8f63e6f4(&DAT_8f66346c,param_1);
if (iVar2 == 0) {
uVar3 = 4;
}
else {
iVar2 = FUN_8f63e6f4(&DAT_8f663470,param_1);
if (iVar2 == 0) {
uVar3 = 8;
}
else {
iVar2 = FUN_8f63e6f4(s_system_8f663474,param_1);
if (iVar2 == 0) {
uVar3 = 0x10;
}
else {
iVar2 = FUN_8f63e6f4(s_persist_8f66347c,param_1);
if (iVar2 == 0) {
uVar3 = 0x20;
}
else {
uVar3 = 0;
}
}
}
}
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
void FUN_8f607c84(int param_1,uint *param_2,uint *param_3)
{
int iVar1;
int *piVar2;
int iVar3;
int iVar4;
undefined4 uVar5;
uint uVar6;
int iVar7;
uint uVar8;
uint uVar9;
uint uVar10;
int *piVar11;
uint uVar12;
int unaff_r11;
uint uVar13;
iVar1 = DAT_8f731d80;
piVar2 = (int *)FUN_8f63e150(0x40,0x4200);
FUN_8f60f940(0x200,0,piVar2,0x4200);
if ((((*(int *)(param_1 + 0x200) == 0x20494645) && (*(int *)(param_1 + 0x204) == 0x54524150)) &&
(*piVar2 == 0x20494645)) && (piVar2[1] == 0x54524150)) {
uVar10 = (uint)*(byte *)((int)piVar2 + 0x52) << 0x10 | (uint)*(byte *)((int)piVar2 + 0x51) << 8
| (uint)*(byte *)(piVar2 + 0x14) | (uint)*(byte *)((int)piVar2 + 0x53) << 0x18;
if (0 < (int)uVar10) {
unaff_r11 = param_1 + 0x420;
}
uVar12 = (uint)*(byte *)(param_1 + 0x252) << 0x10 | (uint)*(byte *)(param_1 + 0x251) << 8 |
(uint)*(byte *)(param_1 + 0x250) | (uint)*(byte *)(param_1 + 0x253) << 0x18;
if (0 < (int)uVar10) {
piVar11 = piVar2 + 0x88;
uVar6 = 0;
do {
iVar3 = FUN_8f63e524(unaff_r11,piVar11,0x60);
if (iVar3 != 0) {
*param_2 = uVar6;
goto LAB_8f607da0;
}
uVar6 = uVar6 + 1;
unaff_r11 = unaff_r11 + 0x80;
piVar11 = piVar11 + 0x20;
} while (uVar10 != uVar6);
}
if (*param_2 == 0xffffffff) {
if ((int)uVar10 < (int)uVar12) {
*param_2 = uVar10 + 1;
}
if ((int)uVar12 < (int)uVar10) {
*param_2 = uVar10;
}
}
LAB_8f607da0:
if (0 < (int)uVar12) {
uVar6 = 0;
iVar3 = param_1 + 0x400;
do {
while( true ) {
iVar7 = iVar3 + 0x38;
iVar4 = FUN_8f63e524(iVar7,u_persist_8f662f80,0xe);
if ((((iVar4 == 0) || (iVar4 = FUN_8f63e524(iVar7,PTR_u_cache_8f607f5c,10), iVar4 == 0))
|| ((iVar4 = FUN_8f63e524(iVar7,PTR_DAT_8f607f60,6), iVar4 == 0 ||
((iVar4 = FUN_8f63e524(iVar7,PTR_DAT_8f607f64,6), iVar4 == 0 ||
(iVar4 = FUN_8f63e524(iVar7,PTR_u_userdata_8f607f68,0x10), iVar4 == 0)))))) ||
(iVar4 = FUN_8f63e524(iVar7,PTR_u_system_8f607f6c,0xc), iVar4 == 0)) break;
LAB_8f607ea4:
uVar6 = uVar6 + 1;
iVar3 = iVar3 + 0x80;
if (uVar12 == uVar6) goto LAB_8f607eb4;
}
if ((int)uVar10 < 1) {
uVar13 = 0;
LAB_8f607e9c:
if (uVar13 != uVar10) goto LAB_8f607ea4;
}
else {
uVar13 = 0;
piVar11 = piVar2 + 0x80;
do {
iVar4 = FUN_8f63e524(iVar7,piVar11 + 0xe,0x48);
if (iVar4 == 0) {
iVar4 = FUN_8f63e524(iVar3 + 0x20,piVar11 + 8,0x60);
if (iVar4 != 0) {
uVar8 = *param_3;
FUN_8f607b28(iVar3);
uVar9 = FUN_8f607ba0();
*param_3 = uVar9 | uVar8;
}
goto LAB_8f607e9c;
}
uVar13 = uVar13 + 1;
piVar11 = piVar11 + 0x20;
} while (uVar10 != uVar13);
}
uVar6 = uVar6 + 1;
uVar9 = *param_3;
FUN_8f607b28(iVar3);
uVar13 = FUN_8f607ba0();
*param_3 = uVar13 | uVar9;
iVar3 = iVar3 + 0x80;
} while (uVar12 != uVar6);
}
LAB_8f607eb4:
uVar5 = 0;
}
else {
uVar5 = 0xffffffff;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar5);
}
void FUN_8f607f70(uint param_1,uint param_2,undefined4 param_3)
{
byte *pbVar1;
byte *pbVar2;
byte *pbVar3;
byte *pbVar4;
byte bVar5;
byte bVar6;
byte bVar7;
byte bVar8;
longlong lVar9;
uint uVar10;
int iVar11;
int iVar12;
int iVar13;
uint uVar14;
bool bVar15;
undefined8 uVar16;
uint local_60;
undefined auStack_48 [4];
int local_44;
int local_40;
int local_3c;
undefined auStack_38 [12];
int local_2c;
local_2c = DAT_8f731d80;
if (param_2 == 0) {
FUN_8f63cbb4(s_NULL_partition_8f663484);
iVar13 = 1;
goto LAB_8f607fb0;
}
uVar10 = FUN_8f60f6b0();
if (param_1 < 0x1ff) {
iVar13 = 1;
goto LAB_8f607fb0;
}
iVar13 = FUN_8f606648(param_2);
if (iVar13 != 0) goto LAB_8f607fb0;
if (*(char *)(param_2 + 0x1c2) == -0x12) {
iVar12 = param_2 + uVar10;
DAT_8f723270 = 1;
uVar14 = 0xffffffff;
local_3c = -1;
local_44 = iVar13;
iVar13 = FUN_8f605d5c(iVar12,auStack_38,&local_40,auStack_48,&local_44);
if (iVar13 == 0) {
uVar16 = FUN_8f60f65c();
local_60 = local_40 * local_44;
DAT_8f723274 = 1;
bVar15 = 0x3fff < local_60;
if (bVar15) {
iVar13 = local_60 * 2;
}
else {
iVar13 = 0x8000;
}
iVar11 = iVar12 + iVar13 + uVar10;
if (!bVar15) {
uVar14 = 0x4000;
}
if (!bVar15) {
local_60 = uVar14;
}
iVar13 = FUN_8f605d5c(iVar11,auStack_38,&local_40,auStack_48,&local_44);
DAT_8f723274 = 0;
if (iVar13 == 0) {
FUN_8f6073a4(param_2,local_40,(int)uVar16,(int)((ulonglong)uVar16 >> 0x20),local_60,local_44
,local_40,uVar10);
iVar13 = FUN_8f607c84(param_2,&local_3c,param_3);
if (iVar13 == 0) {
if (-1 < local_3c) {
iVar13 = FUN_8f60f704(0,0,uVar10,param_2);
if (iVar13 == 0) {
iVar13 = FUN_8f60f704(uVar10,0,uVar10,iVar12);
if (iVar13 == 0) {
lVar9 = (ulonglong)uVar10 *
(ulonglong)
((uint)*(byte *)(iVar12 + 0x20) |
(uint)*(byte *)(iVar12 + 0x21) << 8 |
(uint)*(byte *)(iVar12 + 0x22) << 0x10 |
(uint)*(byte *)(iVar12 + 0x23) << 0x18);
iVar13 = FUN_8f60f704((int)lVar9,
uVar10 * *(int *)(iVar12 + 0x24) +
(int)((ulonglong)lVar9 >> 0x20),uVar10,iVar11);
if (iVar13 == 0) {
iVar13 = FUN_8f606524(iVar12,iVar12 + uVar10,local_60,uVar10);
if ((iVar13 == 0) &&
(iVar13 = FUN_8f606524(iVar11,local_60 + iVar12 + uVar10,local_60,uVar10),
iVar13 == 0)) {
DAT_8f723270 = 0;
DAT_8f723264 = iVar13;
FUN_8f610020();
FUN_8f63cbb4(s_GPT__Partition_Table_written_8f663634);
FUN_8f63e410(iVar12,0,param_1);
FUN_8f62f518();
}
else {
FUN_8f63cbb4(s_GPT__Could_not_write_GPT_Partiti_8f663600);
}
}
else {
FUN_8f63cbb4(s_Failed_to_write_GPT_backup_heade_8f6635dc);
}
}
else {
FUN_8f63cbb4(s_Failed_to_write_GPT_header_8f6635c0);
}
}
else {
FUN_8f63cbb4(s_Failed_to_write_Protective_MBR_8f6635a0);
}
}
}
else {
FUN_8f63cbb4(s_Failed_to_compare_gpt_8f663588);
}
}
else {
FUN_8f63cbb4(s_GPT__Backup_signature_invalid_ca_8f663558);
}
}
else {
FUN_8f63cbb4(s_GPT__Primary_signature_invalid_c_8f663524);
}
FUN_8f63cbb4(s_Re_Flash_all_the_partitions_8f663654);
goto LAB_8f607fb0;
}
iVar13 = FUN_8f606648(param_2);
if (iVar13 != 0) goto LAB_8f607fb0;
uVar16 = FUN_8f60f65c();
iVar13 = FUN_8f60fc70(0,0,(int)uVar16,(int)((ulonglong)uVar16 >> 0x20));
if (iVar13 != 0) {
FUN_8f63cbb4(s_Failed_to_erase_the_eMMC_card_8f663494);
goto LAB_8f607fb0;
}
iVar13 = FUN_8f60f704(0,0);
if (iVar13 != 0) {
FUN_8f63cbb4(s_Failed_to_write_mbr_partition_8f6634b4);
LAB_8f6083d0:
FUN_8f63cbb4(s_Failed_to_write_MBR_block_to_mmc_8f663674);
goto LAB_8f607fb0;
}
iVar13 = 0x1be;
uVar14 = param_2;
do {
if (*(char *)(uVar14 + 0x1c2) == '\x05') {
bVar5 = *(byte *)(param_2 + iVar13 + 10);
param_1 = param_2 + param_1;
bVar6 = *(byte *)(param_2 + iVar13 + 9);
uVar14 = param_2 + uVar10;
bVar7 = *(byte *)(param_2 + iVar13 + 8);
bVar8 = *(byte *)(param_2 + iVar13 + 0xb);
if (uVar14 < param_1) {
param_2 = 0;
}
if (uVar14 < param_1) goto LAB_8f608464;
break;
}
iVar13 = iVar13 + 0x10;
uVar14 = uVar14 + 0x10;
} while (iVar13 != 0x1fe);
goto LAB_8f608340;
while( true ) {
pbVar1 = (byte *)(uVar14 + 0x1d8);
pbVar2 = (byte *)(uVar14 + 0x1d7);
pbVar3 = (byte *)(uVar14 + 0x1d6);
pbVar4 = (byte *)(uVar14 + 0x1d9);
uVar14 = uVar14 + uVar10;
param_2 = (uint)*pbVar1 << 0x10 | (uint)*pbVar2 << 8 | (uint)*pbVar3 | (uint)*pbVar4 << 0x18;
if (param_1 <= uVar14) break;
LAB_8f608464:
iVar13 = FUN_8f60f704(uVar10 * (param_2 +
((uint)bVar5 << 0x10 | (uint)bVar6 << 8 | (uint)bVar7 |
(uint)bVar8 << 0x18)),0,uVar10,uVar14);
if (iVar13 != 0) {
FUN_8f63cbb4(s_Failed_to_write_EBR_block_to_sec_8f6634d4,param_2);
goto LAB_8f6083d0;
}
}
LAB_8f608340:
iVar13 = FUN_8f6066ac(uVar10);
if (iVar13 != 0) {
FUN_8f63cbb4(s_Failed_to_re_read_mbr_partition__8f663500);
}
LAB_8f607fb0:
if (local_2c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar13);
}
void FUN_8f6084c0(uint param_1,int param_2)
{
int iVar1;
int iVar2;
undefined4 uVar3;
int iVar4;
uint uVar5;
undefined8 uVar6;
int local_3c;
undefined auStack_38 [4];
int local_34;
undefined auStack_30 [12];
int local_24;
local_24 = DAT_8f731d80;
uVar6 = FUN_8f60f65c();
iVar1 = FUN_8f63e150(0x40,0x4400);
iVar2 = FUN_8f60f940(0,0,iVar1,0x4400);
if (iVar2 == 0) {
uVar3 = FUN_8f63e150(0x40,0x4200);
iVar2 = FUN_8f60f940((uint)uVar6 - 0x4200,
(int)((ulonglong)uVar6 >> 0x20) - (uint)((uint)uVar6 < 0x4200),uVar3,0x4200
);
if (iVar2 == 0) {
iVar2 = FUN_8f63e150(0x40,0x8600);
FUN_8f63e304(iVar2,iVar1,0x4400);
FUN_8f63e304(iVar2 + 0x4400,uVar3,0x4200);
iVar4 = FUN_8f605d5c(iVar1 + 0x200,auStack_30,&local_3c,auStack_38,&local_34);
if (iVar4 == 0) {
uVar5 = local_3c * local_34;
if (uVar5 < 0x4000) {
uVar5 = 0x4000;
}
FUN_8f6073a4(iVar2,local_34,param_1,param_2,uVar5,local_34,local_3c,0x200);
FUN_8f63e304(iVar1,iVar2,0x4400);
FUN_8f63e304(uVar3,iVar2 + 0x4400,0x4200);
iVar1 = FUN_8f60f704(0,0,0x4400,iVar1);
if (iVar1 == 0) {
iVar1 = FUN_8f60f704(param_1 - 0x4200,param_2 - (uint)(param_1 < 0x4200),0x4200,uVar3);
if (iVar1 == 0) {
DAT_8f723264 = iVar1;
DAT_8f723270 = iVar1;
FUN_8f610020();
FUN_8f63cbb4(s_GPT__Partition_Table_written_8f663634);
FUN_8f62f518();
}
else {
FUN_8f63cbb4(s_Write_secondary_gpt_fail_8f663714);
iVar1 = -1;
}
}
else {
FUN_8f63cbb4(s_Write_primary_gpt_fail_8f6636fc);
iVar1 = -1;
}
}
else {
FUN_8f63cbb4(s_partition_parse_gpt_header_prima_8f6636cc);
iVar1 = -1;
}
}
else {
FUN_8f63cbb4(s_Read_secondary_gpt_fail_8f6636b0);
iVar1 = -1;
}
}
else {
FUN_8f63cbb4(s_Read_primary_gpt_fail_8f663698);
iVar1 = -1;
}
if (local_24 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
void FUN_8f6086d8(int param_1,int param_2)
{
int iVar1;
uint uVar2;
uint *puVar3;
undefined4 uVar4;
iVar1 = DAT_8f731d80;
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_8f7232e0 == 0) {
uVar4 = 0x20400000;
}
else {
uVar4 = 0x22000000;
}
**(undefined4 **)(param_1 + 8) = uVar4;
puVar3 = (uint *)((*(byte *)(param_1 + 0x10) + 0x1e36c70) * 4);
}
}
*puVar3 = uVar2;
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f60877c(int param_1)
{
int iVar1;
int iVar2;
int *piVar3;
uint uVar4;
uint uVar5;
int iVar6;
int iVar7;
iVar1 = DAT_8f731d80;
FUN_8f6254dc(param_1,0x14);
if (*(int *)(param_1 + 0xc) != 0) {
iVar2 = FUN_8f603a94();
FUN_8f6254dc(*(undefined4 *)(param_1 + 0xc),0x14);
if (iVar2 != 0) {
piVar3 = (int *)FUN_8f603a94(*(undefined4 *)(iVar2 + 0x10));
iVar6 = 0;
iVar7 = *(int *)(iVar2 + 4);
*(undefined4 *)(param_1 + 0xc) = 0;
while( true ) {
do {
FUN_8f6254dc(piVar3,0x20);
} while ((piVar3[1] & 0x80U) != 0);
uVar5 = piVar3[1];
uVar4 = uVar5 & 0xff;
if (uVar4 != 0) {
uVar4 = 0xffffffff;
goto LAB_8f608838;
}
if (*piVar3 == 1) break;
uVar4 = 0x4000 - (uVar5 >> 0x10) & 0x7fff;
iVar6 = iVar6 + uVar4;
iVar7 = iVar7 - uVar4;
piVar3 = (int *)FUN_8f603a94();
}
iVar6 = iVar6 + (iVar7 - (uVar5 >> 0x10) & 0x7fff);
LAB_8f608838:
if (*(code **)(iVar2 + 8) != (code *)0x0) {
(**(code **)(iVar2 + 8))(iVar2,iVar6,uVar4);
}
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f608908(uint param_1,uint param_2,int param_3)
{
int iVar1;
uint *puVar2;
bool bVar3;
bool bVar4;
iVar1 = DAT_8f731d80;
if (param_3 - 2U < 0xfe) {
bVar4 = 0xfe < param_1;
bVar3 = param_1 == 0xff;
if (param_1 < 0x100) {
bVar4 = 0xfe < param_2;
bVar3 = param_2 == 0xff;
}
if (!bVar4 || bVar3) {
puVar2 = (uint *)FUN_8f63e114(param_3 + 8);
if (puVar2 != (uint *)0x0) {
*puVar2 = (uint)(bVar4 && !bVar3);
*(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;
}
goto LAB_8f608978;
}
}
puVar2 = (uint *)0x0;
LAB_8f608978:
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(puVar2);
}
return;
}
void FUN_8f6089a4(undefined *param_1)
{
uint uVar1;
int iVar2;
undefined uVar3;
int iVar4;
undefined4 *puVar5;
undefined *puVar6;
undefined *puVar7;
undefined *in_r12;
iVar2 = DAT_8f731d80;
uVar1 = DAT_8f717810;
if ((DAT_8f717810 < 0x100) && (param_1 != (undefined *)0x0)) {
iVar4 = FUN_8f63e9a0();
puVar5 = (undefined4 *)FUN_8f608908(3,uVar1,(iVar4 + 1) * 2);
if (puVar5 != (undefined4 *)0x0) {
puVar6 = (undefined *)((int)puVar5 + 10);
if (iVar4 != 0) {
in_r12 = param_1 + iVar4;
}
DAT_8f717810 = DAT_8f717810 + 1;
if (iVar4 != 0) {
do {
puVar7 = param_1 + 1;
uVar3 = *param_1;
puVar6[1] = 0;
*puVar6 = uVar3;
puVar6 = puVar6 + 2;
param_1 = puVar7;
} while (puVar7 != in_r12);
}
uVar3 = *(undefined *)(puVar5 + 1);
*puVar5 = DAT_8f7232e4;
DAT_8f7232e4 = puVar5;
goto LAB_8f608a58;
}
}
uVar3 = 0;
LAB_8f608a58:
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
void FUN_8f608a74(uint param_1,int param_2,ushort param_3)
{
int iVar1;
int iVar2;
undefined4 *puVar3;
uint uVar4;
iVar2 = DAT_8f731d80;
puVar3 = (undefined4 *)FUN_8f63e150(0x40,0x40);
if (puVar3 == (undefined4 *)0x0) {
FUN_8f63cce8();
}
*(ushort *)((int)puVar3 + 0x12) = param_3;
if (param_2 != 0) {
param_2 = 1;
}
*(char *)((int)puVar3 + 0x11) = (char)param_2;
uVar4 = (uint)param_3 << 0x10 | 0x20000000;
*(char *)(puVar3 + 4) = (char)param_1;
puVar3[3] = 0;
if (param_2 == 0) {
if (param_1 == 0) {
uVar4 = (uint)param_3 << 0x10 | 0x20008000;
}
puVar3[1] = 1 << (param_1 & 0xff);
}
else {
puVar3[1] = 1 << ((param_1 & 0xff) + 0x10 & 0xff);
}
iVar1 = DAT_8f7232cc;
param_2 = param_2 + param_1 * 2;
puVar3[2] = DAT_8f7232cc + param_2 * 0x40;
*(uint *)(iVar1 + param_2 * 0x40) = uVar4;
*puVar3 = DAT_8f7232d0;
DAT_8f7232d0 = puVar3;
FUN_8f6254b4(puVar3,0x14);
FUN_8f6254b4(puVar3[2],0x40);
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(puVar3);
}
void FUN_8f608ba0(int param_1,undefined4 param_2)
{
int iVar1;
uint uVar2;
int iVar3;
uint uVar4;
iVar1 = DAT_8f731d80;
if (param_1 != 1) {
if (param_1 != 2) goto LAB_8f608c08;
param_1 = 0;
}
uVar2 = 1;
do {
uVar4 = uVar2;
if (param_1 != 0) {
uVar4 = uVar2 + 0x10;
}
uVar4 = 1 << (uVar4 & 0xff);
if ((uVar4 & DAT_8f717814) == 0) {
iVar3 = FUN_8f608a74(uVar2,param_1,param_2);
if (iVar3 != 0) {
DAT_8f717814 = uVar4 | DAT_8f717814;
}
goto LAB_8f608c24;
}
uVar2 = uVar2 + 1;
} while (uVar2 != 0x10);
LAB_8f608c08:
iVar3 = 0;
LAB_8f608c24:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar3);
}
void FUN_8f608c48(void)
{
int iVar1;
undefined4 *puVar2;
undefined4 uVar3;
bool bVar4;
iVar1 = DAT_8f731d80;
puVar2 = (undefined4 *)FUN_8f63e150(0x40,0x40);
if (puVar2 == (undefined4 *)0x0) {
FUN_8f63cce8();
}
*puVar2 = 0;
puVar2[1] = 0;
uVar3 = FUN_8f63e150(0x40,0x40);
bVar4 = iVar1 == DAT_8f731d80;
puVar2[4] = uVar3;
if (bVar4) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(puVar2);
}
// WARNING: Removing unreachable block (ram,0x8f608d14)
void FUN_8f608ce0(void)
{
FUN_8f63e200();
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f608d18(int param_1,uint *param_2)
{
int **ppiVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
int **ppiVar5;
uint uVar6;
uint uVar7;
uint uVar8;
int *piVar9;
uint uVar10;
uint uVar11;
int iVar12;
uint uVar13;
iVar2 = DAT_8f731d80;
uVar11 = param_2[1];
uVar6 = *param_2;
uVar10 = uVar11;
if (0x3fff < uVar11) {
uVar10 = 0x4000;
}
piVar9 = (int *)param_2[4];
uVar8 = uVar6 & 0xfffff000;
uVar7 = uVar10 << 0x10 | 0x80;
uVar13 = uVar10 + uVar6;
piVar9[2] = uVar6;
piVar9[1] = uVar7;
piVar9[3] = uVar8 + 0x1000;
piVar9[4] = uVar8 + 0x2000;
piVar9[5] = uVar8 + 0x3000;
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) {
iVar3 = FUN_8f603a60(&DAT_8f723280);
*piVar9 = iVar3;
piVar9 = &DAT_8f723280;
DAT_8f723280 = iVar12;
}
else {
piVar9 = (int *)FUN_8f603a94(iVar12);
}
uVar6 = uVar13 & 0xfffff000;
piVar9[2] = uVar13;
uVar7 = uVar10 << 0x10 | 0x80;
piVar9[3] = uVar6 + 0x1000;
uVar13 = uVar13 + uVar10;
piVar9[1] = uVar7;
piVar9[4] = uVar6 + 0x2000;
piVar9[5] = uVar6 + 0x3000;
piVar9[6] = uVar6 + 0x4000;
}
piVar9[1] = uVar7 | 0x8000;
DAT_8f718ca8 = DAT_8f718ca8 + 1;
*piVar9 = 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
iVar3 = *(int *)(param_1 + 8);
uVar4 = FUN_8f603a60(param_2[4]);
iVar12 = *(int *)(param_1 + 8);
*(undefined4 *)(iVar3 + 8) = uVar4;
*(undefined4 *)(iVar12 + 0xc) = 0;
*(uint **)(param_1 + 0xc) = param_2;
FUN_8f6254b4(param_1,0x14);
FUN_8f6254b4(*(undefined4 *)(param_1 + 8),0x40);
FUN_8f6254b4(*(undefined4 *)(param_1 + 0xc),0x14);
uVar4 = FUN_8f603a94(*param_2);
FUN_8f6254b4(uVar4,param_2[1]);
ppiVar5 = (int **)param_2[4];
if (ppiVar5 != (int **)0x0) {
for (ppiVar1 = (int **)*ppiVar5; ppiVar1 != (int **)0x1; ppiVar1 = (int **)*ppiVar1) {
FUN_8f6254b4(ppiVar5,0x20);
if (ppiVar1 == (int **)0x0) goto LAB_8f608eec;
ppiVar5 = ppiVar1;
}
FUN_8f6254b4(ppiVar5,0x20);
}
LAB_8f608eec:
_DAT_078db1b0 = *(undefined4 *)(param_1 + 4);
DAT_8f718ca8 = DAT_8f718ca8 + -1;
if (DAT_8f718ca8 == 0) {
FUN_8f62551c();
}
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f608f40(undefined4 param_1,undefined4 param_2)
{
undefined4 *puVar1;
undefined4 *puVar2;
int iVar3;
undefined4 uVar4;
bool bVar5;
iVar3 = DAT_8f731d80;
FUN_8f63e304(*DAT_8f7232dc,param_1,param_2);
puVar1 = DAT_8f7232dc;
uVar4 = FUN_8f603a60(*DAT_8f7232dc);
puVar2 = DAT_8f7232dc;
*puVar1 = uVar4;
FUN_8f6254b4(*puVar2,param_2);
puVar1 = DAT_8f7232dc;
bVar5 = iVar3 == DAT_8f731d80;
DAT_8f7232dc[1] = param_2;
puVar1[2] = &LAB_8f608fd8;
if (bVar5) {
FUN_8f608d18(DAT_8f7232d4);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f6090a8)
void FUN_8f609048(void)
{
int iVar1;
iVar1 = DAT_8f7232dc;
*(undefined **)(DAT_8f7232dc + 8) = &LAB_8f60887c;
*(undefined4 *)(iVar1 + 4) = 0;
FUN_8f608d18(DAT_8f7232d4);
return;
}
/*
Unable to decompile 'FUN_8f6090ac'
Cause:
Low-level Error: Forced merge caused intersection
*/
// WARNING: Removing unreachable block (ram,0x8f6095f0)
// WARNING: Removing unreachable block (ram,0x8f609600)
// WARNING: Removing unreachable block (ram,0x8f609608)
void FUN_8f6095ac(void)
{
// WARNING: Do nothing block with infinite loop
// WARNING: Subroutine does not return
do {
} while( true );
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f60960c(undefined4 param_1)
{
int iVar1;
undefined4 uVar2;
undefined4 *puVar3;
uint uVar4;
bool bVar5;
iVar1 = DAT_8f731d80;
FUN_8f603df0();
_DAT_078db140 = 0x80002;
FUN_8f627600(0x14);
do {
uVar4 = _DAT_078db140 & 2;
} while (uVar4 != 0);
_DAT_078db184 = 0x80000000;
FUN_8f600ae0();
_DAT_078db098 = 8;
_DAT_078db090 = uVar4;
uVar2 = FUN_8f63d778(0x1000,0x40);
DAT_8f7232cc = FUN_8f63e150(uVar2,0x1000);
if (DAT_8f7232cc == 0) {
FUN_8f63cce8();
}
FUN_8f63e410(DAT_8f7232cc,0,0x800);
FUN_8f6254b4(DAT_8f7232cc,0x800);
_DAT_078db158 = FUN_8f603a60(DAT_8f7232cc);
_DAT_078db1a8 = 2;
_DAT_078db1b4 = 0xffffffff;
FUN_8f627600(0x14);
DAT_8f72327c = FUN_8f608a74(0,0,0x40);
DAT_8f7232d4 = FUN_8f608a74(0,1,0x40);
puVar3 = (undefined4 *)FUN_8f608c48();
DAT_8f7232dc = puVar3;
uVar2 = FUN_8f63e150(0x40,0x1000);
*puVar3 = uVar2;
puVar3 = (undefined4 *)FUN_8f608908(3,0,4);
uVar2 = DAT_8f7232e4;
bVar5 = iVar1 == DAT_8f731d80;
DAT_8f7232e4 = puVar3;
DAT_8f7232e8 = param_1;
*(undefined *)((int)puVar3 + 10) = 9;
*puVar3 = uVar2;
*(undefined *)((int)puVar3 + 0xb) = 4;
if (bVar5) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f6097d8(int param_1)
{
int iVar1;
int iVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar3 = DAT_8f7232c8;
iVar2 = param_1;
if (DAT_8f7232c8 != 0) {
FUN_8f63cbb4(s_only_one_gadget_supported_8f663774);
iVar3 = -1;
iVar2 = DAT_8f7232c8;
}
DAT_8f7232c8 = iVar2;
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar3);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f60983c(void)
{
byte bVar1;
int iVar2;
int iVar3;
undefined4 *puVar4;
undefined uVar5;
undefined4 *puVar6;
undefined4 uVar7;
byte bVar8;
char cVar9;
undefined *puVar10;
int iVar11;
uint uVar12;
iVar3 = DAT_8f731d80;
FUN_8f63cbb4(s_udc_start___8f663790);
if (DAT_8f7232e8 == 0) {
FUN_8f63cbb4(s_udc_cannot_start_before_init_8f6637a0);
uVar7 = 0xffffffff;
}
else if (DAT_8f7232c8 == 0) {
FUN_8f63cbb4(s_udc_has_no_gadget_registered_8f6637c0);
uVar7 = 0xffffffff;
}
else {
puVar6 = (undefined4 *)FUN_8f608908(1,0,0x12);
if (puVar6 == (undefined4 *)0x0) {
FUN_8f63cbb4(s_Failed_to_allocate_device_descri_8f6637e0);
FUN_8f63cce8();
}
iVar2 = DAT_8f7232e8;
uVar12 = 0;
*(undefined *)((int)puVar6 + 0xf) = 0x40;
*(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_8f63e304(puVar6 + 4,iVar2,2);
FUN_8f63e304((int)puVar6 + 0x12,DAT_8f7232e8 + 2,2);
FUN_8f63e304(puVar6 + 5,DAT_8f7232e8 + 4,2);
uVar5 = FUN_8f6089a4(*(undefined4 *)(DAT_8f7232e8 + 8));
iVar2 = DAT_8f7232e8;
*(undefined *)((int)puVar6 + 0x16) = uVar5;
uVar5 = FUN_8f6089a4(*(undefined4 *)(iVar2 + 0xc));
iVar2 = DAT_8f7232e8;
*(undefined *)((int)puVar6 + 0x17) = uVar5;
uVar5 = FUN_8f6089a4(*(undefined4 *)(iVar2 + 0x10));
iVar2 = DAT_8f7232c8;
*(undefined *)((int)puVar6 + 0x19) = 1;
puVar4 = puVar6;
*puVar6 = DAT_8f7232e4;
DAT_8f7232e4 = puVar4;
*(undefined *)(puVar6 + 6) = uVar5;
iVar11 = (short)(ushort)*(byte *)(iVar2 + 0xb) * 7 + 0x12;
puVar6 = (undefined4 *)FUN_8f608908(2,0,iVar11);
iVar2 = DAT_8f7232c8;
*(char *)((int)puVar6 + 0xb) = (char)((uint)iVar11 >> 8);
*(undefined *)(puVar6 + 2) = 9;
*(char *)((int)puVar6 + 10) = (char)iVar11;
*(undefined *)((int)puVar6 + 0x11) = 9;
*(undefined *)((int)puVar6 + 0xf) = 0x80;
*(undefined *)(puVar6 + 4) = 0x80;
*(undefined *)(puVar6 + 3) = 1;
*(undefined *)((int)puVar6 + 0xd) = 1;
*(undefined *)((int)puVar6 + 0xe) = 0;
*(undefined *)((int)puVar6 + 0x13) = 0;
*(undefined *)(puVar6 + 5) = 0;
*(undefined *)((int)puVar6 + 0x12) = 4;
*(undefined *)((int)puVar6 + 0x15) = *(undefined *)(iVar2 + 0xb);
*(undefined *)((int)puVar6 + 0x16) = *(undefined *)(iVar2 + 8);
*(undefined *)((int)puVar6 + 0x17) = *(undefined *)(iVar2 + 9);
*(undefined *)(puVar6 + 6) = *(undefined *)(iVar2 + 10);
uVar5 = FUN_8f6089a4(*(undefined4 *)(iVar2 + 0xc));
puVar10 = (undefined *)((int)puVar6 + 0x1a);
*(undefined *)((int)puVar6 + 0x19) = uVar5;
if (*(char *)(iVar2 + 0xb) != '\0') {
do {
iVar11 = *(int *)(*(int *)(iVar2 + 0x14) + uVar12 * 4);
uVar12 = uVar12 + 1;
*puVar10 = 7;
puVar10[1] = 5;
cVar9 = *(char *)(iVar11 + 0x11);
bVar1 = *(byte *)(iVar11 + 0x10);
puVar10[3] = 2;
if (cVar9 == '\0') {
bVar8 = 0;
}
else {
bVar8 = 0x80;
}
puVar10[2] = bVar8 | bVar1;
puVar10[4] = (char)*(undefined2 *)(iVar11 + 0x12);
puVar10[5] = (char)((ushort)*(undefined2 *)(iVar11 + 0x12) >> 8);
cVar9 = '\x01' - *(byte *)(iVar11 + 0x11);
if (1 < *(byte *)(iVar11 + 0x11)) {
cVar9 = '\0';
}
puVar10[6] = cVar9;
puVar10 = puVar10 + 7;
} while (uVar12 < *(byte *)(iVar2 + 0xb));
}
*puVar6 = DAT_8f7232e4;
DAT_8f7232e4 = puVar6;
FUN_8f614198(0xa6,FUN_8f6090ac,0);
_DAT_078db148 = 0x145;
FUN_8f614160(0xa6);
uVar7 = 0;
_DAT_078db140 = _DAT_078db140 | 0x80001;
}
if (iVar3 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar7);
}
// WARNING: Removing unreachable block (ram,0x8f609b9c)
// WARNING: Removing unreachable block (ram,0x8f609bac)
// WARNING: Removing unreachable block (ram,0x8f609bb4)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f609b3c(void)
{
_DAT_078db1b4 = 0xffffffff;
_DAT_078db140 = _DAT_078db140 & 0xfffffffe;
_DAT_078db148 = 0;
FUN_8f614128(0xa6);
FUN_8f600b40();
do {
} while( true );
}
void FUN_8f609bb8(uint param_1)
{
int iVar1;
int iVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f6038e8();
if (iVar2 == 0) goto LAB_8f609c08;
if (param_1 < 6) {
if (param_1 == 4) {
DAT_8f7232ec = FUN_8f6038a8();
goto LAB_8f609c08;
}
if (param_1 == 5) {
iVar3 = FUN_8f6038a8();
if (iVar3 != 0) {
*(int *)(iVar2 + 0xc) = iVar3 - DAT_8f7232ec;
}
goto LAB_8f609c08;
}
}
else {
FUN_8f63cbb4(s_bad_bs_id___u__max___u_8f663808,param_1,6);
FUN_8f63cce8();
}
iVar3 = FUN_8f6038a8();
if (iVar3 != 0) {
*(int *)(iVar2 + param_1 * 4) = iVar3;
}
LAB_8f609c08:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f609c9c(uint param_1)
{
int iVar1;
uint uVar2;
uint uVar3;
iVar1 = DAT_8f731d80;
if (param_1 < 0x21) {
_DAT_0b000c04 = 0xffffffff;
if (param_1 == 0) goto LAB_8f609d2c;
}
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;
do {
uVar2 = uVar3 << 2;
uVar3 = uVar3 + 0x20;
*(undefined4 *)(&DAT_0b000180 + (uVar2 >> 5)) = 0xffffffff;
} while (uVar3 < param_1);
LAB_8f609d2c:
_DAT_0b000100 = 0xffff;
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f609d6c(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f613974();
if (iVar1 == DAT_8f731d80) {
FUN_8f613a38();
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f609da8(void)
{
int iVar1;
uint uVar2;
undefined4 uVar3;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f613a84();
if (uVar2 < 0x1ad) {
uVar3 = (**(code **)(&DAT_8f7232f0 + uVar2 * 8))(*(undefined4 *)(&DAT_8f7232f4 + uVar2 * 8));
FUN_8f613ac4(uVar2);
}
else {
uVar3 = 0;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f609e60)
void FUN_8f609e18(void)
{
FUN_8f63cce8();
return;
}
void FUN_8f609e64(uint param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
*(int *)(((param_1 >> 5) + 0x2c00060) * 4) = 1 << (param_1 & 0x1f);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f609ebc(uint param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
*(int *)(((param_1 >> 5) + 0x2c00040) * 4) = 1 << (param_1 & 0x1f);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f609f14(uint param_1,undefined4 param_2,undefined4 param_3)
{
int iVar1;
bool bVar2;
iVar1 = DAT_8f731d80;
if (0x1ac < param_1) {
FUN_8f63cce8();
}
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
DAT_8f718ca8 = DAT_8f718ca8 + -1;
bVar2 = DAT_8f718ca8 == 0;
*(undefined4 *)(&DAT_8f7232f0 + param_1 * 8) = param_2;
*(undefined4 *)(&DAT_8f7232f4 + param_1 * 8) = param_3;
if (bVar2) {
if (iVar1 == DAT_8f731d80) {
FUN_8f62551c();
return;
}
}
else if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f60a048)
void FUN_8f609fe8(undefined4 param_1,int param_2,int param_3)
{
if (param_3 != 0) {
param_3 = param_2 + param_3;
do {
param_2 = param_2 + 1;
} while (param_2 != param_3);
}
return;
}
void FUN_8f60a04c(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4)
{
int iVar1;
undefined4 uVar2;
iVar1 = DAT_8f731d80;
if (param_4 == 0) {
FUN_8f63cbb4(s__ERROR__Boot_Invalid__RSA_KEY_is_8f663ccf + 1);
uVar2 = 0xffffffff;
}
else {
uVar2 = FUN_8f659c80(param_2,param_1,param_3,param_4,1);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f60a0b4(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
{
int iVar1;
int iVar2;
int iVar3;
undefined *local_48;
undefined auStack_44 [32];
int local_24;
local_24 = DAT_8f731d80;
iVar1 = FUN_8f63e1a4(1,param_4);
if (iVar1 == 0) {
FUN_8f63cbb4(s_ERROR__Calloc_failed_during_veri_8f663cf8);
iVar2 = -1;
goto LAB_8f60a184;
}
FUN_8f61dee8(param_1,param_2,auStack_44,2);
local_48 = &DAT_8f717818;
iVar2 = FUN_8f64bb00(0,&local_48,DAT_8f717940);
if (iVar2 == 0) {
FUN_8f63cbb4(s__ERROR__Boot_Invalid__RSA_KEY_is_8f663ccf + 1);
iVar3 = -0x21;
LAB_8f60a160:
iVar2 = FUN_8f63e524(iVar1 + iVar3,auStack_44,0x20);
if (iVar2 != 0) {
FUN_8f63cbb4(s_ERROR__FRP_verify_fail__8f663d24);
iVar2 = -1;
}
}
else {
iVar3 = FUN_8f60a04c(param_3,param_4,iVar1,iVar2);
FUN_8f659a30(iVar2);
if (iVar3 != 0) {
iVar3 = iVar3 + -0x20;
goto LAB_8f60a160;
}
iVar2 = -1;
}
FUN_8f63e200(iVar1);
LAB_8f60a184:
FUN_8f655b74();
FUN_8f643ccc();
FUN_8f6552cc(0);
if (local_24 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f60a1f8(void)
{
int iVar1;
undefined4 uVar2;
iVar1 = DAT_8f731d80;
DAT_8f724058 = FUN_8f61acdc(s_keymaster_8f663d40);
if (DAT_8f724058 < 1) {
FUN_8f63cbb4(s_Failure_to_load_TZ_app__lksecapp_8f663d4c,DAT_8f724058);
uVar2 = 0xffffffff;
}
else {
uVar2 = 0;
DAT_8f72405c = 1;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
// WARNING: Removing unreachable block (ram,0x8f60a2b4)
void FUN_8f60a278(void)
{
return;
}
void FUN_8f60a2b8(void)
{
int iVar1;
undefined4 uVar2;
undefined4 local_1c;
int local_18;
int local_14;
local_1c = 0x10e;
local_14 = DAT_8f731d80;
local_18 = 0;
iVar1 = FUN_8f61b1dc(DAT_8f724058,&local_1c,4,&local_18,4);
if ((iVar1 < 0) || (local_18 < 0)) {
FUN_8f63cbb4(s_Failed_to_send_delete_keys_comma_8f663d7c);
uVar2 = 0xffffffff;
}
else {
uVar2 = 0;
}
if (local_14 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
void FUN_8f60a348(void)
{
int iVar1;
undefined4 uVar2;
undefined4 local_1c;
int local_18;
int local_14;
local_1c = 0x204;
local_14 = DAT_8f731d80;
local_18 = 0;
iVar1 = FUN_8f61b1dc(DAT_8f724058,&local_1c,4,&local_18,4);
if ((iVar1 < 0) || (local_18 < 0)) {
FUN_8f63cbb4(s_Failed_to_send_milestone_end_com_8f663dac);
uVar2 = 0xffffffff;
}
else {
uVar2 = 0;
}
if (local_14 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f60a414)
void FUN_8f60a3d8(void)
{
return;
}
void FUN_8f60a418(int *param_1,int param_2,int param_3)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f63e150(0x40,param_3 + 0x3fU & 0xffffffc0);
*param_1 = iVar2;
if (iVar2 == 0) {
FUN_8f63cce8();
iVar2 = *param_1;
}
if (iVar1 == DAT_8f731d80) {
FUN_8f63e304(iVar2,param_2 + 8,param_3);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
// WARNING: Removing unreachable block (ram,0x8f60a504)
void FUN_8f60a4b4(int *param_1)
{
if (*param_1 != 0) {
FUN_8f63e200();
return;
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f60a53c)
void FUN_8f60a508(void)
{
FUN_8f60a664();
return;
}
// WARNING: Removing unreachable block (ram,0x8f60a580)
void FUN_8f60a540(void)
{
FUN_8f60af10(&DAT_8f731dd4,0xf);
return;
}
// WARNING: Removing unreachable block (ram,0x8f60a5c0)
void FUN_8f60a584(void)
{
FUN_8f60b0a0(&DAT_8f731dd4);
return;
}
void FUN_8f60a5c4(undefined4 param_1)
{
undefined4 uVar1;
int local_20;
int local_1c;
int local_c;
local_c = DAT_8f731d80;
FUN_8f60a930(&DAT_8f731dd4,param_1,0xf,&local_20);
FUN_8f6254dc(&local_20,8);
if (((local_20 == 0x646d63) || (local_20 == 0x716572)) && (local_1c == 0xc)) {
uVar1 = 0x14;
}
else {
FUN_8f63cbb4(s_Received_ERROR_ACK_8f663e20);
uVar1 = 1;
}
if (local_c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar1);
}
void FUN_8f60a664(undefined4 *param_1,int param_2,int param_3)
{
int iVar1;
undefined4 uVar2;
undefined4 uVar3;
int iVar4;
undefined4 local_48;
undefined4 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_8f731d80;
if (param_3 == 0) {
local_30 = param_1[1];
local_34 = *param_1;
DAT_8f724060 = DAT_8f724060 + 1;
local_40 = param_2 + 0x14;
local_44 = 0x716572;
local_3c = DAT_8f724060;
local_38 = param_3;
local_2c = param_2;
FUN_8f60a418(&local_28,param_1,param_2);
iVar4 = local_2c + 0x28;
iVar1 = FUN_8f63e114(iVar4);
if (iVar1 == 0) {
FUN_8f63cce8();
}
FUN_8f63e304(iVar1,&local_44,8);
FUN_8f63e304(iVar1 + 8,&local_3c,0x14);
FUN_8f63e304(iVar1 + 0x1c,local_28,param_2);
uVar3 = FUN_8f60ab94(&DAT_8f731dd4,iVar1,iVar4,0xf);
uVar2 = FUN_8f60a5c4(&local_48);
FUN_8f60ab2c(&DAT_8f731dd4,uVar2);
FUN_8f63e200(iVar1);
FUN_8f60a4b4(&local_28);
}
else if (param_3 == 1) {
local_40 = 8;
local_44 = 0x646d63;
FUN_8f60a418(&local_3c,param_1,param_2);
uVar3 = FUN_8f60ab94(&DAT_8f731dd4,&local_44,0xc,0xf);
FUN_8f60a4b4(&local_3c);
}
else {
uVar3 = 0;
}
if (local_24 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
void FUN_8f60a81c(undefined4 param_1,uint param_2)
{
int iVar1;
undefined4 uVar2;
int iVar3;
int iVar4;
iVar1 = DAT_8f731d80;
iVar3 = 0x40;
iVar4 = DAT_8f731e40;
do {
if (*(byte *)(iVar4 + 0x18) == param_2) {
FUN_8f63e304(param_1,iVar4,0x20);
uVar2 = 0;
goto LAB_8f60a870;
}
iVar3 = iVar3 + -1;
iVar4 = iVar4 + 0x20;
} while (iVar3 != 0);
uVar2 = 0xffffffff;
LAB_8f60a870:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f60a894(int param_1)
{
int iVar1;
undefined4 uVar2;
int iVar3;
uint local_1c;
undefined4 local_18;
int local_14;
local_1c = 0;
local_18 = 0;
local_14 = DAT_8f731d80;
iVar1 = FUN_8f60a81c();
if (iVar1 == 0) {
uVar2 = FUN_8f6051c8(*(int *)(param_1 + 0x14) + 0xeU & 0xffff,&local_18);
*(undefined4 *)(param_1 + 0x2c) = uVar2;
iVar3 = FUN_8f6051c8(*(int *)(param_1 + 0x14) + 0x152U & 0xffff,&local_1c);
*(uint *)(param_1 + 0x28) = local_1c >> 1;
*(int *)(param_1 + 0x20) = iVar3;
*(uint *)(param_1 + 0x24) = iVar3 + (local_1c >> 1);
}
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
void FUN_8f60a930(int param_1,uint *param_2,undefined4 param_3,undefined4 *param_4)
{
undefined4 *puVar1;
undefined4 *puVar2;
int iVar3;
uint uVar4;
uint uVar5;
uint *puVar6;
uint *puVar7;
undefined4 *puVar8;
uint *puVar9;
uint uVar10;
uint local_3c;
uint local_38 [5];
int local_24;
puVar7 = &local_3c;
local_3c = 0;
local_24 = DAT_8f731d80;
iVar3 = FUN_8f6051c8(*(int *)(param_1 + 0x14) + 0xeU & 0xffff,puVar7);
*(int *)(param_1 + 0x2c) = iVar3;
if (iVar3 == 0) {
FUN_8f63cbb4(s__s__unable_to_find_index_in_smem_8f663e7c,s_smd_read_8f663e64);
FUN_8f63cce8();
iVar3 = *(int *)(param_1 + 0x2c);
}
if (*(int *)(iVar3 + 0x30) != 0) goto LAB_8f60a9a0;
FUN_8f63cbb4(s__s__DTR_is_off_8f663ebc,s_smd_read_8f663e64);
FUN_8f63cce8();
while( true ) {
iVar3 = *(int *)(param_1 + 0x2c);
LAB_8f60a9a0:
uVar5 = *(uint *)(iVar3 + 0x50);
if (0x13 < *(int *)(iVar3 + 0x54) - uVar5) break;
FUN_8f6254dc(iVar3,local_3c);
}
puVar9 = *(uint **)(param_1 + 0x24);
uVar10 = *(uint *)(param_1 + 0x28);
puVar6 = (uint *)((int)puVar9 + uVar5);
do {
uVar4 = *puVar6;
uVar5 = uVar5 + 4;
if (uVar5 < uVar10) {
puVar6 = puVar6 + 1;
}
puVar7 = puVar7 + 1;
*puVar7 = uVar4;
if (uVar10 <= uVar5) {
uVar5 = 0;
puVar6 = puVar9;
}
} while (puVar7 != local_38 + 4);
*(uint *)(iVar3 + 0x50) = uVar5;
FUN_8f6254dc(local_38,0x14);
iVar3 = *(int *)(param_1 + 0x2c);
*param_2 = local_38[0];
uVar5 = *(uint *)(iVar3 + 0x50);
if (*(int *)(iVar3 + 0x54) - uVar5 < local_38[0]) {
do {
FUN_8f6254dc(iVar3,local_3c);
iVar3 = *(int *)(param_1 + 0x2c);
uVar5 = *(uint *)(iVar3 + 0x50);
} while (*(int *)(iVar3 + 0x54) - uVar5 < local_38[0]);
}
puVar8 = *(undefined4 **)(param_1 + 0x24);
puVar1 = (undefined4 *)((int)puVar8 + uVar5);
puVar2 = param_4;
while (local_38[0] != 0) {
uVar5 = uVar5 + 4;
local_38[0] = local_38[0] - 4;
*puVar2 = *puVar1;
if (uVar5 < *(uint *)(param_1 + 0x28)) {
puVar1 = puVar1 + 1;
puVar2 = puVar2 + 1;
}
else {
uVar5 = 0;
puVar1 = puVar8;
puVar2 = puVar2 + 1;
}
}
*(uint *)(iVar3 + 0x50) = uVar5;
FUN_8f6254dc(param_4);
if (local_24 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f60ab2c(int param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = *(int *)(param_1 + 0x2c);
*(undefined4 *)(iVar2 + 0x40) = 0;
*(undefined4 *)(iVar2 + 0x18) = 1;
*(undefined4 *)(iVar2 + 0x20) = 1;
DataSynchronizationBarrier(0xf);
_DAT_0b111008 = 1;
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f60ab94(int param_1,int *param_2,int param_3)
{
int *piVar1;
undefined4 uVar2;
int *piVar3;
int *piVar4;
uint uVar5;
int iVar6;
int *piVar7;
undefined4 local_3c;
int local_38;
int local_34 [4];
int local_24;
local_3c = 0;
local_24 = DAT_8f731d80;
FUN_8f63e410(&local_38,0,0x14);
if (*(uint *)(param_1 + 0x28) < param_3 + 0x14U) {
FUN_8f63cbb4(s__s__len_is_greater_than_fifo_sz_8f663ecc,s_smd_write_8f663e70);
uVar2 = 0xffffffff;
}
else {
piVar1 = (int *)FUN_8f6051c8(*(int *)(param_1 + 0x14) + 0xeU & 0xffff,&local_3c);
*(int **)(param_1 + 0x2c) = piVar1;
if (piVar1 == (int *)0x0) {
FUN_8f63cbb4(s__s__unable_to_find_index_in_smem_8f663e7c,s_smd_write_8f663e70);
FUN_8f63cce8();
piVar1 = *(int **)(param_1 + 0x2c);
}
if ((*piVar1 == 2) && (piVar1[0xb] - 2U < 2)) {
if (piVar1[1] == 0) {
FUN_8f63cbb4(s__s__DTR_is_off_8f663ebc,s_smd_write_8f663e70);
uVar2 = 0xffffffff;
}
else {
piVar7 = *(int **)(param_1 + 0x20);
uVar5 = piVar1[10];
piVar4 = &local_38;
piVar3 = (int *)((int)piVar7 + uVar5);
piVar1[0x11] = 0;
iVar6 = param_3;
while( true ) {
*piVar3 = iVar6;
uVar5 = uVar5 + 4;
if (uVar5 < *(uint *)(param_1 + 0x28)) {
piVar3 = piVar3 + 1;
}
else {
uVar5 = 0;
piVar3 = piVar7;
}
if (piVar4 == local_34 + 3) break;
piVar4 = piVar4 + 1;
iVar6 = *piVar4;
}
piVar1[10] = uVar5;
piVar3 = (int *)((int)piVar7 + uVar5);
iVar6 = param_3;
if (param_3 != 0) {
do {
uVar5 = uVar5 + 4;
iVar6 = iVar6 + -4;
*piVar3 = *param_2;
if (uVar5 < *(uint *)(param_1 + 0x28)) {
piVar3 = piVar3 + 1;
}
else {
uVar5 = 0;
piVar3 = piVar7;
}
param_2 = param_2 + 1;
} while (iVar6 != 0);
}
piVar1[10] = uVar5;
DataSynchronizationBarrier(0xf);
iVar6 = *(int *)(param_1 + 0x2c);
*(undefined4 *)(iVar6 + 0x14) = 1;
*(undefined4 *)(iVar6 + 0x20) = 0;
DataSynchronizationBarrier(0xf);
uVar2 = 0;
_DAT_0b111008 = 1;
local_38 = param_3;
}
}
else {
FUN_8f63cbb4(s__s__channel_is_not_in_OPEN_state_8f663ef0,s_smd_write_8f663e70);
uVar2 = 0xffffffff;
}
}
if (local_24 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
void FUN_8f60ad9c(int param_1,undefined4 param_2,uint param_3)
{
int iVar1;
uint uVar2;
uint *puVar3;
undefined4 local_20;
int local_1c;
puVar3 = *(uint **)(param_1 + 0x2c);
local_20 = 0;
local_1c = DAT_8f731d80;
if (puVar3 == (uint *)0x0) {
puVar3 = (uint *)FUN_8f6051c8(*(int *)(param_1 + 0x14) + 0xeU & 0xffff,&local_20);
*(uint **)(param_1 + 0x2c) = puVar3;
if (puVar3 == (uint *)0x0) {
FUN_8f63cce8();
puVar3 = *(uint **)(param_1 + 0x2c);
}
}
uVar2 = *puVar3;
switch(param_2) {
case 0:
if (uVar2 != 2) {
puVar3[1] = 0;
puVar3[2] = 0;
puVar3[3] = 0;
*puVar3 = 0;
puVar3 = *(uint **)(param_1 + 0x2c);
break;
}
goto LAB_8f60ae08;
case 1:
if ((uVar2 & 0xfffffffb) == 0) {
puVar3[1] = 0;
puVar3[2] = 0;
puVar3[3] = 0;
puVar3[0x14] = 0;
puVar3[10] = 0;
puVar3[8] = 0;
*puVar3 = 1;
puVar3 = *(uint **)(param_1 + 0x2c);
}
break;
case 2:
if (uVar2 == 1) {
puVar3[1] = 1;
puVar3[2] = 1;
puVar3[3] = 1;
*puVar3 = 2;
puVar3 = *(uint **)(param_1 + 0x2c);
}
break;
case 4:
if (uVar2 != 2) break;
LAB_8f60ae08:
puVar3[1] = 0;
puVar3[2] = 0;
puVar3[3] = 0;
*puVar3 = 4;
puVar3 = *(uint **)(param_1 + 0x2c);
}
iVar1 = DAT_8f731d80;
*(undefined4 *)(param_1 + 0x30) = param_2;
puVar3[7] = param_3;
if (local_1c != iVar1) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f60af10(undefined4 param_1,undefined4 param_2)
{
int iVar1;
int iVar2;
undefined4 uVar3;
uint uVar4;
uint uVar5;
bool bVar6;
iVar1 = DAT_8f731d80;
DAT_8f731e40 = FUN_8f63e150(0x40,0x800);
if (DAT_8f731e40 == 0) {
FUN_8f63cce8();
}
uVar5 = 0;
uVar4 = 1000000;
do {
iVar2 = FUN_8f6050e8(0xd,DAT_8f731e40,0x800);
if (iVar2 != 0) {
FUN_8f63cbb4(s_ERROR_reading_smem_channel_alloc_8f663f3c);
uVar3 = 0xffffffff;
goto LAB_8f60afd0;
}
bVar6 = uVar4 == 0;
uVar4 = uVar4 - 1;
uVar5 = uVar5 - bVar6;
iVar2 = FUN_8f60a894(param_1,param_2);
FUN_8f613d18(10);
} while (iVar2 != 0 && (uVar4 | uVar5) != 0);
if ((uVar4 | uVar5) == 0) {
FUN_8f63cbb4(s_Apps_timed_out_waiting_for_RPM___8f663f64);
FUN_8f63cce8();
}
FUN_8f614198(200,FUN_8f60b118,param_1);
FUN_8f60ad9c(param_1,1,1);
_DAT_0b111008 = 1;
FUN_8f614160(200);
uVar3 = 0;
LAB_8f60afd0:
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f60b0a0(undefined4 param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f626860(&DAT_8f724064,0,1);
FUN_8f60ad9c(param_1,4,1);
_DAT_0b111008 = 1;
if (iVar1 == DAT_8f731d80) {
FUN_8f62695c(&DAT_8f724064);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f60b118(int param_1)
{
int iVar1;
int iVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar3 = *(int *)(param_1 + 0x30);
if (iVar3 == 0) {
do {
iVar2 = DAT_8f731e40 + iVar3;
iVar3 = iVar3 + 0x20;
FUN_8f6254dc(iVar2);
} while (iVar3 != 0x800);
FUN_8f63e200(DAT_8f731e40);
FUN_8f626998(&DAT_8f724064,0);
}
else {
iVar2 = *(int *)(param_1 + 0x2c);
if (*(int *)(iVar2 + 0x48) != 0) {
*(undefined4 *)(iVar2 + 0x48) = 0;
}
if (iVar3 != *(int *)(iVar2 + 0x2c)) {
FUN_8f60ad9c(param_1,*(int *)(iVar2 + 0x2c),0);
iVar3 = *(int *)(param_1 + 0x30);
}
if (iVar3 == 4) {
FUN_8f60ad9c(param_1,0,1);
_DAT_0b111008 = 1;
FUN_8f63cbb4(s_Channel_alloc_freed_8f663f9c);
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f60b20c(int *param_1,uint param_2)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
*(char *)(*param_1 + 0x2f) = (char)param_2;
if ((*(byte *)(*param_1 + 0x2f) & param_2) == 0) {
LAB_8f60b26c:
if (iVar1 == DAT_8f731d80) {
return;
}
}
else {
iVar2 = 100;
do {
FUN_8f613cc4(1);
if ((*(byte *)(*param_1 + 0x2f) & param_2) == 0) goto LAB_8f60b26c;
iVar2 = iVar2 + -1;
} while (iVar2 != 0);
if (iVar1 == DAT_8f731d80) {
FUN_8f63cbb4(s_Error__sdhci_reset_failed_for____8f663fb4,param_2);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f60b2b0(int *param_1,uint param_2)
{
int iVar1;
uint uVar2;
ushort uVar3;
int iVar4;
uint uVar5;
uint uVar6;
iVar1 = DAT_8f731d80;
uVar6 = param_1[7];
iVar4 = DAT_8f731d80;
if (uVar6 <= param_2) {
iVar4 = 1;
}
uVar3 = (ushort)iVar4;
if (param_2 < uVar6) {
uVar5 = 2;
do {
uVar2 = FUN_8f66024c(uVar6,uVar5);
if (uVar2 <= param_2) {
uVar3 = (ushort)((uVar5 >> 1) << 8) | 1 | (ushort)((((uVar5 >> 1) << 0x16) >> 0x1e) << 6);
goto LAB_8f60b324;
}
uVar5 = uVar5 + 2;
} while (uVar5 != 0x7fe);
uVar3 = 0xffc1;
}
LAB_8f60b324:
iVar4 = *param_1;
*(ushort *)(iVar4 + 0x2c) = uVar3;
do {
} while ((*(ushort *)(iVar4 + 0x2c) & 2) == 0);
*(ushort *)(iVar4 + 0x2c) = *(ushort *)(iVar4 + 0x2c) | 4;
iVar4 = DAT_8f731d80;
param_1[1] = param_2;
if (iVar1 == iVar4) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f60b374(int *param_1,undefined4 param_2)
{
int iVar1;
int *piVar2;
undefined4 uVar3;
int iVar4;
ushort uVar5;
ushort *puVar6;
iVar1 = DAT_8f731d80;
iVar4 = *param_1;
puVar6 = (ushort *)(iVar4 + 0x3e);
*(ushort *)(iVar4 + 0x2c) = *(ushort *)(iVar4 + 0x2c) & 0xfffb;
uVar5 = *(ushort *)(iVar4 + 0x3e) & 0xfff8;
piVar2 = param_1;
switch(param_2) {
case 0:
uVar3 = 25000000;
break;
case 1:
uVar5 = uVar5 | 1;
uVar3 = 50000000;
break;
case 2:
uVar5 = uVar5 | 2;
uVar3 = 100000000;
break;
case 3:
uVar5 = uVar5 | 3;
uVar3 = 200000000;
break;
case 4:
uVar5 = uVar5 | 4;
uVar3 = 50000000;
break;
default:
FUN_8f63cbb4(s_Error__Invalid_UHS_mode___x_8f663fd8);
piVar2 = (int *)FUN_8f63cce8();
uVar3 = 0;
puVar6 = (ushort *)(*param_1 + 0x3e);
}
*puVar6 = uVar5;
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(piVar2,uVar3);
}
FUN_8f60b2b0(param_1);
return;
}
void FUN_8f60b48c(int *param_1,int param_2)
{
int iVar1;
undefined4 uVar2;
byte bVar3;
iVar1 = DAT_8f731d80;
if (param_2 == 1) {
bVar3 = 2;
}
else if (param_2 == 0) {
bVar3 = 0;
}
else {
if (param_2 != 2) {
FUN_8f63cbb4(s_Bus_width_is_invalid___u_8f664014);
uVar2 = 1;
goto LAB_8f60b4d4;
}
bVar3 = 0x20;
}
uVar2 = 0;
*(byte *)(*param_1 + 0x28) = bVar3 | *(byte *)(*param_1 + 0x28);
LAB_8f60b4d4:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f60b514(uint **param_1,short *param_2)
{
int iVar1;
undefined4 uVar2;
char *pcVar3;
int iVar4;
uint *puVar5;
ushort uVar6;
uint uVar7;
uint uVar8;
int iVar9;
int iVar10;
uint *puVar11;
int iVar12;
undefined2 *puVar13;
uint uVar14;
char cVar15;
ushort uVar16;
undefined2 *puVar17;
undefined2 uVar18;
uint uVar19;
int iVar20;
uint uVar21;
bool bVar22;
iVar1 = DAT_8f731d80;
if ((*(char *)(param_2 + 4) != '\0') && (*(int *)(param_2 + 0x1a) == 0)) {
FUN_8f63cce8();
}
if ((*(int *)(param_2 + 0xe) == 0x10) && ((*(uint *)(param_2 + 0x1a) & 0x3f) != 0)) {
FUN_8f63cce8();
}
cVar15 = '\n';
while (((*param_1)[9] & 3) != 0) {
cVar15 = cVar15 + -1;
FUN_8f613d18(1000);
if (cVar15 == '\0') {
FUN_8f63cbb4(s_Error__CMD_or_DAT_lines_were_nev_8f664070);
uVar16 = 1;
LAB_8f60b594:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar16);
}
}
uVar7 = (uint)(ushort)param_2[5];
if (uVar7 == 4) {
uVar16 = 1;
LAB_8f60b798:
uVar16 = (ushort)*(byte *)(param_2 + 4) << 5 | (ushort)*(byte *)((int)param_2 + 9) << 6 | uVar16
;
if (uVar7 == 4) {
uVar16 = uVar16 | 8;
}
else if (uVar7 < 5) {
if (uVar7 - 1 < 2) goto LAB_8f60b5e4;
}
else if ((uVar7 == 0x40) || (uVar7 == 0x80)) {
LAB_8f60b5e4:
uVar16 = uVar16 | 0x18;
}
}
else {
if (4 < uVar7) {
if (((uVar7 == 0x40) || (uVar7 == 0x80)) || (uVar7 == 8)) {
LAB_8f60b794:
uVar16 = 2;
goto LAB_8f60b798;
}
LAB_8f60b780:
FUN_8f63cbb4(s_Invalid_response_type_for_the_co_8f66409c);
uVar16 = 1;
goto LAB_8f60b594;
}
if (uVar7 == 1) goto LAB_8f60b794;
if (uVar7 != 0) {
if (uVar7 != 2) goto LAB_8f60b780;
uVar16 = (ushort)*(byte *)(param_2 + 4) << 5 | (ushort)*(byte *)((int)param_2 + 9) << 6 | 3;
goto LAB_8f60b5e4;
}
uVar16 = (ushort)*(byte *)(param_2 + 4) << 5 | (ushort)*(byte *)((int)param_2 + 9) << 6;
}
*(undefined *)((int)*param_1 + 0x2e) = 0xf;
puVar17 = (undefined2 *)(uint)*(byte *)(param_2 + 4);
if (puVar17 == (undefined2 *)0x0) {
puVar11 = *param_1;
}
else {
iVar4 = *(int *)(param_2 + 0x1e);
iVar9 = *(int *)(param_2 + 0x1a);
if (*(int *)(param_2 + 0x1c) == 0) {
uVar7 = iVar4 << 9;
}
else {
uVar7 = iVar4 * *(int *)(param_2 + 0x1c);
}
if (uVar7 < 0x10001) {
uVar2 = FUN_8f63d778(4,0x40);
puVar17 = (undefined2 *)FUN_8f63e150(uVar2,0x40);
if (puVar17 == (undefined2 *)0x0) {
FUN_8f63cbb4(s_Error_allocating_memory_8f6640c4);
FUN_8f63cce8();
}
bVar22 = uVar7 != 0x10000;
if (bVar22) {
uVar7 = uVar7 & 0xffff;
}
uVar18 = (undefined2)uVar7;
if (!bVar22) {
uVar18 = 0;
}
iVar20 = 8;
*(int *)(puVar17 + 2) = iVar9;
puVar17[1] = uVar18;
*puVar17 = 0x23;
}
else {
uVar14 = uVar7 >> 0x10;
if (uVar7 != (uVar7 & 0xffff0000)) {
uVar14 = uVar14 + 1;
}
uVar2 = FUN_8f63d778(4,0x40);
iVar20 = uVar14 * 8;
puVar17 = (undefined2 *)FUN_8f63e150(uVar2,iVar20 + 0x3fU & 0xffffffc0);
if (puVar17 == (undefined2 *)0x0) {
FUN_8f63cbb4(s_Error_allocating_memory_8f6640c4);
FUN_8f63cce8();
}
FUN_8f63e410(puVar17,0,iVar20);
if (uVar14 == 1) {
uVar18 = 0;
*(int *)(puVar17 + 2) = iVar9;
puVar13 = puVar17;
}
else {
iVar12 = 0;
iVar10 = iVar9;
do {
*(int *)((int)puVar17 + iVar12 + 4) = iVar10;
iVar10 = iVar10 + 0x10000;
*(undefined2 *)((int)puVar17 + iVar12 + 2) = 0;
*(undefined2 *)((int)puVar17 + iVar12) = 0x21;
iVar12 = iVar12 + 8;
} while (iVar12 != iVar20 + -8);
uVar7 = uVar7 + 0x10000 + uVar14 * -0x10000;
bVar22 = uVar7 < 0x10000;
if (bVar22) {
uVar7 = uVar7 & 0xffff;
}
uVar18 = (undefined2)uVar7;
if (!bVar22) {
uVar18 = 0;
}
*(uint *)((undefined2 *)((int)puVar17 + iVar12) + 2) = iVar9 + (uVar14 + 0xffff) * 0x10000;
puVar13 = (undefined2 *)((int)puVar17 + iVar12);
}
puVar13[1] = uVar18;
*puVar13 = 0x23;
}
FUN_8f6254b4(puVar17,iVar20);
(*param_1)[0x16] = (uint)puVar17;
puVar11 = *param_1;
if (*(int *)(param_2 + 0x1c) == 0) {
uVar18 = 0x200;
}
else {
uVar18 = (undefined2)*(int *)(param_2 + 0x1c);
}
*(undefined2 *)(puVar11 + 1) = uVar18;
*(short *)((int)puVar11 + 6) = (short)iVar4;
}
puVar11[2] = *(uint *)(param_2 + 2);
uVar6 = (ushort)*(byte *)(param_2 + 4);
if (uVar6 != 0) {
iVar4 = *(int *)(param_2 + 0xe);
if (iVar4 == 1) {
if (*param_2 == 0x15) {
iVar4 = 0;
}
FUN_8f60c4e8(param_1,iVar4);
uVar6 = 0x11;
}
else {
FUN_8f60c4e8(param_1,0);
uVar6 = 1;
}
if (1 < *(uint *)(param_2 + 0x1e)) {
if (*(char *)(param_2 + 0x20) == '\0') {
if (*(int *)(param_2 + 0x12) == 0) {
uVar6 = uVar6 | 0x26;
}
else {
uVar6 = uVar6 | 0x2a;
**param_1 = *(uint *)(param_2 + 0x1e);
}
}
else {
uVar6 = uVar6 | 0x22;
}
}
}
puVar11 = *param_1;
uVar14 = *(uint *)(param_2 + 0x14);
uVar7 = *(uint *)(param_2 + 0x16);
iVar4 = 0;
*(ushort *)(puVar11 + 3) = uVar6;
if ((uVar14 | uVar7) == 0) {
uVar7 = 0;
uVar14 = 10000000;
}
*(ushort *)((int)puVar11 + 0xe) = uVar16 & 0xff | *param_2 << 8;
do {
puVar5 = puVar11 + 0xc;
if ((*(ushort *)(puVar11 + 0xc) & 1) != 0) {
cVar15 = '\x01';
*(ushort *)puVar5 = 1;
if (param_2[5] == 4) {
uVar21 = 0;
while( true ) {
uVar8 = uVar21 & 0xff;
uVar19 = puVar11[uVar8 + 4];
*(uint *)(param_2 + uVar8 * 2 + 6) = uVar19 << 8;
if ((uVar8 != 0) &&
(*(uint *)(param_2 + uVar8 * 2 + 6) = uVar19 << 8 | puVar11[uVar8 + 3] >> 0x18,
cVar15 == '\x04')) break;
cVar15 = cVar15 + '\x01';
uVar21 = uVar21 + 1;
}
puVar11 = *param_1;
}
else {
*(uint *)(param_2 + 6) = puVar11[4];
}
uVar6 = (ushort)*(byte *)(param_2 + 4);
if ((uVar6 == 0) && (param_2[5] != 2)) {
puVar5 = puVar11 + 0xc;
uVar16 = uVar6;
}
else {
uVar21 = 0;
uVar19 = 0;
while( true ) {
puVar5 = puVar11 + 0xc;
if ((*(ushort *)(puVar11 + 0xc) & 2) != 0) break;
if ((*(ushort *)(puVar11 + 0xc) & 0x8000) != 0) {
if (param_1[3] != (uint *)0x0) goto LAB_8f60b998;
uVar6 = *(ushort *)((int)puVar11 + 0x32) & 0x10;
uVar16 = uVar6;
if ((*(ushort *)((int)puVar11 + 0x32) & 0x10) != 0) goto LAB_8f60b950;
goto LAB_8f60b818;
}
if (param_1[3] != (uint *)0x0) {
LAB_8f60b998:
if ((*(ushort *)((int)puVar11 + 0x32) & 0x30) != 0) goto LAB_8f60b704;
}
LAB_8f60b950:
bVar22 = 0xfffffffe < uVar21;
uVar21 = uVar21 + 1;
uVar19 = uVar19 + bVar22;
FUN_8f613d18(1);
if (uVar19 == uVar7 && uVar21 == uVar14) {
pcVar3 = s_Error__Transfer_never_completed_8f664100;
goto LAB_8f60bb80;
}
puVar11 = *param_1;
}
uVar6 = 1;
*(ushort *)puVar5 = 2;
uVar16 = 0;
}
LAB_8f60b818:
if ((*(ushort *)puVar5 & 0x8000) != 0) {
if (((*(ushort *)((int)puVar11 + 0x32) & 0x10) == 0) || (uVar6 == 0)) {
uVar6 = *(ushort *)((int)puVar11 + 0x32);
if ((uVar6 & 1) == 0) {
if ((uVar6 & 2) == 0) {
if ((uVar6 & 4) == 0) {
if ((uVar6 & 8) == 0) {
if ((uVar6 & 0x10) == 0) {
if ((uVar6 & 0x20) == 0) {
if ((uVar6 & 0x40) == 0) {
if ((uVar6 & 0x80) == 0) {
if ((uVar6 & 0x100) == 0) {
if ((uVar6 & 0x200) == 0) goto LAB_8f60b898;
FUN_8f63cbb4(s_Error__ADMA_error_8f664220);
}
else {
FUN_8f63cbb4(s_Error__Auto_CMD12_error_8f664204);
}
}
else {
FUN_8f63cbb4(s_Error__Current_limit_error_8f6641e8);
}
}
else {
FUN_8f63cbb4(s_Error__DATA_end_bit_error_8f6641cc);
}
}
else {
FUN_8f63cbb4(s_Error__DATA_CRC_error_8f6641b4);
}
}
else {
FUN_8f63cbb4(s_Error__DATA_time_out_error_8f664198);
}
}
else {
FUN_8f63cbb4(s_Error__Command_Index_error_8f66417c);
}
}
else {
FUN_8f63cbb4(s_Error__CMD_end_bit_error_8f664160);
}
}
else {
FUN_8f63cbb4(s_Error__Command_CRC_error_8f664144);
}
}
else {
FUN_8f63cbb4(s_Error__Command_timeout_error_8f664124);
}
uVar16 = 1;
}
else {
uVar16 = 0;
}
LAB_8f60b898:
FUN_8f60b20c(param_1,6);
}
if (uVar16 == 0) {
if (*(int *)(param_2 + 0xe) == 1) {
uVar16 = 0;
if (*(int *)(param_2 + 0x1c) == 0) {
iVar4 = *(int *)(param_2 + 0x1e) << 9;
}
else {
iVar4 = *(int *)(param_2 + 0x1e) * *(int *)(param_2 + 0x1c);
}
FUN_8f6254dc(*(undefined4 *)(param_2 + 0x1a),iVar4);
}
}
else {
uVar16 = 1;
}
LAB_8f60b714:
if (puVar17 != (undefined2 *)0x0) {
FUN_8f63e200(puVar17);
}
goto LAB_8f60b594;
}
if ((*(ushort *)(puVar11 + 0xc) & 0x8000) != 0) {
if (param_1[3] == (uint *)0x0) {
uVar6 = *(ushort *)((int)puVar11 + 0x32) & 0x10;
uVar16 = uVar6;
if ((*(ushort *)((int)puVar11 + 0x32) & 0x10) == 0) goto LAB_8f60b818;
goto LAB_8f60b6b4;
}
LAB_8f60b6f8:
if ((*(ushort *)((int)puVar11 + 0x32) & 0xf) == 0) goto LAB_8f60b6b4;
LAB_8f60b704:
FUN_8f60b20c(param_1,6);
uVar16 = 1;
goto LAB_8f60b714;
}
if (param_1[3] != (uint *)0x0) goto LAB_8f60b6f8;
LAB_8f60b6b4:
iVar4 = iVar4 + 1;
FUN_8f613d18(1);
if (iVar4 == 9000000) {
pcVar3 = s_Error__Command_never_completed_8f6640e0;
LAB_8f60bb80:
FUN_8f63cbb4(pcVar3);
puVar11 = *param_1;
uVar6 = 0;
puVar5 = puVar11 + 0xc;
uVar16 = 1;
goto LAB_8f60b818;
}
puVar11 = *param_1;
} while( true );
}
void FUN_8f60bd48(int *param_1)
{
int iVar1;
byte bVar2;
uint uVar3;
int iVar4;
int iVar5;
uint uVar6;
byte bVar7;
uint uVar8;
bool bVar9;
iVar1 = DAT_8f731d80;
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;
*(byte *)(param_1 + 4) = (byte)(uVar6 >> 0x1c);
*(short *)((int)param_1 + 0x12) = (short)(uVar6 & 0xff);
if ((uVar3 != 1) || (0x33 < (uVar6 & 0xff))) {
uVar3 = 0;
}
param_1[5] = uVar3;
*(byte *)(iVar5 + 0x29) = bVar2;
*(byte *)(*param_1 + 0x29) = bVar7;
FUN_8f62695c(param_1[6]);
FUN_8f60b48c(param_1,0);
*(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 (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f60beb4(int *param_1)
{
int iVar1;
int iVar2;
undefined4 uVar3;
iVar1 = DAT_8f731d80;
iVar2 = param_1[4];
if ((*(uint *)(*param_1 + 0xe0) & 0xc) == 0) {
uVar3 = 1;
}
else {
uVar3 = 5;
}
*(undefined4 *)(*param_1 + 0xe8) = uVar3;
FUN_8f626998(iVar2,0);
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
return;
}
void FUN_8f60bf10(int param_1,uint param_2)
{
int iVar1;
uint uVar2;
iVar1 = DAT_8f731d80;
if (112000000 < param_2) {
if (param_2 < 0x7735941) {
uVar2 = 0x1000000;
goto LAB_8f60bfc4;
}
if (param_2 < 0x82a7441) {
uVar2 = 0x2000000;
goto LAB_8f60bfc4;
}
if (param_2 < 0x8f0d181) {
uVar2 = 0x3000000;
goto LAB_8f60bfc4;
}
if (param_2 < 0x9a7ec81) {
uVar2 = 0x4000000;
goto LAB_8f60bfc4;
}
if (param_2 < 0xa6e49c1) {
uVar2 = 0x5000000;
goto LAB_8f60bfc4;
}
if (param_2 < 0xb2564c1) {
uVar2 = 0x6000000;
goto LAB_8f60bfc4;
}
if (param_2 < 0xbebc201) {
uVar2 = 0x7000000;
goto LAB_8f60bfc4;
}
}
uVar2 = 0;
LAB_8f60bfc4:
*(uint *)(param_1 + 0x100) = uVar2 | *(uint *)(param_1 + 0x100) & 0xf8ffffff;
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f60bff8(int *param_1,int param_2)
{
int iVar1;
undefined4 uVar2;
uint *puVar3;
int iVar4;
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;
local_5c[0] = DAT_8f664234;
local_5c[1] = DAT_8f664238;
local_5c[2] = DAT_8f66423c;
local_5c[3] = DAT_8f664240;
local_1c = DAT_8f731d80;
local_4c = DAT_8f664244;
uStack_48 = DAT_8f664248;
uStack_44 = DAT_8f66424c;
uStack_40 = DAT_8f664250;
local_3c = DAT_8f664254;
uStack_38 = DAT_8f664258;
uStack_34 = DAT_8f66425c;
uStack_30 = DAT_8f664260;
local_2c = DAT_8f664264;
uStack_28 = DAT_8f664268;
uStack_24 = DAT_8f66426c;
uStack_20 = DAT_8f664270;
*(uint *)(*param_1 + 0x100) = *(uint *)(*param_1 + 0x100) & 0xfff9ffff | 0x90000;
iVar1 = *param_1;
do {
} while ((*(uint *)(iVar1 + 0x100) & 0x40000) != 0);
iVar4 = 0x32;
*(uint *)(iVar1 + 0x100) = *(uint *)(iVar1 + 0x100) & 0xff0fffff | local_5c[param_2] << 0x14;
*(uint *)(*param_1 + 0x100) = *(uint *)(*param_1 + 0x100) | 0x40000;
do {
puVar3 = (uint *)(*param_1 + 0x100);
if ((*(uint *)(*param_1 + 0x100) & 0x40000) != 0) {
uVar2 = 0;
*puVar3 = *puVar3 & 0xfff7ffff | 0x20000;
goto LAB_8f60c0d8;
}
FUN_8f613d18(1);
iVar4 = iVar4 + -1;
} while (iVar4 != 0);
FUN_8f63cbb4(s__s__clk_out_en_timed_out___08x_8f66430c,s_sdhci_msm_config_dll_8f664274,
*(undefined4 *)(*param_1 + 0x100));
uVar2 = 1;
LAB_8f60c0d8:
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f60c118(int *param_1)
{
int iVar1;
int iVar2;
int iVar3;
uint uVar4;
iVar1 = DAT_8f731d80;
iVar2 = *param_1;
uVar4 = *(uint *)(iVar2 + 0x10c) & 2;
if ((*(char *)(param_1 + 4) == '\x01') && (0x41 < *(ushort *)((int)param_1 + 0x12))) {
*(uint *)(iVar2 + 0x100) = *(uint *)(iVar2 + 0x100) & 0xfffbffff;
*(uint *)(*param_1 + 0x1b4) = *(uint *)(*param_1 + 0x1b4) | 0x200000;
iVar2 = *param_1;
}
if (uVar4 != 0) {
*(uint *)(iVar2 + 0x10c) = *(uint *)(iVar2 + 0x10c) & 0xfffffffd;
iVar2 = *param_1;
}
*(uint *)(iVar2 + 0x100) = *(uint *)(iVar2 + 0x100) | 0x40000000;
*(uint *)(*param_1 + 0x100) = *(uint *)(*param_1 + 0x100) | 0x20000000;
FUN_8f60bf10(*param_1,param_1[1]);
if ((*(char *)(param_1 + 4) == '\x01') && (0x41 < *(ushort *)((int)param_1 + 0x12))) {
iVar2 = *param_1;
if ((*(uint *)(iVar2 + 0x1b4) & 0x40000) == 0) {
iVar3 = (uint)param_1[1] / 19200000 << 2;
}
else {
iVar3 = (uint)param_1[1] / 19200000 << 3;
}
*(uint *)(iVar2 + 0x1b4) = *(uint *)(iVar2 + 0x1b4) & 0xfffc03ff | iVar3 << 10;
FUN_8f613d18(5);
}
*(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_8f60bf10(*param_1,param_1[1]);
*(uint *)(*param_1 + 0x1b4) = *(uint *)(*param_1 + 0x1b4) & 0xffdfffff;
}
iVar2 = 0x32;
*(uint *)(*param_1 + 0x100) = *(uint *)(*param_1 + 0x100) | 0x10000;
*(uint *)(*param_1 + 0x100) = *(uint *)(*param_1 + 0x100) | 0x40000;
do {
iVar3 = *param_1;
if ((*(uint *)(iVar3 + 0x108) & 0x80) != 0) {
if (uVar4 != 0) {
uVar4 = 0;
*(uint *)(iVar3 + 0x10c) = *(uint *)(iVar3 + 0x10c) | 2;
}
goto LAB_8f60c21c;
}
FUN_8f613d18(1);
iVar2 = iVar2 + -1;
} while (iVar2 != 0);
FUN_8f63cbb4(s__s__Failed_to_get_DLL_lock__0x_0_8f66432c,s_sdhci_msm_init_dll_8f66448c,
*(undefined4 *)(*param_1 + 0x108));
uVar4 = 1;
LAB_8f60c21c:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar4);
}
void FUN_8f60c304(int *param_1,int *param_2)
{
int iVar1;
int iVar2;
uint uVar3;
uint uVar4;
int *piVar5;
iVar1 = DAT_8f731d80;
*(undefined4 *)(*param_1 + 0x10c) = 0xa1c;
*(uint *)(*param_2 + 0x78) = *(uint *)(*param_2 + 0x78) | 1;
*(uint *)(*param_2 + 0x78) = *(uint *)(*param_2 + 0x78) | 0x2000;
FUN_8f60b20c();
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_8f614198(param_2[1],FUN_8f60beb4,param_2);
FUN_8f614160(param_2[1]);
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;
}
iVar2 = DAT_8f731d80;
*(undefined *)(param_2 + 2) = 0;
*(undefined *)((int)param_2 + 9) = 0;
param_1[3] = 0;
if (iVar1 != iVar2) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f60c43c(int *param_1)
{
int iVar1;
int iVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar3 = param_1[0xc];
iVar2 = *param_1;
if (param_1[2] == 3) {
*(uint *)(iVar2 + 0x10c) = *(uint *)(iVar2 + 0x10c) | 0x300;
if ((*(char *)(iVar3 + 8) != '\0') && (*(char *)(iVar3 + 9) == '\0')) {
*(uint *)(*param_1 + 0x10c) = *(uint *)(*param_1 + 0x10c) & 0xffc7ffff | 0x300000;
*(uint *)(*param_1 + 0x10c) = *(uint *)(*param_1 + 0x10c) | 0x40000;
}
}
else {
*(uint *)(iVar2 + 0x10c) = *(uint *)(iVar2 + 0x10c) & 0xffc7ffff;
*(uint *)(*param_1 + 0x10c) = *(uint *)(*param_1 + 0x10c) & 0xfffbffff;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f60c4e8(int *param_1,int param_2)
{
int iVar1;
uint uVar2;
iVar1 = DAT_8f731d80;
uVar2 = *(uint *)(*param_1 + 0x100);
if (param_2 == 0) {
uVar2 = uVar2 & 0xfffdffff | 0x80000;
}
else {
uVar2 = uVar2 & 0xfff7ffff | 0x20000;
}
*(uint *)(*param_1 + 0x100) = uVar2;
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f60c53c(int *param_1,int *param_2,int param_3)
{
bool bVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
uint uVar5;
uint *puVar6;
uint uVar7;
uint uVar8;
undefined *puVar9;
int iVar10;
uint uVar11;
int iVar12;
undefined4 uVar13;
uint uVar14;
uint local_568;
uint local_548;
uint local_544 [17];
uint local_500 [16];
undefined2 auStack_4c0 [2];
int local_4bc;
undefined local_4b8;
undefined local_4b7;
undefined2 uStack_4b6;
undefined4 local_4a4;
int local_48c;
undefined4 local_488;
undefined4 local_484;
undefined2 auStack_478 [2];
int local_474;
undefined local_46f;
undefined2 uStack_46e;
int local_46c;
uint local_42c [256];
int local_2c;
local_2c = DAT_8f731d80;
FUN_8f63e410(local_544 + 1,0,0x40);
if (param_3 != 2) {
uVar13 = 0x40;
}
else {
uVar13 = 0x80;
}
param_1[3] = 1;
puVar9 = (undefined *)0x8f66428c;
if (param_3 != 2) {
puVar9 = &DAT_8f6644a0;
}
iVar10 = param_1[0xc];
iVar2 = FUN_8f63e150(0x40,uVar13);
if (iVar2 == 0) {
FUN_8f63cce8();
}
if (((*(char *)(iVar10 + 8) == '\0') || (*(char *)(iVar10 + 9) != '\0')) || (param_1[2] != 3)) {
local_548 = FUN_8f60c118(param_1);
uVar11 = local_548;
if (local_548 == 0) {
do {
local_544[0] = uVar11;
local_568 = 0;
FUN_8f63e410(auStack_4c0,0,0x48);
FUN_8f63e410(auStack_478,0,0x48);
uVar11 = 0;
do {
while( true ) {
iVar10 = FUN_8f60bff8(param_1,uVar11);
if (iVar10 != 0) goto LAB_8f60c9ac;
local_4b7 = 0;
local_4a4 = 1;
local_4b8 = 1;
local_484 = 1;
local_4bc = iVar10;
local_48c = iVar2;
local_488 = uVar13;
iVar10 = FUN_8f60b514(param_1,auStack_4c0);
if (iVar10 == 0) break;
iVar10 = 100;
local_46f = 0;
uStack_46e = 1;
local_474 = *param_2 << 0x10;
auStack_478[0] = 0xd;
do {
iVar3 = FUN_8f60b514(param_1,auStack_478);
if ((iVar3 == 0) && ((uint)(local_46c << 0x13) >> 0x1c == 4)) break;
FUN_8f613d18(10);
iVar10 = iVar10 + -1;
} while (iVar10 != 0);
LAB_8f60c728:
uVar11 = uVar11 + 1;
if (uVar11 == 0x10) goto LAB_8f60c734;
}
iVar10 = FUN_8f63e524(iVar2,puVar9,uVar13);
if (iVar10 != 0) goto LAB_8f60c728;
uVar14 = local_568 + 1;
local_544[local_568 + 1] = uVar11;
uVar11 = uVar11 + 1;
local_568 = uVar14;
} while (uVar11 != 0x10);
LAB_8f60c734:
uVar11 = local_544[0];
if (local_568 != 0x10) goto LAB_8f60c778;
do {
uVar11 = uVar11 + 1 & 0xff;
if (3 < uVar11) goto LAB_8f60c778;
local_548 = FUN_8f60d798(param_1,param_2,uVar11);
} while (local_548 == 0);
} while( true );
}
}
else {
iVar3 = FUN_8f60c118(param_1);
if ((iVar3 == 0) &&
(iVar3 = FUN_8f60bff8(param_1,*(undefined *)(param_1[0xc] + 10)), iVar3 == 0)) {
*(uint *)(*param_1 + 0x100) = *(uint *)(*param_1 + 0x100) | 1;
if (param_1[5] == 0) {
iVar12 = *param_1;
uVar4 = FUN_8f626024();
iVar3 = 0x32;
*(undefined4 *)(iVar12 + 0x1b8) = uVar4;
*(uint *)(*param_1 + 0x1b4) = *(uint *)(*param_1 + 0x1b4) | 1;
do {
iVar12 = *param_1;
if ((*(uint *)(iVar12 + 0x108) & 0x800) != 0) {
uVar14 = 0;
*(uint *)(iVar12 + 0x1b0) = *(uint *)(iVar12 + 0x1b0) | 8;
LAB_8f60cb4c:
*(undefined *)(iVar10 + 9) = 1;
goto LAB_8f60c9b8;
}
FUN_8f613cc4(1);
iVar3 = iVar3 + -1;
} while (iVar3 != 0);
FUN_8f63cbb4(s_Error__DLL_lock_for_hs400_operat_8f6643d4);
}
else {
*(uint *)(*param_1 + 0x184) = *(uint *)(*param_1 + 0x184) & 0xfffffffe;
*(uint *)(*param_1 + 0x184) = *(uint *)(*param_1 + 0x184) & 0xffffffbf;
*(uint *)(*param_1 + 0x178) = *(uint *)(*param_1 + 0x178) & 0xfffffffe;
*(uint *)(*param_1 + 0x178) = *(uint *)(*param_1 + 0x178) | 2;
*(uint *)(*param_1 + 0x184) = *(uint *)(*param_1 + 0x184) & 0xffffffbf;
iVar3 = 0x32;
*(undefined4 *)(*param_1 + 0x130) = 0x11800ec;
*(undefined4 *)(*param_1 + 0x134) = 0x3011111;
*(undefined4 *)(*param_1 + 0x138) = 0x1201000;
*(undefined4 *)(*param_1 + 0x13c) = 4;
*(undefined4 *)(*param_1 + 0x140) = 0xcb732020;
*(undefined4 *)(*param_1 + 0x144) = 0xb19;
*(undefined4 *)(*param_1 + 0x150) = 0x4e2;
*(undefined4 *)(*param_1 + 0x14c) = 0;
*(undefined4 *)(*param_1 + 0x160) = 0x16334;
*(uint *)(*param_1 + 0x130) = *(uint *)(*param_1 + 0x130) | 0x10000;
*(uint *)(*param_1 + 0x130) = *(uint *)(*param_1 + 0x130) & 0xfffeffff;
*(uint *)(*param_1 + 0x130) = *(uint *)(*param_1 + 0x130) | 0x20000;
*(uint *)(*param_1 + 0x138) = *(uint *)(*param_1 + 0x138) | 0x10000;
do {
iVar12 = *param_1;
if ((*(uint *)(iVar12 + 0x164) & 1) != 0) {
uVar14 = *(uint *)(iVar12 + 0x164) & 0x7000000;
if (uVar14 == 0) {
*(uint *)(iVar12 + 0x184) = *(uint *)(iVar12 + 0x184) | 0x40;
goto LAB_8f60cb4c;
}
FUN_8f63cbb4(s_CDC_error_set_during_calibration_8f6643ac);
goto LAB_8f60c9ac;
}
FUN_8f613cc4(1);
iVar3 = iVar3 + -1;
} while (iVar3 != 0);
FUN_8f63cbb4(s_Error__Calibration_done_in_CDC_s_8f66437c);
}
}
}
LAB_8f60c9ac:
uVar14 = 1;
LAB_8f60c9b8:
if (DAT_8f724080 != 0) {
uStack_4b6 = 1;
auStack_4c0[0] = 0x15;
local_4a4 = 1;
local_4b8 = 1;
local_484 = 1;
local_4bc = 0;
local_4b7 = 0;
local_48c = iVar2;
local_488 = uVar13;
FUN_8f60b514(param_1,auStack_4c0);
}
FUN_8f63e200(iVar2);
iVar2 = DAT_8f731d80;
param_1[3] = 0;
*(undefined *)(param_1[0xc] + 8) = 1;
if (local_2c == iVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar14);
LAB_8f60c778:
if (local_548 != 0) {
FUN_8f60d798(param_1,param_2,0);
}
if (local_568 == 0x10) {
DAT_8f724080 = 1;
FUN_8f63cbb4(s_WARNING__All_phase_passed_The_se_8f664404);
}
else if (local_568 == 0) {
FUN_8f63cbb4(s_Failed_to_get_tuned_phase_8f664470);
goto LAB_8f60c9ac;
}
FUN_8f63e410(local_42c,0,0x400);
FUN_8f63e410(local_500,0,0x40);
if (local_544[1] == 0) {
uVar11 = local_568;
if (local_568 < 0x10) {
uVar11 = local_544[local_568];
}
if (uVar11 == 0xf) {
bVar1 = true;
}
else {
bVar1 = false;
}
}
else {
bVar1 = false;
}
uVar11 = local_568;
uVar14 = local_568;
if (local_568 != 0) {
uVar5 = 1;
local_42c[0] = local_544[1];
local_500[0] = 1;
if (local_568 == 1) {
uVar11 = 0;
}
else {
puVar6 = local_544 + 1;
iVar10 = 1;
uVar11 = 0;
do {
uVar14 = local_544[1] + 1;
puVar6 = puVar6 + 1;
local_544[1] = *puVar6;
if (uVar14 != local_544[1]) {
uVar11 = uVar11 + 1;
iVar10 = 0;
}
uVar14 = local_500[0];
if (uVar5 == local_568) break;
uVar5 = uVar5 + 1;
iVar3 = iVar10 + uVar11 * 0x10;
uVar14 = local_500[uVar11];
iVar10 = iVar10 + 1;
local_42c[iVar3] = local_544[1];
local_500[uVar11] = uVar14 + 1;
uVar14 = local_500[0];
} while (local_568 != uVar5);
}
}
if (bVar1) {
uVar5 = local_500[uVar11];
if ((uVar5 < 0x10) && (local_42c[uVar5 + uVar11 * 0x10] = local_42c[0], 1 < uVar14)) {
puVar6 = local_42c;
uVar7 = 1;
do {
if (uVar7 == 0x10 - uVar5) break;
puVar6 = puVar6 + 1;
uVar7 = uVar7 + 1;
puVar6[uVar11 * 0x10 + uVar5] = *puVar6;
} while (uVar7 != uVar14);
}
uVar5 = uVar5 + uVar14;
uVar14 = 0;
local_500[uVar11] = uVar5;
local_500[0] = 0;
}
uVar7 = 0;
puVar6 = local_500;
uVar5 = 0;
uVar8 = 0;
while( true ) {
if (uVar5 < uVar14) {
uVar7 = uVar8;
}
uVar8 = uVar8 + 1;
if (uVar5 < uVar14) {
uVar5 = uVar14;
}
if (uVar11 < uVar8) break;
puVar6 = puVar6 + 1;
uVar14 = *puVar6;
}
uVar11 = uVar5 * 3 >> 2;
if (uVar11 != 0) {
uVar11 = uVar11 - 1;
}
uVar11 = local_42c[uVar11 + uVar7 * 0x10];
if ((int)uVar11 < 0) {
FUN_8f63cbb4(s_Failed_in_selecting_the_tuning_p_8f664448);
uVar14 = 1;
}
else {
uVar14 = FUN_8f60bff8(param_1,uVar11);
if (uVar14 == 0) {
*(char *)(param_1[0xc] + 10) = (char)uVar11;
}
else {
uVar14 = 0;
}
}
goto LAB_8f60c9b8;
}
void FUN_8f60cd6c(int param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
*(uint *)(**(int **)(param_1 + 0x30) + 0x78) =
*(uint *)(**(int **)(param_1 + 0x30) + 0x78) & 0xfffffffe;
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f60cdb4(undefined4 param_1)
{
undefined uVar1;
undefined2 local_60 [2];
undefined4 local_5c;
undefined local_57;
undefined2 local_56;
int local_14;
local_14 = DAT_8f731d80;
FUN_8f63e410(local_60,0,0x48);
local_60[0] = 0;
local_5c = 0;
local_57 = 0;
local_56 = 0;
uVar1 = FUN_8f60b514(param_1,local_60);
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar1);
}
void FUN_8f60ce20(undefined4 *param_1)
{
undefined uVar1;
undefined4 *puVar2;
undefined4 uVar3;
undefined4 uVar4;
undefined auStack_38 [28];
int local_1c;
local_1c = DAT_8f731d80;
FUN_8f626860(auStack_38,0,1);
param_1[6] = auStack_38;
*param_1 = param_1[0x40];
*(undefined *)((int)param_1 + 0x2b) = *(undefined *)(param_1 + 0x44);
*(undefined *)(param_1 + 0xb) = *(undefined *)((int)param_1 + 0x111);
puVar2 = (undefined4 *)FUN_8f63e114(0x14);
if (puVar2 == (undefined4 *)0x0) {
FUN_8f63cce8();
}
uVar3 = param_1[0x41];
uVar4 = param_1[0x3f];
puVar2[4] = auStack_38;
*puVar2 = uVar3;
puVar2[1] = uVar4;
*(undefined *)((int)puVar2 + 0xb) = *(undefined *)(param_1 + 0x3e);
*(undefined *)(puVar2 + 3) = *(undefined *)((int)param_1 + 0x112);
param_1[0xc] = puVar2;
FUN_8f603fc8();
FUN_8f604064(*(undefined *)(param_1 + 0x3e),param_1[0x43]);
if (*(char *)(param_1 + 0x3e) == '\x01') {
FUN_8f625cdc();
}
FUN_8f60c304(param_1,puVar2);
FUN_8f60bd48(param_1);
uVar1 = FUN_8f60b2b0(param_1,400000);
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar1);
}
void FUN_8f60cf38(undefined4 param_1,int *param_2,int *param_3)
{
int iVar1;
undefined2 local_68 [2];
int local_64;
undefined local_5f;
undefined2 local_5e;
int local_5c;
int local_1c;
local_1c = DAT_8f731d80;
FUN_8f63e410(local_68,0,0x48);
local_68[0] = 0xd;
local_64 = *param_2 << 0x10;
local_5f = 0;
local_5e = 1;
iVar1 = FUN_8f60b514(param_1,local_68);
if (iVar1 == 0) {
if (local_5c < 0) {
iVar1 = 1;
}
else {
*param_3 = local_5c;
}
}
if (local_1c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
return;
}
void FUN_8f60cfd0(undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5)
{
int iVar1;
uint local_74;
undefined2 local_70 [2];
uint local_6c;
undefined local_67;
undefined2 local_66;
int local_24;
local_24 = DAT_8f731d80;
FUN_8f63e410(local_70,0,0x48);
local_70[0] = 6;
local_6c = local_6c | param_5 << 8 | param_4 << 0x10 | param_3 << 0x18;
local_67 = 0;
local_66 = 2;
iVar1 = FUN_8f60b514(param_1,local_70);
if (iVar1 == 0) {
iVar1 = FUN_8f60cf38(param_1,param_2,&local_74);
if (iVar1 == 0) {
if ((local_74 << 0x13) >> 0x1c != 4) {
FUN_8f63cbb4(s_Switch_cmd_failed__Card_not_in_t_8f664618);
iVar1 = 1;
}
if ((local_74 & 0x80) != 0) {
FUN_8f63cbb4(s_Switch_cmd_failed__Switch_Error__8f664648);
iVar1 = 1;
}
}
else {
FUN_8f63cbb4(s_Get_card_status_failed_8f664600);
}
}
else {
FUN_8f63cbb4(s_CMD6_send_failed_8f6645ec);
}
if (local_24 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
return;
}
void FUN_8f60d0e8(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f60cfd0(param_1,param_2,3,0xb7,param_3);
if (iVar2 != 0) {
FUN_8f63cbb4(s_Switch_cmd_failed_8f66466c);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f60d144(int param_1,uint param_2)
{
int iVar1;
int iVar2;
uint uVar3;
iVar1 = DAT_8f731d80;
uVar3 = *(byte *)(*(int *)(param_1 + 0x58) + 0xb3) & 0xfffffff8 | param_2;
iVar2 = FUN_8f60cfd0(param_1,param_1 + 0x38,3,0xb3,uVar3);
if (iVar2 == 0) {
*(char *)(*(int *)(param_1 + 0x58) + 0xb3) = (char)uVar3;
}
else {
FUN_8f63cbb4(s_Failed_to_switch_partition_to_ty_8f664680,param_2);
iVar2 = 1;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f60d1cc(undefined4 param_1,int param_2)
{
int iVar1;
undefined2 local_68 [2];
int local_64;
undefined2 local_5e;
int local_1c;
local_64 = param_2 << 0x10;
local_1c = DAT_8f731d80;
FUN_8f63e410(local_68,0,0x48);
local_68[0] = 0x37;
local_5e = 1;
iVar1 = FUN_8f60b514(param_1,local_68);
if (iVar1 != 0) {
FUN_8f63cbb4(s_Failed_Sending_CMD55_8f6646a8);
iVar1 = 1;
}
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
void FUN_8f60d254(uint param_1)
{
int iVar1;
uint uVar2;
iVar1 = DAT_8f731d80;
if ((int)param_1 < 0) {
FUN_8f63cbb4(s_Attempting_to_read_or_write_beyo_8f6646c0);
uVar2 = 1;
}
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) {
if ((param_1 << 0x13) >> 0x1c != 4) {
FUN_8f63cbb4(s_MMC_card_is_not_in_TRAN_state_8f6647f4);
uVar2 = 1;
}
}
else {
FUN_8f63cbb4(s_A_generic_Device_error_8f6647dc);
uVar2 = 1;
}
}
else {
FUN_8f63cbb4(s_Device_error_occurred__which_is_n_8f664798);
uVar2 = 1;
}
}
else {
FUN_8f63cbb4(s_Attempt_to_program_a_write_prote_8f66476c);
uVar2 = 1;
}
}
else {
FUN_8f63cbb4(s_The_transferred_bytes_does_not_m_8f664734);
uVar2 = 1;
}
}
else {
FUN_8f63cbb4(s_The_misaligned_address_did_not_m_8f6646f8);
uVar2 = 1;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f60d350(int param_1)
{
int iVar1;
undefined2 local_60 [2];
int local_5c;
undefined local_57;
undefined2 local_56;
undefined4 local_54;
int local_14;
local_14 = DAT_8f731d80;
FUN_8f63e410(local_60,0,0x48);
local_60[0] = 0xc;
local_5c = *(int *)(param_1 + 0x38) << 0x10;
local_57 = 0;
local_56 = 1;
iVar1 = FUN_8f60b514(param_1,local_60);
if (iVar1 == 0) {
iVar1 = FUN_8f60d254(local_54);
}
else {
FUN_8f63cbb4(s_Failed_to_send_stop_command_8f664814);
}
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
void FUN_8f60d3ec(undefined4 param_1,int *param_2)
{
int iVar1;
undefined2 local_68 [4];
undefined local_60;
undefined local_5f;
undefined2 local_5e;
undefined4 local_4c;
int local_34;
undefined4 local_2c;
int local_1c;
local_1c = DAT_8f731d80;
iVar1 = FUN_8f63e150(0x40,0x200);
*param_2 = iVar1;
if (iVar1 == 0) {
FUN_8f63cce8();
iVar1 = *param_2;
}
FUN_8f63e410(iVar1,0,4);
FUN_8f63e410(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[0] = 8;
FUN_8f60b514(param_1,local_68);
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f60d4c8(int param_1,undefined4 param_2)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f60cfd0(param_1,param_2,3,0xb9,1);
if (iVar2 == 0) {
*(undefined4 *)(param_1 + 8) = 1;
FUN_8f60b374(param_1,1);
}
else {
FUN_8f63cbb4(s_Switch_cmd_returned_failure__d_8f664844,0x3d5);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f60d544(int param_1,undefined4 *param_2)
{
int iVar1;
char cVar2;
iVar1 = DAT_8f731d80;
cVar2 = FUN_8f60d0e8(param_1,param_2,6);
if (cVar2 == '\0') {
*(undefined4 *)(param_1 + 8) = 4;
FUN_8f60b374(param_1);
}
else {
FUN_8f63cbb4(s_Failure_to_set_DDR_mode_for_Card_8f664864,*param_2);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(cVar2);
}
void FUN_8f60d5bc(int param_1,undefined4 *param_2,undefined4 param_3)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f60d0e8();
if (iVar2 == 0) {
iVar2 = FUN_8f60cfd0(param_1,param_2,3,0xb9,2);
if (iVar2 == 0) {
FUN_8f60b374(param_1,3);
if ((*(char *)(param_1 + 0x2c) != '\0') && ((*(byte *)(param_2[8] + 0xc4) & 0xc0) != 0)) {
*(undefined4 *)(param_1 + 8) = 3;
FUN_8f60c43c(param_1);
FUN_8f604064(*(undefined *)(*(int *)(param_1 + 0x30) + 0xb),400000000);
}
iVar2 = FUN_8f60c53c(param_1,param_2,param_3);
if (iVar2 != 0) {
FUN_8f63cbb4(s_Tuning_for_hs200_failed_8f6648bc);
}
if (*(int *)(param_1 + 8) == 3) {
*(undefined4 *)(param_1 + 8) = 2;
FUN_8f60c43c(param_1);
FUN_8f604064(*(undefined *)(*(int *)(param_1 + 0x30) + 0xb),192000000);
}
else {
*(undefined4 *)(param_1 + 8) = 2;
}
}
else {
FUN_8f63cbb4(s_Switch_cmd_returned_failure__d_8f664844,0x375);
}
}
else {
FUN_8f63cbb4(s_Failure_to_set_wide_bus_for_Card_8f664890,*param_2);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
// WARNING: Removing unreachable block (ram,0x8f60d748)
void FUN_8f60d710(int param_1)
{
FUN_8f60d3ec(param_1,param_1 + 0x58);
return;
}
void FUN_8f60d74c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f60cfd0(param_1,param_1 + 0x38,param_2,param_3,param_4);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f60d798(undefined4 param_1,int param_2,uint param_3)
{
int iVar1;
undefined4 uVar2;
int iVar3;
iVar1 = DAT_8f731d80;
if (((int)(uint)*(byte *)(*(int *)(param_2 + 0x20) + 0xc5) >> (param_3 & 0xff) & 1U) != 0) {
iVar3 = FUN_8f60cfd0(param_1,param_2,3,0xb9,param_3 << 4 | 2);
if (iVar3 != 0) {
uVar2 = 0;
goto LAB_8f60d7c8;
}
}
uVar2 = 1;
LAB_8f60d7c8:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f60d80c(int param_1,undefined4 param_2,int param_3)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
if (param_3 == 2) {
iVar2 = FUN_8f60d5bc();
if (iVar2 == 0) {
*(undefined4 *)(param_1 + 8) = 0;
FUN_8f60b374(param_1,0);
iVar2 = FUN_8f60d4c8(param_1,param_2);
if (iVar2 == 0) {
iVar2 = FUN_8f60d544(param_1,param_2);
if (iVar2 == 0) {
iVar2 = FUN_8f60cfd0(param_1,param_2,3,0xb9,3);
if (iVar2 == 0) {
*(undefined4 *)(param_1 + 8) = 3;
FUN_8f60b374(param_1,3);
FUN_8f60c43c(param_1);
FUN_8f604064(*(undefined *)(*(int *)(param_1 + 0x30) + 0xb),400000000);
iVar2 = FUN_8f60c53c(param_1,param_2,2);
if (iVar2 != 0) {
FUN_8f63cbb4(s_Tuning_for_hs400_failed_8f6649cc);
}
}
else {
FUN_8f63cbb4(s_Switch_cmd_returned_failure__s___8f6649a8,s_mmc_set_hs400_mode_8f664578,
0x425);
}
}
else {
FUN_8f63cbb4(s_Failure_setting_DDR_mode__s__d_8f664988,s_mmc_set_hs400_mode_8f664578,0x41c
);
}
}
else {
FUN_8f63cbb4(s_Error_adjusting_interface_speed__8f664960,s_mmc_set_hs400_mode_8f664578,0x414
);
}
}
else {
FUN_8f63cbb4(s_Failure_Setting_HS200_mode__s__d_8f66493c,s_mmc_set_hs400_mode_8f664578,0x405);
}
}
else {
FUN_8f63cbb4(s_Bus_width_is_not_8_bit__cannot_s_8f664908,param_3);
iVar2 = 1;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f60d9ac(undefined4 param_1,undefined4 *param_2)
{
int iVar1;
undefined4 uVar2;
char cVar3;
undefined2 local_78 [2];
undefined4 local_74;
undefined local_6f;
undefined2 local_6e;
uint local_6c;
int local_2c;
cVar3 = '\x03';
local_2c = DAT_8f731d80;
FUN_8f63e410(local_78,0,0x48);
*param_2 = 0;
do {
local_78[0] = 8;
local_74 = 0x1aa;
local_6f = 0;
local_6e = 0x80;
iVar1 = FUN_8f60b514(param_1,local_78);
if (iVar1 != 0) {
FUN_8f63cbb4(s_The_response_for_CMD8_does_not_m_8f6649e8);
uVar2 = 1;
goto LAB_8f60dad4;
}
if (local_6c == 0x1aa) goto LAB_8f60da4c;
cVar3 = cVar3 + -1;
FUN_8f613cc4(1);
} while (cVar3 != '\0');
if (local_6c == 0x1aa) {
LAB_8f60da4c:
cVar3 = '\x14';
do {
iVar1 = FUN_8f60d1cc(param_1,*param_2);
if (iVar1 != 0) {
FUN_8f63cbb4(s_Failed_sending_App_command_8f664a44);
uVar2 = 1;
goto LAB_8f60dad4;
}
local_78[0] = 0x29;
local_74 = 0x40ff8000;
local_6f = 0;
local_6e = 8;
iVar1 = FUN_8f60b514(param_1,local_78);
if (iVar1 != 0) {
FUN_8f63cbb4(s_Failure_sending_ACMD41_8f664a60);
uVar2 = 1;
goto LAB_8f60dad4;
}
if ((int)local_6c < 0) {
local_6c = local_6c & 0x40000000;
if (local_6c != 0) {
local_6c = 1;
}
param_2[6] = local_6c;
goto LAB_8f60daf8;
}
FUN_8f613cc4(0x32);
cVar3 = cVar3 + -1;
} while (cVar3 != '\0');
if ((int)local_6c < 0) {
LAB_8f60daf8:
uVar2 = 0;
}
else {
FUN_8f63cbb4(s_Error__ACMD41_response_timed_out_8f664a78);
uVar2 = 1;
}
}
else {
FUN_8f63cbb4(s_Error__CMD8_response_timed_out_8f664a24);
uVar2 = 1;
}
LAB_8f60dad4:
if (local_2c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f60db54(undefined4 param_1,undefined4 *param_2,int param_3)
{
int iVar1;
undefined2 local_68 [2];
undefined4 local_64;
undefined local_5f;
undefined2 local_5e;
int local_1c;
local_1c = DAT_8f731d80;
FUN_8f63e410(local_68,0,0x48);
iVar1 = FUN_8f60d1cc(param_1,*param_2);
if (iVar1 == 0) {
local_5f = 0;
if (param_3 == 1) {
local_64 = 2;
}
else {
local_64 = 0;
}
local_68[0] = 6;
local_5e = 1;
iVar1 = FUN_8f60b514(param_1,local_68);
if (iVar1 != 0) {
iVar1 = 1;
}
}
else {
FUN_8f63cbb4(s_Failed_sending_App_command_8f664a44);
iVar1 = 1;
}
if (local_1c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
return;
}
void FUN_8f60dc04(undefined4 param_1)
{
int iVar1;
undefined2 local_68 [2];
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_8f731d80;
FUN_8f63e410(local_68,0,0x48);
local_64 = 0x80fffff1;
local_34 = &DAT_8f724140;
local_68[0] = 6;
local_5e = 1;
local_4c = 1;
local_60 = 1;
local_2c = 1;
local_30 = 0x40;
iVar1 = FUN_8f60b514(param_1,local_68);
if (iVar1 == 0) {
FUN_8f60b374(param_1,1);
}
else {
iVar1 = 1;
}
if (local_1c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
return;
}
void FUN_8f60dcb0(int param_1)
{
undefined *puVar1;
longlong lVar2;
int iVar3;
int iVar4;
undefined *puVar5;
uint uVar6;
byte bVar7;
uint uVar8;
uint *puVar9;
int iVar10;
short sVar11;
uint *puVar12;
int iVar13;
int iVar14;
int iVar15;
byte *pbVar16;
uint uVar17;
uint uVar18;
bool bVar19;
int param_11;
uint local_100;
int local_fc;
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;
uint uStack_7c;
undefined2 local_78;
int local_74;
undefined local_70;
undefined local_6f;
undefined2 local_6e;
undefined4 local_6c;
uint local_68;
uint local_60;
undefined4 local_5c;
uint local_54;
int local_50;
undefined *local_44;
undefined4 local_40;
undefined4 local_3c;
int local_2c;
undefined auStack_28 [4];
local_2c = DAT_8f731d80;
*(undefined4 *)(param_1 + 0x54) = 0;
*(undefined4 *)(param_1 + 0x3c) = 0x40ff8000;
iVar10 = param_1 + 0x38;
iVar3 = FUN_8f60cdb4();
if (iVar3 == 0) {
iVar3 = 1000;
FUN_8f63e410(&local_78,0,0x48);
local_74 = *(int *)(param_1 + 0x3c);
local_6f = 0;
local_78 = 1;
local_6e = 8;
do {
iVar4 = FUN_8f60b514(param_1,&local_78);
if (iVar4 != 0) goto LAB_8f60dd60;
if ((int)local_6c < 0) {
*(uint *)(param_1 + 0x3c) = local_6c;
if ((local_6c & 0x40000000) == 0) {
*(undefined4 *)(param_1 + 0x50) = 4;
}
else {
*(undefined4 *)(param_1 + 0x50) = 3;
}
goto LAB_8f60dd84;
}
FUN_8f613cc4(1);
iVar3 = iVar3 + -1;
} while (iVar3 != 0);
FUN_8f63cbb4(s_Card_has_busy_status_set__Init_d_8f664d90);
LAB_8f60dd60:
FUN_8f63cbb4(s_Failure_getting_OCR_response_fro_8f664c4c);
}
else {
FUN_8f63cbb4(s_Failure_resetting_MMC_cards__8f664a9c);
}
FUN_8f63cbb4(s_MMC_card_failed_to_respond__try_f_8f664c78);
iVar3 = FUN_8f60d9ac(param_1,iVar10);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failed_to_initialize_SD_card_8f664abc);
goto LAB_8f60ddd4;
}
LAB_8f60dd84:
puVar12 = (uint *)&local_78;
FUN_8f63e410(puVar12,0,0x48);
local_74 = 0;
local_78 = 2;
local_6f = 0;
local_6e = 4;
iVar3 = FUN_8f60b514(param_1,puVar12);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failure_getting_card_s_CID_numbe_8f664ca8);
goto LAB_8f60ddd4;
}
if (*(uint *)(param_1 + 0x50) < 2) {
pbVar16 = &bStack_b1;
uVar8 = 0x60;
local_b4 = (local_60 << 8) >> 0x10;
local_b8 = local_60 >> 0x18;
do {
uVar6 = uVar8 >> 5;
uVar18 = uVar8 + 7;
uVar17 = uVar8 & 0x1f;
uVar8 = uVar8 - 8;
bVar7 = (byte)((uint)(&local_6c)[uVar6] >> uVar17);
if (uVar6 < uVar18 >> 5) {
bVar7 = bVar7 | (byte)(local_60 << (0x20 - uVar17 & 0xff));
}
pbVar16 = pbVar16 + 1;
*pbVar16 = bVar7;
} while (uVar8 != 0x38);
local_ab = 0;
local_a4 = local_68 << 8 | local_6c >> 0x18;
local_9c = ((local_6c << 0xc) >> 0x18) + 2000;
}
else {
pbVar16 = &bStack_b1;
uVar8 = 0x60;
local_b4 = (local_60 << 8) >> 0x10;
local_b8 = local_60 >> 0x18;
do {
puVar1 = (undefined *)(uVar8 >> 5);
uVar6 = uVar8 & 0x1f;
puVar5 = (undefined *)(uVar8 + 7 >> 5);
bVar19 = puVar1 < puVar5;
uVar8 = uVar8 - 8;
if (bVar19) {
puVar5 = auStack_28 + (int)puVar5 * 4;
}
if (bVar19) {
puVar5 = *(undefined **)(puVar5 + -0x44);
}
bVar7 = (byte)((uint)(&local_6c)[(int)puVar1] >> uVar6);
if (bVar19) {
bVar7 = bVar7 | (byte)((int)puVar5 << (0x20 - uVar6 & 0xff));
}
pbVar16 = pbVar16 + 1;
*pbVar16 = bVar7;
} while (uVar8 != 0x30);
local_9c = ((local_6c << 0x10) >> 0x1c) + 0x7cd;
local_a4 = local_68 << 0x10 | local_6c >> 0x10;
local_68 = local_68 << 8;
}
local_a0 = (local_6c << 0x14) >> 0x1c;
local_a8 = local_68 >> 0x18;
local_aa = 0;
FUN_8f63e304(param_1 + 0x7c,&local_b8,0x20);
FUN_8f63e410(puVar12,0,0x48);
if (*(uint *)(param_1 + 0x50) < 2) {
local_74 = 0;
local_78 = 3;
local_6f = 0;
local_6e = 0x40;
iVar3 = FUN_8f60b514(param_1,puVar12);
if (iVar3 == 0) {
*(uint *)(param_1 + 0x38) = (uint)local_6c._2_2_;
goto LAB_8f60df90;
}
}
else {
*(undefined4 *)(param_1 + 0x38) = 2;
local_78 = 3;
local_74 = 0x20000;
local_6f = 0;
local_6e = 0x40;
iVar3 = FUN_8f60b514(param_1,puVar12);
if (iVar3 == 0) {
LAB_8f60df90:
FUN_8f63e410(puVar12,0,0x48);
local_74 = *(int *)(param_1 + 0x38) << 0x10;
local_78 = 9;
local_6f = 0;
local_6e = 4;
iVar3 = FUN_8f60b514(param_1,puVar12);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failure_getting_card_s_CSD_infor_8f664cec);
goto LAB_8f60ddd4;
}
FUN_8f63e304(param_1 + 0x5c,&local_6c,0x10);
FUN_8f63e410(puVar12,0,0x48);
iVar3 = *(int *)(param_1 + 0x38);
local_6f = 0;
local_78 = 7;
if (iVar3 == 0) {
local_6e = 0;
}
local_74 = iVar3 << 0x10;
if (iVar3 != 0) {
if (*(uint *)(param_1 + 0x50) < 2) {
local_6e = 2;
}
else {
local_6e = 1;
}
}
iVar3 = FUN_8f60b514(param_1,puVar12);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failure_selecting_the_Card_with_R_8f664d18,*(undefined4 *)(param_1 + 0x38));
goto LAB_8f60ddd4;
}
*(undefined4 *)(param_1 + 0x54) = 1;
if (*(uint *)(param_1 + 0x50) < 2) {
iVar3 = FUN_8f60dc04(param_1,iVar10);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failed_to_set_HS_for_SD_card_8f664adc);
goto LAB_8f60ddd4;
}
}
else {
iVar3 = FUN_8f60d4c8(param_1,iVar10);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Error_adjusting_interface_speed__8f664afc);
goto LAB_8f60ddd4;
}
}
if (1 < *(int *)(param_1 + 0x50) - 3U) {
FUN_8f63e410(puVar12,0,0x48);
iVar3 = FUN_8f60d1cc(param_1,*(undefined4 *)(param_1 + 0x38));
if (iVar3 == 0) {
local_6f = 0;
local_78 = 0x33;
local_44 = &DAT_8f724100;
local_6e = 1;
local_5c = 1;
local_70 = 1;
local_3c = 1;
local_40 = 8;
local_74 = iVar3;
iVar3 = FUN_8f60b514(param_1,puVar12);
if (iVar3 == 0) {
FUN_8f63e304(&local_b8,&DAT_8f724100,8);
uVar8 = local_b8 << 0x18 | (local_b8 >> 8 & 0xff) << 0x10 |
(local_b8 >> 0x10 & 0xff) << 8 | local_b8 >> 0x18;
*(uint *)(param_1 + 0x6c) = uVar8;
*(uint *)(param_1 + 0xdc) = (uVar8 << 0xc) >> 0x1c;
*(uint *)(param_1 + 0xe8) = local_b8 >> 0x18 & 2;
*(uint *)(param_1 + 0xe0) = (uVar8 << 4) >> 0x1c;
*(uint *)(param_1 + 0xe4) = (uVar8 << 0x10) >> 0x1f;
*(uint *)(param_1 + 0x70) =
local_b4 << 0x18 | (local_b4 >> 8 & 0xff) << 0x10 | (local_b4 >> 0x10 & 0xff) << 8
| local_b4 >> 0x18;
FUN_8f63e410(puVar12,0,0x48);
iVar3 = FUN_8f60d1cc(param_1,*(undefined4 *)(param_1 + 0x38));
if (iVar3 == 0) {
local_6f = 0;
local_6e = 1;
local_5c = 1;
local_70 = 1;
local_3c = 1;
local_44 = &DAT_8f7240c0;
local_78 = 0xd;
local_40 = 0x40;
local_74 = iVar3;
iVar3 = FUN_8f60b514(param_1,puVar12);
if (iVar3 == 0) {
FUN_8f63e304(&local_b8,&DAT_8f7240c0,0x40);
puVar9 = (uint *)&local_bc;
do {
puVar9 = puVar9 + 1;
uVar8 = *puVar9;
puVar12 = puVar12 + -1;
*puVar12 = uVar8 << 0x18 | (uVar8 >> 8 & 0xff) << 0x10 |
(uVar8 >> 0x10 & 0xff) << 8 | uVar8 >> 0x18;
} while (puVar9 != &uStack_7c);
uVar8 = local_50 << 8 | local_54 >> 8;
*(int *)(param_1 + 0xec) = 1 << (param_11 + 4U & 0xff);
if (uVar8 == 0) {
uVar8 = 0x10;
}
*(uint *)(param_1 + 0xf0) = uVar8;
goto LAB_8f60e218;
}
}
else {
FUN_8f63cbb4(s_Failed_sending_App_command_8f664a44);
}
FUN_8f63cbb4(s_Failed_to_get_SSR_from_the_card_8f664d6c);
iVar3 = 1;
goto LAB_8f60ddd4;
}
}
else {
FUN_8f63cbb4(s_Failed_sending_App_command_8f664a44);
}
FUN_8f63cbb4(s_Failure_getting_card_s_SCR_regis_8f664d44);
iVar3 = 1;
goto LAB_8f60ddd4;
}
iVar3 = FUN_8f60d3ec(param_1,param_1 + 0x58);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failure_getting_card_s_ExtCSD_in_8f664b20);
goto LAB_8f60ddd4;
}
LAB_8f60e218:
uVar8 = *(uint *)(param_1 + 0x68);
local_f8 = uVar8 >> 0x1e;
if (*(uint *)(param_1 + 0x50) < 2) {
if (local_f8 == 1) {
local_d4 = ((uVar8 << 0x10) >> 0x18) * 100;
local_d8 = (uint)*(ushort *)(param_1 + 0x62) | (*(uint *)(param_1 + 100) & 0x3f) << 0x10;
local_d0 = (uint)(*(int *)(&DAT_8f6644f8 + ((uVar8 << 9) >> 0x1c) * 4) *
*(int *)(&DAT_8f664538 + ((uVar8 << 0xd) >> 0x1d) * 4)) / 10;
local_bc = (byte)(((uint)(*(int *)(param_1 + 0x5c) << 0x12) >> 0x1f) << 1) | 8 |
(byte)(((uint)(*(int *)(param_1 + 0x5c) << 0x13) >> 0x1f) << 2);
local_cc = (uint)(*(int *)(&DAT_8f664558 + (uVar8 & 7) * 4) *
*(int *)(&DAT_8f66458c + ((uVar8 << 0x19) >> 0x1c) * 4)) / 10;
local_f0 = *(uint *)(param_1 + 100) >> 0x14;
*(uint *)(param_1 + 0x4c) = local_d8 + 1 >> 0xd;
*(uint *)(param_1 + 0x48) = (local_d8 + 1) * 0x80000;
local_ec = 0x200;
local_e8 = 0x200;
local_e4 = 2;
local_dc = 0;
local_c0 = 0;
}
else {
iVar3 = *(int *)(param_1 + 0x5c);
uVar17 = *(uint *)(param_1 + 100);
uVar6 = (uint)(iVar3 << 6) >> 0x1c;
local_f0 = uVar17 >> 0x14;
if (uVar6 - 9 < 3) {
local_ec = 1 << uVar6;
}
else {
local_ec = 0x200;
}
local_100 = (uVar17 << 0xc) >> 0x1c;
if (local_100 - 9 < 3) {
local_100 = 1 << local_100;
local_fc = (int)local_100 >> 0x1f;
}
else {
local_100 = 0x200;
local_fc = 0;
}
local_c0 = *(uint *)(param_1 + 0x60);
iVar4 = *(int *)(&DAT_8f664538 + ((uVar8 << 0xd) >> 0x1d) * 4);
iVar14 = *(int *)(&DAT_8f6644f8 + ((uVar8 << 9) >> 0x1c) * 4);
local_d8 = (uVar17 & 0x3ff) << 2 | local_c0 >> 0x1e;
iVar13 = *(int *)(&DAT_8f66458c + ((uVar8 << 0x19) >> 0x1c) * 4);
iVar15 = *(int *)(&DAT_8f664558 + (uVar8 & 7) * 4);
local_dc = (local_c0 << 0xe) >> 0x1d;
uVar6 = local_d8 + 1 << local_dc + 2;
lVar2 = (ulonglong)uVar6 * (ulonglong)local_100;
local_d4 = ((uVar8 << 0x10) >> 0x18) * 100;
*(int *)(param_1 + 0x48) = (int)lVar2;
*(uint *)(param_1 + 0x4c) = uVar6 * local_fc + (int)((ulonglong)lVar2 >> 0x20);
local_e4 = (uint)(iVar3 << 3) >> 0x1d;
local_bc = (byte)(((local_c0 << 0x11) >> 0x1f) << 3) |
(byte)(((uVar17 << 0x12) >> 0x1f) << 4) |
(byte)(((uVar17 << 0x11) >> 0x1f) << 5) |
(byte)(((uVar17 << 0x10) >> 0x1f) << 6) |
(byte)(((uint)(iVar3 << 10) >> 0x1f) << 7) | (byte)((uint)iVar3 >> 0x1f) |
(byte)(((uint)(iVar3 << 0x12) >> 0x1f) << 1) |
(byte)(((uint)(iVar3 << 0x13) >> 0x1f) << 2);
local_d0 = (uint)(iVar14 * iVar4) / 10;
local_e0 = ((local_c0 << 0x12) >> 0x19) + 1;
local_c0 = local_c0 & 0x7f;
local_cc = (uint)(iVar15 * iVar13) / 10;
local_e8 = local_100;
}
}
else {
uVar6 = *(uint *)(param_1 + 100);
local_f4 = (uVar8 << 2) >> 0x1c;
iVar3 = *(int *)(param_1 + 0x5c);
local_c0 = *(uint *)(param_1 + 0x60);
local_d4 = ((uVar8 << 0x10) >> 0x18) * 100;
local_d8 = (uVar6 & 0x3ff) << 2 | local_c0 >> 0x1e;
local_bc = local_bc & 8 | (byte)(((uVar6 << 0x12) >> 0x1f) << 4) |
(byte)(((uVar6 << 0x11) >> 0x1f) << 5) | (byte)(((uVar6 << 0x10) >> 0x1f) << 6) |
(byte)(((uint)(iVar3 << 10) >> 0x1f) << 7) | (byte)((uint)iVar3 >> 0x1f) |
(byte)(((uint)(iVar3 << 0x12) >> 0x1f) << 1) |
(byte)(((uint)(iVar3 << 0x13) >> 0x1f) << 2);
local_e4 = (uint)(iVar3 << 3) >> 0x1d;
local_ec = 1 << ((uint)(iVar3 << 6) >> 0x1c);
local_f0 = uVar6 >> 0x14;
local_d0 = (uint)(*(int *)(&DAT_8f6644f8 + ((uVar8 << 9) >> 0x1c) * 4) *
*(int *)(&DAT_8f664538 + ((uVar8 << 0xd) >> 0x1d) * 4)) / 10;
local_e8 = 1 << ((uVar6 << 0xc) >> 0x1c);
local_c8 = (local_c0 << 0x11) >> 0x1b;
local_dc = (local_c0 << 0xe) >> 0x1d;
local_c4 = (local_c0 << 0x16) >> 0x1b;
local_c0 = local_c0 & 0x1f;
local_cc = 0;
if (local_d8 == 0xfff) {
iVar3 = *(int *)(param_1 + 0x58);
uVar6 = (uint)*(byte *)(iVar3 + 0xd6) << 0x10 | (uint)*(byte *)(iVar3 + 0xd7) << 0x18;
uVar8 = uVar6 | *(byte *)(iVar3 + 0xd4) | (uint)*(byte *)(iVar3 + 0xd5) << 8;
*(uint *)(param_1 + 0x48) = uVar8 << 9;
*(uint *)(param_1 + 0x4c) = ((int)uVar8 >> 0x1f) << 9 | uVar6 >> 0x17;
}
else {
uVar8 = local_d8 + 1 << local_dc + 2;
lVar2 = (ulonglong)local_e8 * (ulonglong)uVar8;
*(int *)(param_1 + 0x48) = (int)lVar2;
*(uint *)(param_1 + 0x4c) =
uVar8 * ((int)local_e8 >> 0x1f) + (int)((ulonglong)lVar2 >> 0x20);
}
}
FUN_8f63e304(param_1 + 0x9c,&local_f8,0x40);
if (*(int *)(param_1 + 0x50) - 3U < 2) {
iVar3 = *(int *)(param_1 + 0x58);
if (*(char *)(iVar3 + 0xaf) == '\0') {
iVar4 = *(int *)(param_1 + 0xd4) + 1;
iVar4 = *(int *)(param_1 + 0xcc) * iVar4 + iVar4;
iVar4 = *(int *)(param_1 + 0xd0) * iVar4 + iVar4;
}
else {
iVar4 = (uint)*(byte *)(iVar3 + 0xe0) << 10;
}
sVar11 = *(short *)(param_1 + 0x108);
*(int *)(param_1 + 0x44) = iVar4;
*(uint *)(param_1 + 0x74) = (uint)*(byte *)(iVar3 + 0xa8) * 0x3ef00;
*(uint *)(param_1 + 0x78) = (uint)*(byte *)(iVar3 + 0xde);
if (sVar11 == 2) {
if (*(char *)(param_1 + 0x24) == '\0') goto LAB_8f60e538;
}
else if (sVar11 != 1) {
LAB_8f60e538:
sVar11 = 0;
}
iVar3 = FUN_8f60b48c(param_1);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failed_to_set_bus_width_for_host_8f664b4c);
iVar3 = 1;
goto LAB_8f60ddd4;
}
if ((*(char *)(param_1 + 0x2c) == '\0') ||
((*(byte *)(*(int *)(param_1 + 0x58) + 0xc4) & 0xc0) == 0)) {
if ((*(char *)(param_1 + 0x2a) == '\0') ||
((*(byte *)(*(int *)(param_1 + 0x58) + 0xc4) & 0x30) == 0)) {
if ((*(char *)(param_1 + 0x28) == '\0') ||
((*(byte *)(*(int *)(param_1 + 0x58) + 0xc4) & 0xc) == 0)) {
iVar3 = FUN_8f60d4c8(param_1,iVar10);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failure_to_enalbe_HS_mode_for_Ca_8f664bd4,
*(undefined4 *)(param_1 + 0x38));
goto LAB_8f60ddd4;
}
iVar3 = FUN_8f60d0e8(param_1,iVar10,sVar11);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failure_to_set_wide_bus_for_Card_8f664890,
*(undefined4 *)(param_1 + 0x38));
goto LAB_8f60ddd4;
}
}
else {
iVar3 = FUN_8f60d544(param_1,iVar10);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failure_to_set_DDR_mode_for_Card_8f664864,
*(undefined4 *)(param_1 + 0x38));
goto LAB_8f60ddd4;
}
}
}
else {
iVar3 = FUN_8f60d5bc(param_1,iVar10,sVar11);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failure_to_set_HS200_mode_for_Ca_8f664ba8,
*(undefined4 *)(param_1 + 0x38));
goto LAB_8f60ddd4;
}
}
}
else {
iVar3 = FUN_8f60d80c(param_1,iVar10,sVar11);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failure_to_set_HS400_mode_for_Ca_8f664b7c,*(undefined4 *)(param_1 + 0x38)
);
goto LAB_8f60ddd4;
}
}
}
else {
iVar3 = *(int *)(param_1 + 0xd4) + 1;
iVar3 = *(int *)(param_1 + 0xcc) * iVar3 + iVar3;
uVar8 = (uint)(*(int *)(param_1 + 0xdc) << 0x1d) >> 0x1f;
*(int *)(param_1 + 0x44) = *(int *)(param_1 + 0xd0) * iVar3 + iVar3;
iVar3 = FUN_8f60db54(param_1,iVar10,uVar8);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failed_to_set_bus_width_for_the_c_8f664c00);
goto LAB_8f60ddd4;
}
iVar3 = FUN_8f60b48c(param_1,uVar8);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failed_to_set_bus_width_for_host_8f664b4c);
goto LAB_8f60ddd4;
}
}
*(undefined4 *)(param_1 + 0x40) = 0x200;
if ((*(int *)(param_1 + 0x50) - 3U < 2) &&
(*(char *)(*(int *)(param_1 + 0x58) + 0xa2) == '\0')) {
iVar3 = FUN_8f60cfd0(param_1,iVar10,1,0xa2,1);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failed_to_enable_RST_n_FUNCTION_8f664c28);
}
}
else {
iVar3 = 0;
}
goto LAB_8f60ddd4;
}
}
FUN_8f63cbb4(s_Failure_getting_card_s_RCA__8f664ccc);
LAB_8f60ddd4:
if (local_2c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar3);
}
void FUN_8f60ea5c(int param_1)
{
int iVar1;
char cVar2;
int iVar3;
int iVar4;
iVar1 = DAT_8f731d80;
iVar3 = FUN_8f63e114(0x118);
if (iVar3 == 0) {
FUN_8f63cbb4(s_Error_allocating_mmc_device_8f664dc4);
}
else {
if (param_1 == 0) {
FUN_8f63cce8();
}
FUN_8f63e304(iVar3 + 0xf8,param_1,0x1c);
FUN_8f63e410(iVar3 + 0x38,0,0xc0);
iVar4 = FUN_8f60ce20(iVar3);
if (iVar4 == 0) {
cVar2 = FUN_8f60dcb0(iVar3);
if (cVar2 != '\0') {
FUN_8f63cbb4(s_Failed_detecting_MMC_SDC___slot__8f664e08,*(undefined *)(iVar3 + 0xf8));
iVar3 = iVar4;
}
}
else {
FUN_8f63cbb4(s_Error_Initializing_MMC_host____u_8f664de4,iVar4);
iVar3 = 0;
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar3);
}
void FUN_8f60eb64(int param_1)
{
int iVar1;
uint uVar2;
iVar1 = DAT_8f731d80;
FUN_8f60cdb4();
uVar2 = FUN_8f60ce20(param_1);
if (uVar2 == 0) {
uVar2 = FUN_8f60dcb0(param_1);
uVar2 = uVar2 & 0xff;
if (uVar2 != 0) {
FUN_8f63cbb4(s_Failed_detecting_MMC_SDC___slot__8f664e08,*(undefined *)(param_1 + 0xf8));
}
}
else {
FUN_8f63cbb4(s_Error_re_initializing_MMC_host___8f664e2c,uVar2);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f60ebf8(int param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5)
{
int iVar1;
undefined2 local_68 [2];
int local_64;
undefined local_60;
undefined local_5f;
undefined2 local_5e;
undefined4 local_5c;
undefined4 local_4c;
undefined4 local_44;
undefined4 local_34;
int local_2c;
int local_1c;
local_1c = DAT_8f731d80;
FUN_8f63e410(local_68,0,0x48);
if (param_5 == 1) {
local_68[0] = 0x11;
}
else {
local_68[0] = 0x12;
}
if (*(uint *)(param_1 + 0x50) == 4) {
local_64 = param_3 * *(int *)(param_1 + 0x40);
}
else {
local_64 = param_3;
if (*(uint *)(param_1 + 0x50) < 2) {
local_44 = *(undefined4 *)(param_1 + 0xe8);
goto LAB_8f60ec78;
}
}
local_44 = 1;
LAB_8f60ec78:
local_4c = 1;
local_5e = 1;
local_5f = 0;
local_60 = 1;
local_2c = param_5;
local_34 = param_2;
iVar1 = FUN_8f60b514(param_1,local_68);
if ((iVar1 == 0 || param_5 != 0) && (iVar1 != 0 && param_5 != 1)) {
FUN_8f60d350(param_1);
}
else {
FUN_8f60d254(local_5c);
}
if (local_1c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f60ecfc(int param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5)
{
int iVar1;
undefined2 local_68 [2];
int local_64;
undefined local_60;
undefined local_5f;
undefined2 local_5e;
undefined4 local_5c;
undefined4 local_4c;
undefined4 local_44;
undefined4 local_34;
int local_2c;
int local_1c;
local_1c = DAT_8f731d80;
FUN_8f63e410(local_68,0,0x48);
if (param_5 == 1) {
local_68[0] = 0x18;
}
else {
local_68[0] = 0x19;
}
if (*(uint *)(param_1 + 0x50) == 4) {
local_64 = param_3 * *(int *)(param_1 + 0x40);
}
else {
local_64 = param_3;
if (*(uint *)(param_1 + 0x50) < 2) {
local_44 = *(undefined4 *)(param_1 + 0xe8);
goto LAB_8f60ed78;
}
}
local_44 = 1;
LAB_8f60ed78:
local_4c = 0;
local_5e = 1;
local_5f = 0;
local_2c = param_5;
local_60 = 1;
local_34 = param_2;
iVar1 = FUN_8f60b514(param_1,local_68);
if ((iVar1 == 0 || param_5 != 0) && (iVar1 != 0 && param_5 != 1)) {
FUN_8f60d350(param_1);
}
else {
FUN_8f60d254(local_5c);
}
if (local_1c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f60ee00(int param_1,uint param_2,uint param_3,uint param_4)
{
uint uVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
uint uVar5;
uint uVar6;
uint uVar7;
uint local_7c;
undefined2 local_78 [2];
uint local_74;
undefined local_6f;
undefined2 local_6e;
int local_6c;
longlong local_50;
int local_2c;
local_2c = DAT_8f731d80;
if (*(int *)(param_1 + 0x50) - 3U < 2) {
if (*(char *)(*(int *)(param_1 + 0x58) + 0xaf) == '\0') {
iVar2 = *(int *)(param_1 + 0xcc) + 1;
uVar7 = *(int *)(param_1 + 0xd0) * iVar2 + iVar2;
}
else {
uVar7 = (uint)*(byte *)(*(int *)(param_1 + 0x58) + 0xe0) << 10;
}
}
else {
uVar7 = *(int *)(param_1 + 0xec) * *(int *)(param_1 + 0xf0);
}
uVar5 = param_3 >> 9 | param_4 << 0x17;
if (param_4 >> 9 == 0 && uVar5 < uVar7) {
FUN_8f63cbb4(s_Requested_length_is_less_than_mi_8f664e54);
uVar4 = 1;
}
else {
uVar1 = FUN_8f660e18(uVar5,param_4 >> 9,uVar7,0);
uVar6 = uVar7 * (uVar1 - 1) + param_2;
if (param_2 + uVar5 < uVar6) {
FUN_8f63cbb4(s_The_erase_group_overlaps_the_max_8f664e88);
uVar6 = uVar6 - uVar7;
}
FUN_8f63e410(local_78,0,0x48);
local_74 = param_2;
if (*(int *)(param_1 + 0x50) - 3U < 2) {
local_78[0] = 0x23;
if (*(int *)(param_1 + 0x50) == 4) {
local_74 = *(int *)(param_1 + 0x40) * param_2;
}
}
else {
local_78[0] = 0x20;
}
local_6f = 0;
local_6e = 1;
iVar2 = FUN_8f60b514(param_1,local_78);
if (iVar2 == 0) {
if (-1 < local_6c) {
FUN_8f63e410(local_78,0,0x48);
local_74 = uVar6;
if (*(int *)(param_1 + 0x50) - 3U < 2) {
local_78[0] = 0x24;
if (*(int *)(param_1 + 0x50) == 4) {
local_74 = *(int *)(param_1 + 0x40) * uVar6;
}
}
else {
local_78[0] = 0x21;
}
local_6f = 0;
local_6e = 1;
iVar2 = FUN_8f60b514(param_1,local_78);
if (iVar2 == 0) {
if (-1 < local_6c) {
if (*(int *)(param_1 + 0x50) - 3U < 2) {
local_50 = (ulonglong)uVar1 *
(ulonglong)*(byte *)(*(int *)(param_1 + 0x58) + 0xdf) * 300000;
}
else {
local_50 = (ulonglong)uVar1 * 300000;
}
FUN_8f63e410(local_78,0,0x48);
local_78[0] = 0x26;
local_74 = 0;
local_6f = 0;
local_6e = 2;
iVar2 = FUN_8f60b514(param_1,local_78);
if (iVar2 == 0) {
iVar2 = 10000;
do {
iVar3 = FUN_8f60cf38(param_1,param_1 + 0x38,&local_7c);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failed_to_get_card_status_after_e_8f664f08);
goto LAB_8f60f050;
}
if ((local_7c & 0x8000) != 0) {
FUN_8f63cbb4(s_Write_Protect_set_for_the_region_8f664f30);
}
FUN_8f613d18(1000);
iVar2 = iVar2 + -1;
if (iVar2 == 0) {
FUN_8f63cbb4(s_Card_status_check_timed_out_afte_8f664f74);
goto LAB_8f60f050;
}
} while (((local_7c & 0x100) == 0) || ((local_7c << 0x13) >> 0x1c == 7));
uVar4 = 0;
}
else {
LAB_8f60f050:
FUN_8f63cbb4(s_Failed_to_erase_the_specified_pa_8f665000);
uVar4 = 1;
}
goto LAB_8f60f01c;
}
FUN_8f63cbb4(s_Address_for_CMD36_is_out_of_rang_8f664ee4);
}
FUN_8f63cbb4(s_Failed_to_send_erase_grp_end_add_8f664fd8);
uVar4 = 1;
goto LAB_8f60f01c;
}
FUN_8f63cbb4(s_Address_for_CMD35_is_out_of_rang_8f664ec0);
}
FUN_8f63cbb4(s_Failed_to_send_erase_grp_start_a_8f664fb0);
uVar4 = 1;
}
LAB_8f60f01c:
if (local_2c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar4);
}
return;
}
void FUN_8f60f148(int param_1)
{
int iVar1;
undefined2 local_60 [2];
uint local_5c;
undefined local_57;
undefined2 local_56;
int local_14;
local_14 = DAT_8f731d80;
FUN_8f63e410(local_60,0,0x48);
local_60[0] = 7;
iVar1 = FUN_8f60b514(param_1,local_60);
if (iVar1 == 0) {
if (*(int *)(param_1 + 0x50) - 3U < 2) {
local_57 = 0;
local_60[0] = 5;
local_5c = *(int *)(param_1 + 0x38) << 0x10 | 0x8000;
local_56 = 2;
iVar1 = FUN_8f60b514(param_1,local_60);
if (iVar1 != 0) {
FUN_8f63cbb4(s_card_sleep_error___s_8f6651dc,s_mmc_put_card_to_sleep_8f665278);
}
}
}
else {
FUN_8f63cbb4(s_card_deselect_error___s_8f6651c0,s_mmc_put_card_to_sleep_8f665278);
}
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f60f224(int param_1,short *param_2)
{
int iVar1;
undefined4 uVar2;
int iVar3;
uint uVar4;
uint uVar5;
int local_84;
uint local_7c;
undefined2 local_78 [2];
uint local_74;
undefined2 local_6e;
int local_2c;
local_2c = DAT_8f731d80;
if (param_2 == (short *)0x0) {
FUN_8f63cce8();
}
iVar1 = FUN_8f60d144(param_1,3);
if (iVar1 == 0) {
iVar1 = 5;
local_84 = 3;
do {
if (*param_2 == 0) break;
uVar5 = *(uint *)(param_2 + 0x1e);
if (*(int *)(param_2 + 0x18) == 1) {
uVar4 = 0x80000000;
}
else {
uVar4 = 0;
}
FUN_8f63e410(local_78,0,0x48);
local_78[0] = 0x17;
local_6e = 1;
local_74 = uVar4 | uVar5 & 0xffff;
iVar3 = FUN_8f60b514(param_1,local_78);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Set_block_count_failed___s_8f6651f4,s_mmc_sdhci_set_blk_cnt_8f6644e0);
uVar2 = 1;
goto LAB_8f60f364;
}
iVar3 = FUN_8f60b514(param_1,param_2);
if (iVar3 != 0) {
uVar2 = 1;
goto LAB_8f60f364;
}
do {
iVar3 = FUN_8f60cf38(param_1,param_1 + 0x38,&local_7c);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Failed_to_get_card_status_after_r_8f665210);
uVar2 = 1;
goto LAB_8f60f364;
}
iVar1 = iVar1 + -1;
FUN_8f613d18(500);
if (iVar1 == 0) {
FUN_8f63cbb4(s_Card_status_check_timed_out_afte_8f665244);
uVar2 = 1;
goto LAB_8f60f364;
}
} while (((local_7c & 0x100) == 0) || ((local_7c << 0x13) >> 0x1c == 7));
param_2 = param_2 + 0x24;
local_84 = local_84 + -1;
} while (local_84 != 0);
uVar2 = 0;
LAB_8f60f364:
iVar1 = FUN_8f60d144(param_1,0);
if (iVar1 != 0) {
uVar2 = 1;
}
}
else {
uVar2 = 1;
}
if (local_2c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
// WARNING: Removing unreachable block (ram,0x8f60f428)
void FUN_8f60f3f4(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f60f460)
void FUN_8f60f42c(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f60f498)
void FUN_8f60f464(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f60f4d0)
void FUN_8f60f49c(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f60f50c)
void FUN_8f60f4d4(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f60f544)
void FUN_8f60f510(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f60f57c)
void FUN_8f60f548(void)
{
return;
}
void FUN_8f60f580(void)
{
int iVar1;
int iVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f625d48();
if (iVar2 != 0) {
iVar3 = FUN_8f600314();
if (*(int *)(iVar3 + 0x50) - 3U < 2) {
if (*(char *)(*(int *)(iVar3 + 0x58) + 0xaf) == '\0') {
iVar2 = *(int *)(iVar3 + 0xcc) + 1;
iVar2 = *(int *)(iVar3 + 0xd0) * iVar2 + iVar2;
}
else {
iVar2 = (uint)*(byte *)(*(int *)(iVar3 + 0x58) + 0xe0) << 10;
}
}
else {
iVar2 = *(int *)(iVar3 + 0xec) * *(int *)(iVar3 + 0xf0);
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f60f608(void)
{
int iVar1;
int iVar2;
undefined4 uVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f625d48();
if (iVar2 == 0) {
FUN_8f600314();
uVar3 = FUN_8f60f49c();
}
else {
iVar2 = FUN_8f600314();
uVar3 = *(undefined4 *)(iVar2 + 0x90);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
void FUN_8f60f65c(void)
{
int iVar1;
int iVar2;
undefined8 uVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f625d48();
if (iVar2 == 0) {
FUN_8f600314();
uVar3 = FUN_8f60f4d4();
}
else {
iVar2 = FUN_8f600314();
uVar3 = *(undefined8 *)(iVar2 + 0x48);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70((int)uVar3,(int)((ulonglong)uVar3 >> 0x20));
}
void FUN_8f60f6b0(void)
{
int iVar1;
int iVar2;
undefined4 uVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f625d48();
if (iVar2 == 0) {
FUN_8f600314();
uVar3 = FUN_8f60f464();
}
else {
iVar2 = FUN_8f600314();
uVar3 = *(undefined4 *)(iVar2 + 0x40);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
void FUN_8f60f704(uint param_1,int param_2,uint param_3,int param_4)
{
int iVar1;
undefined4 uVar2;
uint uVar3;
int iVar4;
undefined4 uVar5;
int extraout_r1;
uint uVar6;
uint uVar7;
undefined4 uVar8;
bool bVar9;
undefined8 uVar10;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f600314();
uVar3 = FUN_8f60f6b0();
uVar7 = 0;
uVar6 = uVar3;
FUN_8f660e18(param_1,param_2);
if ((uVar6 | uVar7) != 0) {
FUN_8f63cce8();
}
FUN_8f6602f4(param_3,uVar3);
if (extraout_r1 != 0) {
param_3 = -uVar3 & (param_3 - 1) + uVar3;
}
FUN_8f6254b4(param_4,param_3);
iVar4 = FUN_8f625d48();
if (iVar4 == 0) {
uVar10 = FUN_8f66024c(param_3,uVar3);
uVar10 = FUN_8f60f3f4(uVar2,(int)((ulonglong)uVar10 >> 0x20),param_1,param_2,param_4,(int)uVar10
);
if ((int)uVar10 != 0) {
FUN_8f63cbb4(s_Error__UFS_write_failed_writing_t_8f6652ec,(int)((ulonglong)uVar10 >> 0x20),
param_1,param_2);
iVar4 = 1;
goto LAB_8f60f844;
}
}
else {
if (0x1fffe00 < param_3) {
uVar5 = FUN_8f66024c(0x1fffe00,uVar3);
do {
uVar10 = FUN_8f660e18(param_1,param_2,uVar3,0);
uVar8 = (undefined4)uVar10;
iVar4 = FUN_8f60ecfc(uVar2,param_4,uVar8,(int)((ulonglong)uVar10 >> 0x20),uVar5);
if (iVar4 != 0) goto LAB_8f60f82c;
bVar9 = 0xfe0001ff < param_1;
param_1 = param_1 + 0x1fffe00;
param_3 = param_3 + 0xfe000200;
param_2 = param_2 + (uint)bVar9;
param_4 = param_4 + 0x1fffe00;
} while (0x1fffe00 < param_3);
}
if (param_3 != 0) {
uVar10 = FUN_8f660e18(param_1,param_2,uVar3,0);
uVar8 = (undefined4)uVar10;
uVar5 = FUN_8f66024c(param_3,uVar3);
iVar4 = FUN_8f60ecfc(uVar2,param_4,uVar8,(int)((ulonglong)uVar10 >> 0x20),uVar5);
if (iVar4 != 0) {
LAB_8f60f82c:
FUN_8f63cbb4(s_Failed_Writing_block____x_8f6652d0,uVar8);
}
goto LAB_8f60f844;
}
}
iVar4 = 0;
LAB_8f60f844:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar4);
}
void FUN_8f60f940(uint param_1,int param_2,int param_3,uint param_4)
{
int iVar1;
undefined4 uVar2;
uint uVar3;
int iVar4;
undefined4 uVar5;
uint uVar6;
int extraout_r1;
uint uVar7;
undefined4 uVar8;
bool bVar9;
undefined8 uVar10;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f600314();
uVar3 = FUN_8f60f6b0();
uVar7 = 0;
uVar6 = uVar3;
FUN_8f660e18(param_1,param_2);
if ((uVar6 | uVar7) != 0) {
FUN_8f63cce8();
}
FUN_8f6602f4(param_4,uVar3);
if (extraout_r1 != 0) {
FUN_8f63cce8();
}
FUN_8f6254b4(param_3,param_4);
iVar4 = FUN_8f625d48();
if (iVar4 == 0) {
iVar4 = param_3;
uVar10 = FUN_8f66024c(param_4,uVar3);
uVar10 = FUN_8f60f42c(uVar2,(int)((ulonglong)uVar10 >> 0x20),param_1,param_2,iVar4,(int)uVar10);
if ((uint)uVar10 != 0) {
FUN_8f63cbb4(s_Error__UFS_read_failed_writing_t_8f665354,(int)((ulonglong)uVar10 >> 0x20),
param_1,param_2);
}
FUN_8f6254dc(param_3,param_4);
uVar6 = (uint)uVar10;
}
else {
if (0x1fffe00 < param_4) {
uVar5 = FUN_8f66024c(0x1fffe00,uVar3);
do {
uVar10 = FUN_8f660e18(param_1,param_2,uVar3,0);
uVar8 = (undefined4)uVar10;
uVar6 = FUN_8f60ebf8(uVar2,param_3,uVar8,(int)((ulonglong)uVar10 >> 0x20),uVar5);
if (uVar6 != 0) goto LAB_8f60fa5c;
bVar9 = 0xfe0001ff < param_1;
param_1 = param_1 + 0x1fffe00;
param_4 = param_4 + 0xfe000200;
param_2 = param_2 + (uint)bVar9;
param_3 = param_3 + 0x1fffe00;
} while (0x1fffe00 < param_4);
}
uVar6 = param_4;
if (param_4 != 0) {
uVar10 = FUN_8f660e18(param_1,param_2,uVar3,0);
uVar8 = (undefined4)uVar10;
uVar5 = FUN_8f66024c(param_4,uVar3);
uVar6 = FUN_8f60ebf8(uVar2,param_3,uVar8,(int)((ulonglong)uVar10 >> 0x20),uVar5);
if (uVar6 != 0) {
LAB_8f60fa5c:
FUN_8f63cbb4(s_Failed_Reading_block____x_8f665338,uVar8);
}
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar6);
}
void FUN_8f60fbac(undefined4 param_1,undefined4 param_2,int param_3)
{
int iVar1;
int iVar2;
uint uVar3;
undefined4 uVar4;
uint uVar5;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f60f6b0();
uVar5 = param_3 * iVar2;
uVar3 = FUN_8f60158c();
if (uVar5 < uVar3 || uVar5 - uVar3 == 0) {
uVar4 = FUN_8f601550();
FUN_8f63e410(uVar4,0,uVar5);
FUN_8f6254b4(uVar4,uVar5);
iVar2 = FUN_8f60ecfc(param_1,uVar4,param_2,0,param_3);
if (iVar2 != 0) {
FUN_8f63cbb4(s_failed_to_erase_the_partition____8f6653c0,param_2);
iVar2 = 1;
}
}
else {
FUN_8f63cbb4(s_Erase_Fail__Erase_size___u_is_bi_8f665384,uVar3);
iVar2 = 1;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f60fc70(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
{
longlong lVar1;
int iVar2;
uint uVar3;
undefined4 uVar4;
int iVar5;
int iVar6;
int iVar7;
int iVar8;
uint uVar9;
int extraout_r1;
int extraout_r1_00;
uint uVar10;
undefined8 uVar11;
iVar2 = DAT_8f731d80;
uVar3 = FUN_8f60f6b0();
uVar4 = FUN_8f600314();
uVar10 = 0;
uVar9 = uVar3;
FUN_8f660e18(param_1,param_2);
if ((uVar9 | uVar10) != 0) {
FUN_8f63cce8();
}
uVar10 = 0;
uVar9 = uVar3;
FUN_8f660e18(param_3,param_4);
if ((uVar9 | uVar10) != 0) {
FUN_8f63cce8();
}
iVar5 = FUN_8f625d48();
if (iVar5 == 0) {
uVar11 = FUN_8f660e18(param_3,param_4,uVar3);
iVar5 = FUN_8f60f510(uVar4,(int)((ulonglong)uVar11 >> 0x20),param_1,param_2,(int)uVar11);
if (iVar5 == 0) {
LAB_8f60fe04:
uVar9 = 0;
}
else {
FUN_8f63cbb4(s_mmc_erase_card__UFS_erase_failed_8f665424);
uVar9 = 1;
}
}
else {
uVar10 = FUN_8f60f580();
iVar5 = FUN_8f660e18(param_1,param_2,uVar3,0);
iVar6 = FUN_8f660e18(param_3,param_4,uVar3,0);
iVar7 = FUN_8f66024c(iVar5 + iVar6 + -1,uVar10);
iVar8 = FUN_8f66024c(iVar5,uVar10);
uVar9 = iVar7 - iVar8;
if (uVar9 < 2) {
joined_r0x8f60fea4:
if (iVar2 == DAT_8f731d80) {
FUN_8f60fbac(uVar4,iVar5,iVar6);
return;
}
goto LAB_8f60fedc;
}
FUN_8f6602f4(iVar5,uVar10);
uVar9 = uVar10 - extraout_r1;
if (uVar9 < uVar10) {
iVar7 = FUN_8f60fbac(uVar4,iVar5,uVar9);
if (iVar7 != 0) {
uVar9 = 1;
goto LAB_8f60fe08;
}
iVar5 = iVar5 + uVar9;
iVar6 = iVar6 - uVar9;
iVar7 = FUN_8f66024c(iVar5 + iVar6 + -1,uVar10);
iVar8 = FUN_8f66024c(iVar5,uVar10);
uVar9 = iVar7 - iVar8;
if (uVar9 < 2) goto joined_r0x8f60fea4;
}
FUN_8f6602f4(iVar6,uVar10);
lVar1 = (ulonglong)uVar3 * (ulonglong)(uint)(iVar6 - extraout_r1_00);
iVar7 = FUN_8f60ee00(uVar4,iVar5,(int)lVar1,(int)((ulonglong)lVar1 >> 0x20));
if (iVar7 == 0) {
if (extraout_r1_00 == 0) goto LAB_8f60fe04;
uVar9 = FUN_8f60fbac(uVar4,(iVar6 - extraout_r1_00) + iVar5,extraout_r1_00);
if (uVar9 != 0) {
uVar9 = 1;
}
}
else {
FUN_8f63cbb4(s_MMC_erase_failed_8f665410);
uVar9 = 1;
}
}
LAB_8f60fe08:
if (iVar2 == DAT_8f731d80) {
return;
}
LAB_8f60fedc:
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar9);
}
void FUN_8f60ff38(void)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f625d48();
if (iVar2 == 0) {
FUN_8f600314(0);
FUN_8f60f464();
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f60ff88(undefined param_1)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
iVar1 = DAT_8f731d80;
iVar3 = FUN_8f600314();
iVar4 = FUN_8f625d48();
iVar2 = DAT_8f731d80;
if (iVar4 == 0) {
*(undefined *)(iVar3 + 9) = param_1;
}
if (iVar1 == iVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f60ffd4(void)
{
int iVar1;
undefined uVar2;
int iVar3;
int iVar4;
iVar1 = DAT_8f731d80;
iVar3 = FUN_8f600314();
iVar4 = FUN_8f625d48();
if (iVar4 == 0) {
uVar2 = *(undefined *)(iVar3 + 9);
}
else {
uVar2 = 0;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
void FUN_8f610020(uint param_1)
{
int iVar1;
undefined4 uVar2;
int iVar3;
uint uVar4;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f600314();
iVar3 = FUN_8f625d48();
if (iVar3 == 0) {
uVar4 = FUN_8f60f548(uVar2);
if (uVar4 == 0) {
FUN_8f63cce8();
}
else {
for (; param_1 < uVar4; param_1 = param_1 + 1 & 0xff) {
FUN_8f60ff88(param_1);
iVar3 = FUN_8f606a18();
if (iVar3 != 0) {
FUN_8f63cbb4(s_Error_reading_the_partition_tabl_8f665454,param_1);
}
}
}
if (iVar1 == DAT_8f731d80) {
FUN_8f60ff88(0);
return;
}
}
else {
iVar3 = FUN_8f606a18();
if (iVar3 == 0) {
if (iVar1 == DAT_8f731d80) {
return;
}
}
else if (iVar1 == DAT_8f731d80) {
FUN_8f63cbb4(s_Error_reading_the_partition_tabl_8f6619f4);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f61012c(int param_1)
{
byte bVar1;
int iVar2;
byte bVar3;
iVar2 = DAT_8f731d80;
if ((*(byte *)(*(int *)(param_1 + 0x20) + 0x1ed) & 1) == 0) {
FUN_8f63cbb4(s_ext_csd_MMC_FFU_SUPPORT_MODES____8f665488);
bVar3 = 1;
}
else {
bVar1 = *(byte *)(*(int *)(param_1 + 0x20) + 0xa9);
bVar3 = bVar1 & 1;
if ((bVar1 & 1) != 0) {
FUN_8f63cbb4(s_ext_csd_MMC_FFU_FW_CONFIG_____2x_8f6654b0);
bVar3 = 1;
}
}
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(bVar3);
}
void FUN_8f6101a4(int param_1,uint param_2)
{
byte bVar1;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
undefined4 uVar6;
int extraout_r1;
uint uVar7;
int iVar8;
undefined *puVar9;
bool bVar10;
iVar2 = DAT_8f731d80;
iVar3 = FUN_8f600314();
if (iVar3 == -0x38 || iVar3 == 0) {
iVar4 = -1;
}
else if ((*(uint *)(iVar3 + 0x50) < 2) || (iVar4 = FUN_8f61012c(iVar3 + 0x38), iVar4 != 0)) {
FUN_8f63cbb4(s_particle_doesn_t_support_FFU_8f6654e4);
iVar4 = -1;
}
else {
iVar4 = *(int *)(iVar3 + 0x58);
FUN_8f63cbb4(s_FFU_ARG___08x_8f665504,*(undefined4 *)(iVar4 + 0x1e7));
uVar7 = *(uint *)(iVar4 + 0x1e7);
FUN_8f63cbb4(s__________________FFU__START______8f665514);
FUN_8f63cbb4(s_FFU__manfid__x__prv__x__frimware_8f665544,*(undefined4 *)(iVar3 + 0x7c),
*(undefined4 *)(iVar3 + 0x8c),param_2,uVar7,param_2 >> 9);
iVar4 = FUN_8f60d74c(iVar3,3);
if (iVar4 == 0) {
iVar5 = FUN_8f60f6b0();
iVar8 = 0;
FUN_8f6602f4(param_2,iVar5);
if (extraout_r1 != 0) {
param_2 = -iVar5 & (param_2 - 1) + iVar5;
}
FUN_8f6254b4(param_1,param_2);
if (0x1fffe00 < param_2) {
uVar6 = FUN_8f66024c(0x1fffe00,iVar5);
do {
iVar4 = FUN_8f60ecfc(iVar3,param_1,uVar7,iVar8,uVar6);
if (iVar4 != 0) goto LAB_8f610338;
param_2 = param_2 + 0xfe000200;
bVar10 = 0xfe0001ff < uVar7;
uVar7 = uVar7 + 0x1fffe00;
iVar8 = iVar8 + (uint)bVar10;
param_1 = param_1 + 0x1fffe00;
} while (0x1fffe00 < param_2);
}
if (param_2 != 0) {
uVar6 = FUN_8f66024c(param_2,iVar5);
iVar4 = FUN_8f60ecfc(iVar3,param_1,uVar7,iVar8,uVar6);
if (iVar4 != 0) {
LAB_8f610338:
uVar6 = FUN_8f660e18(uVar7,iVar8,iVar5,0);
FUN_8f63cbb4(s_Failed_Writing_block____x_8f6652d0,uVar6);
FUN_8f63cbb4(s_Failed_to_write_primary_8f66570c);
goto LAB_8f6101e0;
}
}
bVar1 = *(byte *)(*(int *)(iVar3 + 0x58) + 0x1ec);
if ((bVar1 & 1) == 0) {
FUN_8f63cbb4(s_FFU__MODE_OPERATION_CODES_not_su_8f6655ac);
iVar4 = FUN_8f60d74c(iVar3,3,0x1e,bVar1 & 1);
if (iVar4 != 0) {
FUN_8f63cbb4(s_FFU__error__d_leave_update_mode_f_8f6655d8,iVar4);
goto LAB_8f6101e0;
}
}
else {
FUN_8f63cbb4(s_FFU__MODE_OPERATION_CODES_suppor_8f665604);
if ((*(int *)(iVar3 + 0x7c) != 0x15) && (iVar4 = FUN_8f60d74c(iVar3,3,0x1d,1), iVar4 != 0))
{
FUN_8f63cbb4(s_FFU__error__d_in_setting_FFU_INS_8f66562c,iVar4);
goto LAB_8f6101e0;
}
iVar5 = 100;
do {
FUN_8f613cc4(0x32);
iVar4 = FUN_8f60d710(iVar3);
if (iVar4 != 0) {
FUN_8f63cbb4(s_FFU__error__d_in_update_ext_csd_8f665654,iVar4);
goto LAB_8f6101e0;
}
if (*(byte *)(*(int *)(iVar3 + 0x58) + 0x1a) - 0x10 < 3) {
FUN_8f63cbb4(s_FFU__error__2x_in_FFU_install_8f665678);
iVar4 = 1;
goto LAB_8f6101e0;
}
iVar5 = iVar5 + -1;
} while (iVar5 != 0);
}
iVar4 = FUN_8f60eb64(iVar3);
if (iVar4 == 0) {
puVar9 = (undefined *)0x8f6654dc;
if (*(char *)(*(int *)(iVar3 + 0x58) + 0x1a) != '\0') {
puVar9 = &DAT_8f6654d4;
}
FUN_8f63cbb4(s_FFU__result___s__prv_0x_x_8f6656c0,puVar9,*(undefined4 *)(iVar3 + 0x8c));
FUN_8f63cbb4(s__________________FFU__END________8f6656dc);
}
else {
FUN_8f63cbb4(s_FFU__error__d_reinit_mmc_card_fa_8f665698,iVar4);
}
}
else {
FUN_8f63cbb4(s_FFU__error__d_in_switching_FFU_M_8f665584,iVar4);
}
}
LAB_8f6101e0:
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar4);
}
void FUN_8f61054c(undefined param_1)
{
int iVar1;
int iVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar3 = FUN_8f600314();
iVar2 = DAT_8f731d80;
if (iVar3 != 0) {
*(undefined *)(iVar3 + 0x114) = param_1;
}
if (iVar1 == iVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f610594(void)
{
int iVar1;
int iVar2;
uint uVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f600314();
uVar3 = (uint)*(byte *)(iVar2 + 0x114);
if ((iVar2 == 0) || (uVar3 != 0)) {
uVar3 = (uint)(uVar3 == *(uint *)(iVar2 + 0x7c));
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
void FUN_8f6105f4(void)
{
int iVar1;
int iVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f600314();
iVar3 = iVar2 + 0x38;
if (iVar3 != 0) {
iVar3 = *(int *)(iVar2 + 0x7c);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar3);
}
void FUN_8f610638(void)
{
int iVar1;
int iVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f600314();
iVar3 = iVar2 + 0x38;
if (iVar3 != 0) {
iVar3 = *(int *)(iVar2 + 0x8c);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar3);
}
void FUN_8f61067c(void)
{
int iVar1;
int iVar2;
uint uVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f600314();
uVar3 = iVar2 + 0x38;
if (uVar3 != 0) {
uVar3 = (uint)*(byte *)(*(int *)(iVar2 + 0x58) + 0xfe);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
void FUN_8f6106c4(void)
{
int iVar1;
undefined *local_18;
int local_14;
local_18 = &DAT_8f665814;
local_14 = DAT_8f731d80;
if ((DAT_8f724184 == 0) && (iVar1 = FUN_8f649094(0,&local_18,0x615), iVar1 != 0)) {
DAT_8f724184 = iVar1;
DAT_8f724188 = iVar1;
}
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f610744(int param_1,uint param_2)
{
byte *pbVar1;
byte bVar2;
int iVar3;
uint uVar4;
uint uVar5;
uint uVar6;
uint uVar7;
int iVar8;
iVar3 = DAT_8f731d80;
bVar2 = *(byte *)(param_1 + 1);
if ((bVar2 & 0x80) == 0) {
uVar6 = 1;
uVar7 = 1;
}
else {
uVar6 = bVar2 & 0x7f;
uVar7 = 2;
if ((bVar2 & 0x7f) == 0) {
LAB_8f6107f4:
iVar8 = uVar7 + uVar6;
goto LAB_8f6107d0;
}
}
uVar5 = uVar6 - 1;
iVar8 = uVar7 + 1;
uVar6 = 0;
do {
uVar4 = FUN_8f60ff38();
if ((uVar4 <= uVar7) || (param_2 <= uVar7)) {
FUN_8f63cbb4(s_Error__Pos_index_exceeding_the_i_8f665e98);
iVar8 = 0;
goto LAB_8f6107d0;
}
pbVar1 = (byte *)(param_1 + uVar7);
uVar7 = uVar7 + 1;
uVar6 = (uint)*pbVar1 | uVar6 << 8;
if (uVar7 == iVar8 + (uVar5 & 0xff)) {
if (uVar6 < ~uVar7) goto LAB_8f6107f4;
FUN_8f63cbb4(s_Error__Len_overflows_UINT_MAX_va_8f665ecc);
iVar8 = 0;
goto LAB_8f6107d0;
}
} while (uVar6 < 0x1000000);
FUN_8f63cbb4(s_Error__Length_exceeding_max_size_8f665e68);
iVar8 = 0;
LAB_8f6107d0:
if (iVar3 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar8);
}
// WARNING: Removing unreachable block (ram,0x8f61087c)
void FUN_8f610834(void)
{
if ((DAT_8f717950 & 0xfffffffd) == 0) {
DAT_8f717950 = 3;
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f6108e4)
void FUN_8f610880(char *param_1,uint param_2)
{
if ((2 < param_2) && (*param_1 == '0')) {
FUN_8f610744();
return;
}
return;
}
void FUN_8f6108e8(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
{
int iVar1;
int iVar2;
uint uVar3;
int iVar4;
undefined 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;
undefined4 local_50;
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;
iVar4 = 0;
local_57 = 1;
local_2c = DAT_8f731d80;
local_52 = 1;
local_60 = 0x30;
local_5e = 0x30;
local_5f = 0x31;
local_5d = 0xd;
local_5c = 6;
local_5b = 9;
local_5a = 0x60;
local_59 = 0x86;
local_56 = 0x65;
local_54 = 4;
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 = 0x200400;
iVar1 = FUN_8f63e1a4(1,0x100);
if (iVar1 == 0) {
FUN_8f63cbb4(s_boot_verifier__Calloc_failed_dur_8f665ef4);
}
else {
FUN_8f61dac8(param_1,param_2,2,(int)&local_50 + 3);
iVar2 = FUN_8f61da60(param_3,iVar1,param_4);
if (iVar2 == 0x33) {
uVar3 = FUN_8f63e524(iVar1,&local_60,0x33);
iVar4 = 1 - uVar3;
if (1 < uVar3) {
iVar4 = 0;
}
}
else {
FUN_8f63cbb4(s_boot_verifier__Signature_decrypt_8f665f28,iVar2);
}
FUN_8f63e200(iVar1);
iVar1 = iVar4;
}
FUN_8f655b74();
FUN_8f643ccc();
FUN_8f6552cc(0);
if (local_2c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
return;
}
void FUN_8f610a78(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f6106c4();
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(DAT_8f717950);
}
void FUN_8f610abc(undefined4 param_1)
{
uint uVar1;
undefined4 uVar2;
undefined *puVar3;
int iVar4;
undefined4 uVar5;
undefined *puVar6;
int iVar7;
undefined4 in_lr;
int local_90;
undefined4 local_8c;
int local_88;
int local_84;
uint 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;
undefined4 local_50;
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_40;
undefined4 local_3c;
undefined4 local_38;
undefined4 local_34;
undefined4 local_30;
int local_2c;
uVar5 = DAT_8f717950;
local_50 = 0;
local_2c = DAT_8f731d80;
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;
uVar2 = FUN_8f60a278();
switch(uVar5) {
case 0:
iVar7 = FUN_8f650a9c(*(undefined4 *)(*(int *)(**(int **)(DAT_8f724184 + 4) + 4) + 0x10));
iVar4 = iVar7 + 7;
if (iVar4 < 0) {
iVar4 = iVar7 + 0xe;
}
uVar1 = iVar4 >> 3;
iVar7 = FUN_8f650a9c(*(undefined4 *)(*(int *)(**(int **)(DAT_8f724184 + 4) + 4) + 0x14));
iVar4 = iVar7 + 7;
if (iVar4 < 0) {
iVar4 = iVar7 + 0xe;
}
if (0x400 < uVar1) {
FUN_8f63cbb4(s_Invalid_n_value_from_key_materia_8f665f6c);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_boot_verifie_8f665f90,0x1df,
s_card_size_sec___0_8f663308 + 0x10);
}
if (0x10 < (uint)(iVar4 >> 3)) {
FUN_8f63cbb4(s_Invalid_e_value_from_key_materia_8f665fb4);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_boot_verifie_8f665f90,0x1e5,
s_card_size_sec___0_8f663308 + 0x10);
}
iVar4 = uVar1 + (iVar4 >> 3);
iVar7 = FUN_8f63e114(iVar4);
if (iVar7 == 0) {
FUN_8f63cbb4(s_Failed_to_allocate_memory_for_RO_8f665fd8);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_boot_verifie_8f665f90,0x1eb,
s_card_size_sec___0_8f663308 + 0x10);
}
FUN_8f651118(*(undefined4 *)(*(int *)(**(int **)(DAT_8f724184 + 4) + 4) + 0x10),iVar7);
FUN_8f651118(*(undefined4 *)(*(int *)(**(int **)(DAT_8f724184 + 4) + 4) + 0x14),iVar7 + uVar1);
break;
case 1:
iVar7 = 0;
local_50 = param_1;
goto LAB_8f610bf8;
case 2:
case 3:
if (DAT_8f724180 == 0) {
FUN_8f63cbb4(s_RSA_is_null_from_the_embedded_ce_8f666008);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_boot_verifie_8f665f90,0x1f8,
s_card_size_sec___0_8f663308 + 0x10);
}
iVar7 = FUN_8f650a9c(*(undefined4 *)(DAT_8f724180 + 0x10));
iVar4 = iVar7 + 7;
if (iVar4 < 0) {
iVar4 = iVar7 + 0xe;
}
iVar7 = FUN_8f650a9c(*(undefined4 *)(DAT_8f724180 + 0x14));
uVar1 = iVar4 >> 3;
iVar4 = iVar7 + 7;
if (iVar4 < 0) {
iVar4 = iVar7 + 0xe;
}
if (0x400 < uVar1) {
FUN_8f63cbb4(s_Invalid_n_value_from_rsa_from_ce_8f666034);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_boot_verifie_8f665f90,0x201,
s_card_size_sec___0_8f663308 + 0x10);
}
if (0x10 < (uint)(iVar4 >> 3)) {
FUN_8f63cbb4(s_Invalid_e_value_from_rsa_from_ce_8f666058);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_boot_verifie_8f665f90,0x207,
s_card_size_sec___0_8f663308 + 0x10);
}
iVar4 = uVar1 + (iVar4 >> 3);
iVar7 = FUN_8f63e114(iVar4);
if (iVar7 == 0) {
FUN_8f63cbb4(s_Failed_to_allocate_memory_for_RO_8f665fd8);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_boot_verifie_8f665f90,0x20d,
s_card_size_sec___0_8f663308 + 0x10);
}
FUN_8f651118(*(undefined4 *)(DAT_8f724180 + 0x10),iVar7);
FUN_8f651118(*(undefined4 *)(DAT_8f724180 + 0x14),iVar7 + uVar1);
break;
default:
iVar7 = 0;
goto LAB_8f610bf8;
}
FUN_8f61dee8(iVar7,iVar4,&local_50,2);
local_30 = param_1;
LAB_8f610bf8:
FUN_8f61dee8(&local_50,0x24,&local_70,2);
puVar3 = (undefined *)FUN_8f63e114(0x2c);
if (puVar3 == (undefined *)0x0) {
FUN_8f63cbb4(s_Failed_to_allocate_memory_for_RO_8f665fd8);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_boot_verifie_8f665f90,0x224,
s_card_size_sec___0_8f663308 + 0x10);
}
puVar3[8] = 0x20;
puVar3[2] = 0;
puVar3[3] = 0;
puVar3[5] = 0;
puVar3[6] = 0;
puVar3[7] = 0;
puVar3[9] = 0;
puVar3[10] = 0;
puVar3[0xb] = 0;
*puVar3 = 1;
puVar3[1] = 2;
puVar3[4] = 0xc;
FUN_8f63e304(puVar3 + 0xc,&local_70,0x20);
iVar4 = FUN_8f61b1dc(uVar2,puVar3,0x2c,&local_90,4);
if ((iVar4 < 0) || (local_90 < 0)) {
FUN_8f63cbb4(s_QSEEcom_command_for_Sending_Root_8f66607c);
if (iVar7 != 0) {
FUN_8f63e200(iVar7);
}
FUN_8f63e200(puVar3);
FUN_8f63e200(0);
uVar5 = 0;
}
else {
DAT_8f731e6c = DAT_8f717950;
DAT_8f731e48 = param_1;
FUN_8f63e5b8(&DAT_8f731e4c,0x20,&local_50,0x20);
uVar5 = FUN_8f60a278();
local_8c = 0x200;
iVar4 = FUN_8f61b1dc(uVar5,&local_8c,4,&local_84,0x14);
if ((iVar4 < 0) || (local_84 < 0)) {
FUN_8f63cbb4(s_QSEEcom_command_for_getting_keym_8f6660bc);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_boot_verifie_8f665f90,0x1a7,
s_card_size_sec___0_8f663308 + 0x10);
}
if (1 < local_80) {
puVar6 = (undefined *)FUN_8f63e114(0x40);
if (puVar6 == (undefined *)0x0) {
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_boot_verifie_8f665f90,0x1ad,s_bs_req_8f666100);
}
FUN_8f63e5b8(puVar6 + 0x10,0x30,&DAT_8f731e48,0x30);
puVar6[2] = 0;
puVar6[3] = 0;
puVar6[4] = 0;
puVar6[5] = 0;
puVar6[6] = 0;
puVar6[7] = 0;
puVar6[9] = 0;
puVar6[10] = 0;
puVar6[0xb] = 0;
puVar6[0xd] = 0;
puVar6[0xe] = 0;
puVar6[0xf] = 0;
*puVar6 = 8;
puVar6[1] = 2;
puVar6[8] = 0x10;
puVar6[0xc] = 0x30;
iVar4 = FUN_8f61b1dc(uVar5,puVar6,0x40,&local_88,4);
if ((iVar4 < 0) || (local_88 < 0)) {
FUN_8f63cbb4(s_QSEEcom_command_for_Sending_boot_8f666108);
FUN_8f63e200(puVar6);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_boot_verifie_8f665f90,0x1bd,
s_card_size_sec___0_8f663308 + 0x10);
}
FUN_8f63e200(puVar6);
}
if (iVar7 != 0) {
FUN_8f63e200(iVar7);
}
FUN_8f63e200(puVar3);
FUN_8f63e200(0);
uVar5 = 1;
}
if (local_2c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar5);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f6111dc)
void FUN_8f611194(undefined4 *param_1)
{
*param_1 = DAT_8f731e44;
return;
}
// WARNING: Removing unreachable block (ram,0x8f6112b0)
void FUN_8f6111e0(undefined4 param_1)
{
switch(param_1) {
case 0:
case 3:
DAT_8f717950 = 0;
break;
case 1:
DAT_8f717950 = 1;
break;
case 2:
if (DAT_8f717950 == 0) {
DAT_8f717950 = 2;
}
break;
case 4:
FUN_8f610834();
return;
case 5:
if (DAT_8f717950 - 1U < 2) {
DAT_8f717950 = 3;
}
}
return;
}
void FUN_8f6112b4(int param_1,uint param_2,undefined4 param_3)
{
char *pcVar1;
undefined4 uVar2;
uint uVar3;
uint uVar4;
int iVar5;
int iVar6;
int iVar7;
int iVar8;
int iVar9;
int iVar10;
undefined4 uVar11;
int **ppiVar12;
undefined4 in_lr;
int local_34;
int local_30;
int local_2c;
iVar9 = param_1 + param_2;
local_2c = DAT_8f731d80;
local_34 = iVar9;
if (DAT_8f717950 == 1) {
iVar9 = 0;
goto LAB_8f61134c;
}
FUN_8f60ff38(DAT_8f731d80);
pcVar1 = (char *)FUN_8f63e114();
if (pcVar1 == (char *)0x0) {
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_boot_verifie_8f665f90,0x265,s_signature_8f666144);
}
iVar5 = local_34;
uVar2 = FUN_8f60ff38();
FUN_8f63e304(pcVar1,iVar5,uVar2);
uVar3 = FUN_8f60ff38();
if (((uVar3 < 3) || (*pcVar1 != '0')) || (uVar3 = FUN_8f610744(pcVar1,uVar3), uVar3 == 0)) {
FUN_8f63cbb4(s_boot_verifier__Error_while_readi_8f666150);
LAB_8f61133c:
FUN_8f63e200(pcVar1);
}
else {
uVar4 = FUN_8f60ff38();
if (uVar4 < uVar3) {
FUN_8f63cbb4(s_boot_verifier__Signature_length_e_8f666188);
goto LAB_8f61133c;
}
iVar5 = FUN_8f649094(0,&local_34,uVar3,&DAT_8f6657d0);
if (iVar5 == 0) {
FUN_8f63cbb4(s_boot_verifier__verification_fail_8f6661c8);
goto LAB_8f61133c;
}
uVar11 = *(undefined4 *)(iVar5 + 4);
uVar2 = FUN_8f655afc();
FUN_8f65bd9c(uVar11,uVar2,&DAT_8f731e78,&DAT_8f731e44);
iVar10 = DAT_8f724188;
iVar6 = FUN_8f63e6f4(param_3,s_keystore_8f66620c);
ppiVar12 = *(int ***)(iVar5 + 0xc);
iVar8 = **ppiVar12;
iVar7 = FUN_8f63ea58((*ppiVar12)[2],param_3,iVar8);
if ((iVar7 == 0) && (iVar7 = FUN_8f63e9a0(param_3), iVar8 == iVar7)) {
iVar7 = 4 - *ppiVar12[1];
uVar3 = *(uint *)ppiVar12[1][2];
if (0 < iVar7) {
uVar3 = uVar3 << (iVar7 * 8 & 0xffU);
}
uVar3 = uVar3 << 0x18 | (uVar3 >> 8 & 0xff) << 0x10 | (uVar3 >> 0x10 & 0xff) << 8 |
uVar3 >> 0x18;
if (param_2 == uVar3) {
if (iVar6 != 0) {
local_30 = iVar9;
uVar3 = FUN_8f647454(ppiVar12,&local_30,&DAT_8f665798);
if (~uVar3 < param_2) {
FUN_8f63cbb4(s_Interger_overflow_detected_8f666250);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_boot_verifie_8f665f90,0x11e,
s_card_size_sec___0_8f663308 + 0x10);
}
else {
param_2 = param_2 + uVar3;
}
}
if (iVar10 == 0) {
FUN_8f63cbb4(s__s__d__Keystore_is_null_8f66626c,s_verify_image_with_sig_8f665764,299);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_boot_verifie_8f665f90,300,
s_card_size_sec___0_8f663308 + 0x10);
}
else {
iVar10 = *(int *)(**(int **)(iVar10 + 4) + 4);
}
iVar9 = FUN_8f6108e8(param_1,param_2,*(undefined4 *)(*(int *)(iVar5 + 0x10) + 8));
if (iVar9 == 0) {
iVar9 = FUN_8f65b930(*(undefined4 *)(iVar5 + 4));
if (iVar9 == 0) {
FUN_8f63cbb4(s_Unable_to_extract_public_key_fro_8f666288);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_boot_verifie_8f665f90,0x146,
s_card_size_sec___0_8f663308 + 0x10);
}
else {
iVar10 = FUN_8f655e40();
DAT_8f724180 = iVar10;
}
iVar9 = FUN_8f6108e8(param_1,param_2,*(undefined4 *)(*(int *)(iVar5 + 0x10) + 8),iVar10);
if (iVar9 == 0) goto LAB_8f61145c;
FUN_8f6111e0(2);
}
else {
DAT_8f717950 = 0;
}
DAT_8f731e70 = (*(uint *)(param_1 + 0x2c) << 8) >> 0x13;
DAT_8f731e74 = *(uint *)(param_1 + 0x2c) & 0x7ff;
FUN_8f63e200(pcVar1);
FUN_8f649a7c(iVar5,&DAT_8f6657d0);
goto LAB_8f61134c;
}
FUN_8f63cbb4(s_boot_verifier__image_length_is_d_8f666218,uVar3,param_2);
}
else {
FUN_8f63cbb4(s_boot_verifier__verification_fail_8f6661c8);
}
LAB_8f61145c:
FUN_8f610834();
DAT_8f731e70 = (*(uint *)(param_1 + 0x2c) << 8) >> 0x13;
DAT_8f731e74 = *(uint *)(param_1 + 0x2c) & 0x7ff;
FUN_8f63e200(pcVar1);
FUN_8f649a7c(iVar5,&DAT_8f6657d0);
}
FUN_8f610834();
iVar9 = 0;
LAB_8f61134c:
if (local_2c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar9);
}
// WARNING: Removing unreachable block (ram,0x8f611714)
void FUN_8f6116d8(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f611778)
void FUN_8f611718(void)
{
if (DAT_8f717950 != 3) {
return;
}
FUN_8f604fd0(s_Security_Error__This_phone_has_b_8f6662b8);
return;
}
void FUN_8f61177c(char *param_1,uint param_2)
{
int iVar1;
char *local_10;
int local_c;
local_c = DAT_8f731d80;
local_10 = param_1;
if (((param_2 < 3) || (*param_1 != '0')) || (iVar1 = FUN_8f610744(), iVar1 == 0)) {
FUN_8f63cbb4(s_boot_verifier__keystore_length_i_8f66638c);
iVar1 = 0;
}
else {
iVar1 = FUN_8f649094(0,&local_10,iVar1,&DAT_8f666520);
if (iVar1 != 0) {
iVar1 = 1;
}
}
if (local_c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
return;
}
void FUN_8f611804(undefined4 param_1,int param_2,int param_3)
{
int iVar1;
uint uVar2;
undefined4 extraout_r1;
undefined4 uVar3;
undefined4 extraout_r1_00;
uint uVar4;
uint uVar5;
uint uVar6;
int iVar7;
uint uVar8;
bool bVar9;
undefined8 uVar10;
iVar1 = DAT_8f731d80;
uVar4 = *(uint *)(param_2 + 0x24);
uVar5 = uVar4 - 1;
uVar2 = uVar5 + *(int *)(param_2 + 0x10) & ~uVar5;
uVar8 = ~uVar5 & uVar5 + *(int *)(param_2 + 8);
uVar5 = uVar2 + uVar8;
uVar6 = uVar5 + uVar4;
bVar9 = (char)(CARRY4(uVar2,uVar8) + CARRY4(uVar5,uVar4)) != '\0';
if ((bVar9 || 0xfffffffe < uVar6) && (bVar9 || uVar6 != 0xffffffff)) {
FUN_8f63cbb4(s_Integer_overflow_detected_in_boo_8f6663b8,0x30b,
s_platform_msm_shared_boot_verifie_8f665f90);
iVar7 = -1;
uVar3 = extraout_r1_00;
}
else {
iVar7 = param_2 + param_3;
FUN_8f63e410(iVar7,0);
uVar3 = extraout_r1;
if (iVar7 != 0) {
FUN_8f63e304(iVar7,param_2,param_3);
uVar10 = FUN_8f63e6f4(param_1,s_fastboot_8f66c5d8 + 4);
if (iVar1 == DAT_8f731d80) {
FUN_8f6112b4();
return;
}
goto LAB_8f611900;
}
}
uVar10 = CONCAT44(uVar3,iVar7);
if (iVar1 == DAT_8f731d80) {
return;
}
LAB_8f611900:
// WARNING: Subroutine does not return
FUN_8f63cd70((int)uVar10,(int)((ulonglong)uVar10 >> 0x20),iVar1);
}
void FUN_8f611de4(int param_1)
{
int iVar1;
int iVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar2 = (*(code *)(&PTR_FUN_8f717958)[param_1 * 2])();
if (iVar2 != 0) {
iVar2 = 10;
do {
iVar3 = (*(code *)(&PTR_FUN_8f717958)[param_1 * 2])();
if (iVar3 == 0) break;
FUN_8f627600(100);
iVar2 = iVar2 + -1;
} while (iVar2 != 0);
iVar2 = 1;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
return;
}
void FUN_8f611e5c(void)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
while (((iVar2 = (*(code *)PTR_FUN_8f717958)(), iVar2 != 0 ||
(iVar2 = (*(code *)PTR_FUN_8f717960)(), iVar2 != 0)) ||
(iVar2 = (*(code *)PTR_FUN_8f717968)(), iVar2 != 0))) {
FUN_8f627600(0x32);
}
DAT_8f72418c = FUN_8f613c54();
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f611ee8(int param_1)
{
int iVar1;
int iVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar3 = param_1 + 0x7c;
FUN_8f612e88();
FUN_8f611e5c();
while( true ) {
while ((DAT_8f72d200 != 0 && (iVar2 = FUN_8f601408(), iVar2 != 0))) {
FUN_8f627600(1000);
}
iVar2 = FUN_8f611de4(0);
if (iVar2 == 0) {
iVar2 = FUN_8f611de4(1);
if (iVar2 == 0) {
iVar2 = FUN_8f611de4(2);
if (iVar2 != 0) {
FUN_8f626c38(iVar3);
(*(code *)(&PTR_LAB_8f666568)[*(int *)(param_1 + 0x68) * 3])(param_1);
FUN_8f626d1c(iVar3);
}
}
else {
FUN_8f626c38(iVar3);
(*(code *)(&PTR_LAB_8f666564)[*(int *)(param_1 + 0x68) * 3])(param_1);
FUN_8f626d1c(iVar3);
}
}
else {
FUN_8f626c38(iVar3);
(*(code *)(&PTR_LAB_8f666560)[*(int *)(param_1 + 0x68) * 3])(param_1);
FUN_8f626d1c(iVar3);
}
FUN_8f626c38(iVar3);
if ((*(int *)(param_1 + 0x6c) != 0) &&
(iVar2 = FUN_8f613c54(), *(uint *)(param_1 + 0x6c) < (uint)(iVar2 - DAT_8f72418c))) break;
if (*(int *)(param_1 + 0x70) != 0) goto LAB_8f612010;
FUN_8f626d1c(iVar3);
FUN_8f627600(0x32);
}
*(undefined4 *)(param_1 + 0x70) = 1;
LAB_8f612010:
*(undefined4 *)(param_1 + 0x74) = 1;
FUN_8f626d1c(iVar3);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f6122ec(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f626c38(&DAT_8f724214);
while (DAT_8f72420c == 0) {
FUN_8f626d1c(PTR_DAT_8f612380);
FUN_8f627600(10);
FUN_8f626c38(PTR_DAT_8f612380);
}
FUN_8f626d1c(PTR_DAT_8f612380);
DAT_8f724230 = 0;
FUN_8f6359f8();
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
FUN_8f63633c();
return;
}
void FUN_8f612384(void)
{
int iVar1;
uint uVar2;
iVar1 = DAT_8f731d80;
FUN_8f635e78();
uVar2 = FUN_8f635e78();
DAT_8f7179b8 = uVar2 / 0x28;
if (DAT_8f7179b8 < 2) {
DAT_8f71796c = 2;
DAT_8f7179b8 = 1;
}
else {
DAT_8f71796c = DAT_8f7179b8 << 1;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f612418(int param_1,int param_2)
{
int iVar1;
int iVar2;
int iVar3;
uint uVar4;
uint uVar5;
int iVar6;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f635e78();
if ((iVar2 != 0) && (iVar3 = FUN_8f63e114(), iVar3 != 0)) {
FUN_8f63e410(iVar3,0,iVar2);
uVar4 = FUN_8f66024c(iVar2,param_2);
uVar5 = FUN_8f63e9a0(param_1);
if (uVar5 < uVar4) {
if (param_2 == 1) {
iVar2 = (uVar4 - 1) - uVar5;
}
else {
iVar2 = uVar4 - uVar5;
}
if (0 < iVar2) {
iVar6 = 0;
do {
iVar6 = iVar6 + 1;
FUN_8f63e608(iVar3,s___sNumber_s__8f70e0a4 + 0xc);
} while (iVar6 != iVar2);
}
FUN_8f63e608(iVar3,param_1);
param_1 = iVar3;
}
else {
FUN_8f63e200(iVar3);
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(param_1);
}
void FUN_8f6124f4(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f626be8(PTR_DAT_8f612540);
DAT_8f724190 = 1;
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f612544(void)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f627048(s_selectkeydetect_8f666644,FUN_8f611ee8,&DAT_8f724198,0x10,0x2000);
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f63cbb4(s_ERROR__creat_device_status_detec_8f666654);
return;
}
}
else {
FUN_8f6272f8();
DAT_8f724230 = 1;
if (iVar1 == DAT_8f731d80) {
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f612614)
void FUN_8f6125e0(void)
{
FUN_8f6122ec();
return;
}
void FUN_8f612618(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
DAT_8f724208 = 1;
FUN_8f626d1c(&DAT_8f724214);
DAT_8f724230 = 0;
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f612674(int param_1,uint param_2)
{
undefined4 uVar1;
char cVar2;
char *pcVar3;
char *pcVar4;
int iVar5;
undefined4 uVar6;
uint uVar7;
uint local_110;
undefined auStack_10c [8];
undefined4 local_104;
undefined4 uStack_100;
undefined4 local_fc;
undefined4 uStack_f8;
undefined4 uStack_f4;
undefined2 local_f0;
undefined auStack_ec [64];
char local_ac;
char local_ab [127];
int local_2c;
local_2c = DAT_8f731d80;
FUN_8f63e410(auStack_ec,0,0x40);
FUN_8f63e410(&local_ac,0,0x80);
local_110 = 0;
local_104 = s_Start___8f666978._0_4_;
uStack_100 = s_Start___8f666978._4_4_;
local_fc = s_Continue_boot_8f666980._0_4_;
uStack_f8 = s_Continue_boot_8f666980._4_4_;
uStack_f4 = s_Continue_boot_8f666980._8_4_;
local_f0 = (undefined2)ram0x8f66698c;
FUN_8f6359f8();
FUN_8f63e410(param_1,0,0x78);
pcVar3 = (char *)FUN_8f612418(&local_104,DAT_8f71796c);
uVar1 = DAT_8f71796c;
cVar2 = *pcVar3;
while (cVar2 != '\0') {
FUN_8f635ad0(cVar2,2,uVar1);
pcVar3 = pcVar3 + 1;
cVar2 = *pcVar3;
}
pcVar4 = (char *)FUN_8f612418(&local_fc,DAT_8f7179b8);
uVar6 = DAT_8f7179b8;
cVar2 = *pcVar4;
pcVar3 = pcVar4;
uVar1 = DAT_8f7179b8;
while (DAT_8f7179b8 = uVar1, cVar2 != '\0') {
FUN_8f635ad0(cVar2,2,uVar6);
pcVar3 = pcVar3 + 1;
uVar1 = DAT_8f7179b8;
cVar2 = *pcVar3;
}
pcVar3 = s____More_options_8f6668fc;
cVar2 = '\n';
do {
FUN_8f635ad0(cVar2,0,uVar1);
uVar6 = DAT_8f7179b8;
pcVar3 = pcVar3 + 1;
cVar2 = *pcVar3;
} while (cVar2 != '\0');
pcVar3 = s_press_VOLUME_keys_8f666910;
cVar2 = 'p';
do {
FUN_8f635ad0(cVar2,3,uVar6);
uVar1 = DAT_8f7179b8;
pcVar3 = pcVar3 + 1;
cVar2 = *pcVar3;
} while (cVar2 != '\0');
pcVar3 = (&PTR_s_Your_device_has_loaded_a_differe_8f717974)[param_2 * 2];
if (pcVar3 != (char *)0x0) {
cVar2 = *pcVar3;
while (cVar2 != '\0') {
FUN_8f635ad0(cVar2,0,uVar1);
pcVar3 = pcVar3 + 1;
cVar2 = *pcVar3;
}
}
uVar1 = DAT_8f7179b8;
uVar6 = *(undefined4 *)(&DAT_8f717970 + param_2 * 8);
pcVar3 = s_g_co_placeholder_8f666924;
cVar2 = 'g';
do {
FUN_8f635ad0(cVar2,uVar6,uVar1);
pcVar3 = pcVar3 + 1;
cVar2 = *pcVar3;
} while (cVar2 != '\0');
if (param_2 == 0) {
iVar5 = FUN_8f611194(&local_110);
if ((iVar5 != 0) && (FUN_8f63ea00(auStack_ec,iVar5,local_110), uVar7 = param_2, local_110 != 0))
{
do {
if (local_110 - 1 == uVar7) {
FUN_8f63e0bc(auStack_10c,&DAT_8f6668ec,auStack_ec[uVar7]);
}
else {
FUN_8f63e0bc(auStack_10c,s__02x__8f6668f4,auStack_ec[uVar7]);
}
FUN_8f63e608(&local_ac,auStack_10c);
uVar7 = uVar7 + 1;
} while (uVar7 < local_110);
}
uVar1 = DAT_8f7179b8;
pcVar3 = (char *)0x8f666938;
cVar2 = 'I';
do {
FUN_8f635ad0(cVar2,0,uVar1);
uVar6 = DAT_8f7179b8;
pcVar3 = pcVar3 + 1;
cVar2 = *pcVar3;
} while (cVar2 != '\0');
if (local_ac != '\0') {
pcVar3 = &local_ac;
do {
FUN_8f635ad0(local_ac,0,uVar6);
pcVar3 = pcVar3 + 1;
local_ac = *pcVar3;
} while (local_ac != '\0');
}
}
uVar1 = DAT_8f7179b8;
pcVar3 = s__If_no_key_pressed__Your_device_w_8f66693c;
cVar2 = '\n';
do {
FUN_8f635ad0(cVar2,0,uVar1);
pcVar3 = pcVar3 + 1;
cVar2 = *pcVar3;
} while (cVar2 != '\0');
*(uint *)(param_1 + 0x68) = param_2;
FUN_8f63e200(pcVar4);
iVar5 = DAT_8f731d80;
*(undefined4 *)(param_1 + 0x6c) = 5000;
if (local_2c == iVar5) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f612984(int param_1)
{
int iVar1;
char cVar2;
uint uVar3;
undefined4 uVar4;
undefined4 uVar5;
char *pcVar6;
int iVar7;
iVar1 = DAT_8f731d80;
pcVar6 = s_Options_menu__8f666990;
FUN_8f6359f8();
FUN_8f63e410(param_1,0,0x78);
uVar5 = DAT_8f71796c;
cVar2 = 'O';
do {
FUN_8f635ad0(cVar2,0,uVar5);
uVar4 = DAT_8f7179b8;
pcVar6 = pcVar6 + 1;
cVar2 = *pcVar6;
} while (cVar2 != '\0');
pcVar6 = s_Press_volume_key_to_select__and_p_8f6669a0;
uVar3 = 0x50;
do {
FUN_8f635ad0(uVar3,0,uVar4);
pcVar6 = (char *)((byte *)pcVar6 + 1);
uVar3 = (uint)(byte)*pcVar6;
iVar7 = param_1;
} while (uVar3 != 0);
do {
FUN_8f6358c8(0);
uVar4 = FUN_8f635e38();
uVar5 = DAT_8f7179b8;
pcVar6 = *(char **)((int)&PTR_s_Power_off_8f666628 + uVar3);
*(undefined4 *)(param_1 + uVar3) = uVar4;
cVar2 = *pcVar6;
while (cVar2 != '\0') {
FUN_8f635ad0(cVar2,0,uVar5);
pcVar6 = pcVar6 + 1;
cVar2 = *pcVar6;
}
uVar5 = FUN_8f635eb8();
uVar3 = uVar3 + 4;
*(undefined4 *)(iVar7 + 0x40) = uVar5;
uVar5 = FUN_8f635e38();
*(undefined4 *)(iVar7 + 0x20) = uVar5;
iVar7 = iVar7 + 4;
} while (uVar3 != 0x14);
FUN_8f6358c8(0);
iVar7 = DAT_8f731d80;
*(undefined4 *)(param_1 + 0x60) = 5;
*(undefined4 *)(param_1 + 0x68) = 3;
*(undefined4 *)(param_1 + 100) = 5;
if (iVar1 == iVar7) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f612ab8(int param_1)
{
undefined4 uVar1;
char cVar2;
int iVar3;
char *pcVar4;
uint uVar5;
undefined4 uVar6;
undefined auStack_e4 [64];
char local_a4;
char acStack_a3 [127];
int local_24;
uVar5 = *(uint *)(param_1 + 100);
local_24 = DAT_8f731d80;
FUN_8f6359f8();
FUN_8f63e410(param_1,0,0x78);
if (uVar5 == 0) {
uVar6 = 7;
}
else if (uVar5 < 3) {
uVar6 = 6;
}
else {
uVar6 = 0;
}
FUN_8f6358c8(uVar6);
uVar1 = DAT_8f71796c;
pcVar4 = (&PTR_s_START_8f66701c)[uVar5];
cVar2 = *pcVar4;
while (cVar2 != '\0') {
FUN_8f635ad0(cVar2,uVar6,uVar1);
pcVar4 = pcVar4 + 1;
cVar2 = *pcVar4;
}
FUN_8f6358c8(uVar6);
uVar6 = DAT_8f7179b8;
pcVar4 = s__Press_volume_key_to_select__and_8f666aa8;
cVar2 = '\n';
do {
FUN_8f635ad0(cVar2,0,uVar6);
uVar1 = DAT_8f7179b8;
pcVar4 = pcVar4 + 1;
cVar2 = *pcVar4;
} while (cVar2 != '\0');
pcVar4 = s_FASTBOOT_MODE_8f666ae8;
cVar2 = 'F';
do {
FUN_8f635ad0(cVar2,6,uVar1);
pcVar4 = pcVar4 + 1;
cVar2 = *pcVar4;
} while (cVar2 != '\0');
FUN_8f62e6a8(auStack_e4);
FUN_8f63e068(&local_a4,0x80,s_PRODUCT_NAME____s_8f666a10,auStack_e4);
uVar6 = DAT_8f7179b8;
if (local_a4 != '\0') {
pcVar4 = &local_a4;
cVar2 = local_a4;
do {
FUN_8f635ad0(cVar2,0,uVar6);
pcVar4 = pcVar4 + 1;
cVar2 = *pcVar4;
} while (cVar2 != '\0');
}
FUN_8f63e410(auStack_e4,0,0x40);
FUN_8f605320(auStack_e4,0x40);
iVar3 = FUN_8f625e60();
uVar6 = 0x8f6669e4;
if (iVar3 != 0) {
uVar6 = 0x8f6669dc;
}
FUN_8f63e068(&local_a4,0x80,s_VARIANT____s__s_8f666a24,auStack_e4,uVar6);
uVar1 = DAT_8f7179b8;
if (local_a4 != '\0') {
pcVar4 = &local_a4;
cVar2 = local_a4;
do {
FUN_8f635ad0(cVar2,0,uVar1);
pcVar4 = pcVar4 + 1;
cVar2 = *pcVar4;
} while (cVar2 != '\0');
}
FUN_8f63e410(auStack_e4,0,0x40);
FUN_8f62e6f4(auStack_e4);
FUN_8f63e068(&local_a4,0x80,s_BOOTLOADER_VERSION____s_8f666a38,auStack_e4,uVar6);
uVar6 = DAT_8f7179b8;
if (local_a4 != '\0') {
pcVar4 = &local_a4;
cVar2 = local_a4;
do {
FUN_8f635ad0(cVar2,0,uVar6);
pcVar4 = pcVar4 + 1;
cVar2 = *pcVar4;
} while (cVar2 != '\0');
}
FUN_8f63e410(auStack_e4,0,0x40);
FUN_8f62e740(auStack_e4);
FUN_8f63e068(&local_a4,0x80,s_BASEBAND_VERSION____s_8f666a54,auStack_e4);
uVar6 = DAT_8f7179b8;
if (local_a4 != '\0') {
pcVar4 = &local_a4;
cVar2 = local_a4;
do {
FUN_8f635ad0(cVar2,0,uVar6);
pcVar4 = pcVar4 + 1;
cVar2 = *pcVar4;
} while (cVar2 != '\0');
}
FUN_8f63e410(auStack_e4,0,0x40);
FUN_8f600528(auStack_e4);
FUN_8f63e068(&local_a4,0x80,s_SERIAL_NUMBER____s_8f666a6c,auStack_e4);
uVar6 = DAT_8f7179b8;
if (local_a4 != '\0') {
pcVar4 = &local_a4;
cVar2 = local_a4;
do {
FUN_8f635ad0(cVar2,0,uVar6);
pcVar4 = pcVar4 + 1;
cVar2 = *pcVar4;
} while (cVar2 != '\0');
}
iVar3 = FUN_8f61a014();
pcVar4 = s_disabled_8f6669f0;
if (iVar3 != 0) {
pcVar4 = s_enabled_8f6669e8;
}
FUN_8f63e068(&local_a4,0x80,s_SECURE_BOOT____s_8f666a80,pcVar4);
uVar6 = DAT_8f7179b8;
if (local_a4 != '\0') {
pcVar4 = &local_a4;
cVar2 = local_a4;
do {
FUN_8f635ad0(cVar2,0,uVar6);
pcVar4 = pcVar4 + 1;
cVar2 = *pcVar4;
} while (cVar2 != '\0');
}
iVar3 = FUN_8f62e78c();
pcVar4 = s_unlocked_8f666a04;
if (iVar3 != 0) {
pcVar4 = s_locked_8f6669fc;
}
FUN_8f63e068(&local_a4,0x80,s_DEVICE_STATE____s_8f666a94,pcVar4);
uVar6 = DAT_8f7179b8;
if (local_a4 != '\0') {
pcVar4 = &local_a4;
do {
FUN_8f635ad0(local_a4,6,uVar6);
pcVar4 = pcVar4 + 1;
local_a4 = *pcVar4;
} while (local_a4 != '\0');
}
iVar3 = DAT_8f731d80;
*(uint *)(param_1 + 100) = uVar5;
*(undefined4 *)(param_1 + 0x68) = 5;
*(undefined4 *)(param_1 + 0x60) = 4;
if (local_24 == iVar3) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f612ee0)
void FUN_8f612e88(void)
{
if (DAT_8f724190 != 0) {
return;
}
FUN_8f6124f4();
return;
}
void FUN_8f612ee4(undefined4 param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f612384();
if (DAT_8f724190 == 0) {
FUN_8f6124f4();
}
FUN_8f626c38(&DAT_8f724214);
DAT_8f724210 = DAT_8f724200;
FUN_8f612674(&DAT_8f724198,param_1);
FUN_8f626d1c(&DAT_8f724214);
if (DAT_8f724230 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f612544();
return;
}
}
else if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f612f90(int param_1)
{
char cVar1;
int iVar2;
uint uVar3;
undefined4 uVar4;
undefined4 uVar5;
undefined4 uVar6;
char *pcVar7;
bool bVar8;
char local_ac;
char acStack_ab [127];
int local_2c;
pcVar7 = s_Fastboot_options_menu__8f666b18;
local_2c = DAT_8f731d80;
FUN_8f63e410(&local_ac,0,0x80);
uVar6 = *(undefined4 *)(param_1 + 100);
FUN_8f6359f8();
FUN_8f63e410(param_1,0,0x78);
uVar5 = DAT_8f71796c;
cVar1 = 'F';
do {
FUN_8f635ad0(cVar1,0,uVar5);
pcVar7 = pcVar7 + 1;
cVar1 = *pcVar7;
} while (cVar1 != '\0');
FUN_8f63e0bc(&local_ac,s_TARGET_PROJECT____s_8f666b34,s_Z581KL_8f71c624);
uVar5 = DAT_8f7179b8;
if (local_ac != '\0') {
pcVar7 = &local_ac;
cVar1 = local_ac;
do {
FUN_8f635ad0(cVar1,0,uVar5);
pcVar7 = pcVar7 + 1;
cVar1 = *pcVar7;
} while (cVar1 != '\0');
}
iVar2 = FUN_8f63e6f4(s_V5_7_3_8f71c5e4,s_IMEI____s_8f666cc0 + 0xc);
pcVar7 = s_Local_8f666af8;
if (iVar2 != 0) {
pcVar7 = s_V5_7_3_8f71c5e4;
}
FUN_8f63e0bc(&local_ac,s_IMAGE_VERSION____s_8f666b4c,pcVar7);
uVar5 = DAT_8f7179b8;
if (local_ac != '\0') {
pcVar7 = &local_ac;
cVar1 = local_ac;
do {
FUN_8f635ad0(cVar1,0,uVar5);
pcVar7 = pcVar7 + 1;
cVar1 = *pcVar7;
} while (cVar1 != '\0');
}
FUN_8f63e0bc(&local_ac,s_BUILD_VARIANT____s_8f666b64,&DAT_8f71c580);
uVar5 = DAT_8f7179b8;
if (local_ac != '\0') {
pcVar7 = &local_ac;
cVar1 = local_ac;
do {
FUN_8f635ad0(cVar1,0,uVar5);
pcVar7 = pcVar7 + 1;
cVar1 = *pcVar7;
} while (cVar1 != '\0');
}
iVar2 = FUN_8f61a014();
pcVar7 = s_enabled_8f6669e8;
if (iVar2 == 0) {
pcVar7 = s_disabled_8f6669f0;
}
FUN_8f63e0bc(&local_ac,s_SECURE_BOOT____s_8f666b7c,pcVar7);
uVar5 = DAT_8f7179b8;
if (local_ac != '\0') {
pcVar7 = &local_ac;
cVar1 = local_ac;
do {
FUN_8f635ad0(cVar1,0,uVar5);
pcVar7 = pcVar7 + 1;
cVar1 = *pcVar7;
} while (cVar1 != '\0');
}
iVar2 = FUN_8f62e78c();
pcVar7 = s_locked_8f6669fc;
if (iVar2 == 0) {
pcVar7 = s_unlocked_8f666a04;
}
FUN_8f63e0bc(&local_ac,s_DEVICE_STATE____s_8f666b94,pcVar7);
uVar5 = DAT_8f7179b8;
if (local_ac != '\0') {
pcVar7 = &local_ac;
cVar1 = local_ac;
do {
FUN_8f635ad0(cVar1,0,uVar5);
pcVar7 = pcVar7 + 1;
cVar1 = *pcVar7;
} while (cVar1 != '\0');
}
iVar2 = FUN_8f62e7d4();
pcVar7 = s_Modified_8f666b00;
if (iVar2 == 0) {
pcVar7 = s_Official_8f666b0c;
}
FUN_8f63e0bc(&local_ac,s_Software_status____s_8f666bac,pcVar7);
uVar5 = DAT_8f7179b8;
if (local_ac != '\0') {
pcVar7 = &local_ac;
do {
FUN_8f635ad0(local_ac,0,uVar5);
pcVar7 = pcVar7 + 1;
local_ac = *pcVar7;
} while (local_ac != '\0');
}
uVar5 = DAT_8f7179b8;
pcVar7 = s__Press_volume_key_to_choose__and_8f666bc4;
uVar3 = 10;
do {
FUN_8f635ad0(uVar3,0,uVar5);
pcVar7 = (char *)((byte *)pcVar7 + 1);
uVar3 = (uint)(byte)*pcVar7;
iVar2 = param_1;
} while (uVar3 != 0);
do {
FUN_8f6358c8(0);
uVar4 = FUN_8f635e38();
uVar5 = DAT_8f7179b8;
pcVar7 = *(char **)((int)&PTR_s_Reboot_fastboot_8f66702c + uVar3);
*(undefined4 *)(param_1 + uVar3) = uVar4;
cVar1 = *pcVar7;
while (cVar1 != '\0') {
FUN_8f635ad0(cVar1,0,uVar5);
pcVar7 = pcVar7 + 1;
cVar1 = *pcVar7;
}
uVar5 = FUN_8f635eb8();
uVar3 = uVar3 + 4;
*(undefined4 *)(iVar2 + 0x40) = uVar5;
uVar5 = FUN_8f635e38();
*(undefined4 *)(iVar2 + 0x20) = uVar5;
iVar2 = iVar2 + 4;
} while (uVar3 != 0x20);
FUN_8f6358c8(0);
bVar8 = local_2c != DAT_8f731d80;
*(undefined4 *)(param_1 + 0x68) = 9;
*(undefined4 *)(param_1 + 100) = uVar6;
*(undefined4 *)(param_1 + 0x60) = 8;
if (bVar8) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f6132dc(int param_1)
{
char cVar1;
int iVar2;
uint uVar3;
undefined4 uVar4;
undefined4 uVar5;
int iVar6;
char *pcVar7;
char local_ac;
char acStack_ab [127];
int local_2c;
pcVar7 = s_Fastboot_options_menu_8f666c04;
local_2c = DAT_8f731d80;
FUN_8f63e410(&local_ac,0,0x80);
iVar6 = *(int *)(param_1 + 100);
FUN_8f6359f8();
FUN_8f63e410(param_1,0,0x78);
uVar5 = DAT_8f71796c;
cVar1 = 'F';
do {
FUN_8f635ad0(cVar1,0,uVar5);
pcVar7 = pcVar7 + 1;
cVar1 = *pcVar7;
} while (cVar1 != '\0');
FUN_8f63e0bc(&local_ac,s__TARGET_PROJECT____s_8f666c1c,s_Z581KL_8f71c624);
uVar5 = DAT_8f7179b8;
if (local_ac != '\0') {
pcVar7 = &local_ac;
cVar1 = local_ac;
do {
FUN_8f635ad0(cVar1,0,uVar5);
pcVar7 = pcVar7 + 1;
cVar1 = *pcVar7;
} while (cVar1 != '\0');
}
iVar2 = FUN_8f63e6f4(s_V5_7_3_8f71c5e4,s_IMEI____s_8f666cc0 + 0xc);
pcVar7 = s_Local_8f666af8;
if (iVar2 != 0) {
pcVar7 = s_V5_7_3_8f71c5e4;
}
FUN_8f63e0bc(&local_ac,s_IMAGE_VERSION____s_8f666b4c,pcVar7);
uVar5 = DAT_8f7179b8;
if (local_ac != '\0') {
pcVar7 = &local_ac;
cVar1 = local_ac;
do {
FUN_8f635ad0(cVar1,0,uVar5);
pcVar7 = pcVar7 + 1;
cVar1 = *pcVar7;
} while (cVar1 != '\0');
}
FUN_8f63e0bc(&local_ac,s_BUILD_VARIANT____s_8f666b64,&DAT_8f71c580);
uVar5 = DAT_8f7179b8;
if (local_ac != '\0') {
pcVar7 = &local_ac;
cVar1 = local_ac;
do {
FUN_8f635ad0(cVar1,0,uVar5);
pcVar7 = pcVar7 + 1;
cVar1 = *pcVar7;
} while (cVar1 != '\0');
}
iVar2 = FUN_8f61a014();
pcVar7 = s_enabled_8f6669e8;
if (iVar2 == 0) {
pcVar7 = s_disabled_8f6669f0;
}
FUN_8f63e0bc(&local_ac,s_SECURE_BOOT____s_8f666b7c,pcVar7);
uVar5 = DAT_8f7179b8;
if (local_ac != '\0') {
pcVar7 = &local_ac;
cVar1 = local_ac;
do {
FUN_8f635ad0(cVar1,0,uVar5);
pcVar7 = pcVar7 + 1;
cVar1 = *pcVar7;
} while (cVar1 != '\0');
}
iVar2 = FUN_8f62e78c();
pcVar7 = s_locked_8f6669fc;
if (iVar2 == 0) {
pcVar7 = s_unlocked_8f666a04;
}
FUN_8f63e0bc(&local_ac,s_DEVICE_STATE____s_8f666b94,pcVar7);
uVar5 = DAT_8f7179b8;
if (local_ac != '\0') {
pcVar7 = &local_ac;
cVar1 = local_ac;
do {
FUN_8f635ad0(cVar1,0,uVar5);
pcVar7 = pcVar7 + 1;
cVar1 = *pcVar7;
} while (cVar1 != '\0');
}
iVar2 = FUN_8f62e7d4();
pcVar7 = s_Modified_8f666b00;
if (iVar2 == 0) {
pcVar7 = s_Official_8f666b0c;
}
FUN_8f63e0bc(&local_ac,s_Software_status____s_8f666bac,pcVar7);
uVar5 = DAT_8f7179b8;
if (local_ac != '\0') {
pcVar7 = &local_ac;
do {
FUN_8f635ad0(local_ac,0,uVar5);
pcVar7 = pcVar7 + 1;
local_ac = *pcVar7;
} while (local_ac != '\0');
}
uVar5 = DAT_8f7179b8;
pcVar7 = s__Press_volume_key_to_choose__and_8f666c34;
cVar1 = '\n';
do {
FUN_8f635ad0(cVar1,0,uVar5);
uVar4 = DAT_8f7179b8;
pcVar7 = pcVar7 + 1;
cVar1 = *pcVar7;
} while (cVar1 != '\0');
pcVar7 = s_Wipe_all_user_data__8f666c74;
cVar1 = 'W';
do {
FUN_8f635ad0(cVar1,6,uVar4);
uVar5 = DAT_8f7179b8;
pcVar7 = pcVar7 + 1;
cVar1 = *pcVar7;
} while (cVar1 != '\0');
pcVar7 = s__THIS_CAN_NOT_BE_UNDONE_8f666c8c;
uVar3 = 0x20;
do {
FUN_8f635ad0(uVar3,6,uVar5);
pcVar7 = (char *)((byte *)pcVar7 + 1);
uVar3 = (uint)(byte)*pcVar7;
iVar2 = param_1;
} while (uVar3 != 0);
do {
FUN_8f6358c8(0);
uVar4 = FUN_8f635e38();
uVar5 = DAT_8f7179b8;
pcVar7 = *(char **)((int)&PTR_DAT_8f66663c + uVar3);
*(undefined4 *)(param_1 + uVar3) = uVar4;
cVar1 = *pcVar7;
while (cVar1 != '\0') {
FUN_8f635ad0(cVar1,0,uVar5);
pcVar7 = pcVar7 + 1;
cVar1 = *pcVar7;
}
uVar5 = FUN_8f635eb8();
uVar3 = uVar3 + 4;
*(undefined4 *)(iVar2 + 0x40) = uVar5;
uVar5 = FUN_8f635e38();
*(undefined4 *)(iVar2 + 0x20) = uVar5;
iVar2 = iVar2 + 4;
} while (uVar3 != 8);
FUN_8f6358c8(0);
*(undefined4 *)(param_1 + 0x68) = 0xb;
iVar2 = param_1 + iVar6 * 4;
*(int *)(param_1 + 100) = iVar6;
*(undefined4 *)(param_1 + 0x60) = 2;
FUN_8f6357a8(*(undefined4 *)(param_1 + iVar6 * 4),*(undefined4 *)(iVar2 + 0x20),
*(undefined4 *)(iVar2 + 0x40),1);
if (local_2c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f613694(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
if (DAT_8f724190 == 0) {
FUN_8f6124f4();
}
if (DAT_8f7179bc != 0) {
FUN_8f626c38(PTR_DAT_8f61378c);
}
DAT_8f7241fc = 0;
DAT_8f724210 = DAT_8f724200;
if (DAT_8f724194 == 0) {
FUN_8f612f90();
}
else {
FUN_8f6132dc();
}
if (DAT_8f7179bc != 0) {
FUN_8f626d1c(PTR_DAT_8f61378c);
}
DAT_8f7179bc = 0;
if (DAT_8f724230 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f612544();
return;
}
}
else if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f613790(void)
{
undefined4 uVar1;
undefined4 uVar2;
char cVar3;
char *pcVar4;
undefined auStack_19c [128];
undefined auStack_11c [128];
char local_9c;
char acStack_9b [127];
int local_1c;
local_1c = DAT_8f731d80;
FUN_8f63e410(auStack_19c,0,0x80);
FUN_8f63e410(auStack_11c,0,0x80);
FUN_8f63e410(&local_9c,0,0x80);
FUN_8f63e410(&DAT_8f724198,0,0x78);
DAT_8f7241f8 = 1;
DAT_8f724200 = 10;
FUN_8f636860();
uVar1 = DAT_8f71796c;
pcVar4 = s_BARCODES_8f666ca8;
cVar3 = 'B';
do {
FUN_8f635ad0(cVar3,9,uVar1);
uVar2 = DAT_8f7179b8;
pcVar4 = pcVar4 + 1;
cVar3 = *pcVar4;
} while (cVar3 != '\0');
pcVar4 = s_Press_any_key_to_back_to_fastboo_8f666cdc;
cVar3 = 'P';
do {
FUN_8f635ad0(cVar3,9,uVar2);
pcVar4 = pcVar4 + 1;
cVar3 = *pcVar4;
} while (cVar3 != '\0');
FUN_8f632d24(auStack_19c,1);
FUN_8f6369b4(auStack_19c);
FUN_8f63e0bc(&local_9c,s_SSN____s_8f666cb4,auStack_19c);
uVar1 = DAT_8f7179b8;
if (local_9c != '\0') {
pcVar4 = &local_9c;
cVar3 = local_9c;
do {
FUN_8f635ad0(cVar3,9,uVar1);
pcVar4 = pcVar4 + 1;
cVar3 = *pcVar4;
} while (cVar3 != '\0');
}
FUN_8f632ddc(auStack_11c);
FUN_8f6369b4(auStack_11c);
FUN_8f63e0bc(&local_9c,s_IMEI____s_8f666cc0,auStack_11c);
uVar1 = DAT_8f7179b8;
if (local_9c != '\0') {
pcVar4 = &local_9c;
cVar3 = local_9c;
do {
FUN_8f635ad0(cVar3,9,uVar1);
pcVar4 = pcVar4 + 1;
cVar3 = *pcVar4;
} while (cVar3 != '\0');
}
FUN_8f6369b4(&DAT_8f71c540);
FUN_8f63e0bc(&local_9c,s_SKU____s_8f666cd0,&DAT_8f71c540);
uVar1 = DAT_8f7179b8;
if (local_9c != '\0') {
pcVar4 = &local_9c;
do {
FUN_8f635ad0(local_9c,9,uVar1);
pcVar4 = pcVar4 + 1;
local_9c = *pcVar4;
} while (local_9c != '\0');
}
if (local_1c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f613974(void)
{
uint uVar1;
int iVar2;
int iVar3;
uint *puVar4;
uint uVar5;
uint uVar6;
uint uVar7;
iVar2 = DAT_8f731d80;
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);
}
FUN_8f609c9c();
_DAT_0b000000 = 1;
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f613a80)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f613a38(void)
{
_DAT_0b002004 = 0xf0;
_DAT_0b002000 = 1;
return;
}
// WARNING: Removing unreachable block (ram,0x8f613ac0)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f613a84(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f613b00)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f613ac4(undefined4 param_1)
{
_DAT_0b002010 = param_1;
return;
}
void FUN_8f613b04(undefined4 param_1,undefined4 param_2)
{
longlong lVar1;
int iVar2;
uint uVar3;
uint uVar4;
uint uVar5;
uint uVar6;
uint uVar7;
bool bVar8;
longlong lVar9;
uint local_30;
uint uStack_2c;
iVar2 = DAT_8f731d80;
lVar9 = FUN_8f61401c();
uVar4 = (uint)((ulonglong)lVar9 >> 0x20);
uVar3 = (uint)lVar9;
lVar1 = lVar9 + CONCAT44(param_2,param_1);
uVar6 = (uint)lVar1;
uVar7 = (uint)((ulonglong)lVar1 >> 0x20) & 0xffffff;
bVar8 = uVar4 <= uVar7;
if (uVar7 == uVar4) {
bVar8 = uVar3 <= uVar6;
}
while (!bVar8) {
uStack_2c = (uint)((ulonglong)lVar9 >> 0x20);
local_30 = (uint)lVar9;
bVar8 = uStack_2c <= uVar4;
if (uVar4 == uStack_2c) {
bVar8 = local_30 <= uVar3;
}
if (bVar8 && (uVar4 != uStack_2c || uVar3 != local_30)) break;
lVar9 = FUN_8f61401c();
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_8f61401c();
}
if (iVar2 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f613bc0(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int iVar1;
iVar1 = DAT_8f731d80;
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
FUN_8f613e94(param_3,param_1,param_2);
DAT_8f718ca8 = DAT_8f718ca8 + -1;
if (DAT_8f718ca8 == 0) {
FUN_8f62551c();
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
// WARNING: Removing unreachable block (ram,0x8f613c88)
void FUN_8f613c54(void)
{
FUN_8f614078();
return;
}
// WARNING: Removing unreachable block (ram,0x8f613cc0)
void FUN_8f613c8c(void)
{
FUN_8f613fc4();
return;
}
// WARNING: Removing unreachable block (ram,0x8f613d14)
void FUN_8f613cc4(uint param_1)
{
FUN_8f660e18((int)((ulonglong)DAT_8f724234 * (ulonglong)param_1),
(int)((ulonglong)DAT_8f724234 * (ulonglong)param_1 >> 0x20),1000,0);
FUN_8f613b04();
return;
}
// WARNING: Removing unreachable block (ram,0x8f613d6c)
void FUN_8f613d18(uint param_1)
{
FUN_8f660e18((int)((ulonglong)DAT_8f724234 * (ulonglong)param_1),
(int)((ulonglong)DAT_8f724234 * (ulonglong)param_1 >> 0x20),1000000,0);
FUN_8f613b04();
return;
}
void FUN_8f613d70(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
DAT_8f724234 = FUN_8f613f88();
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f613df0)
void FUN_8f613db4(void)
{
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f613e94(int param_1,undefined4 param_2,undefined4 param_3)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
_DAT_0b02102c = _DAT_0b02102c & 0xfffffffe | 2;
DataSynchronizationBarrier(0xf);
iVar2 = FUN_8f613db4();
_DAT_0b021028 = (uint)(param_1 * iVar2) / 1000;
DataSynchronizationBarrier(0xf);
DAT_8f72423c = param_1;
DAT_8f724240 = param_3;
DAT_8f724244 = param_2;
DAT_8f724248 = _DAT_0b021028;
FUN_8f614198(0x121,&LAB_8f613df4,0);
FUN_8f614160(0x121);
_DAT_0b02102c = _DAT_0b02102c & 0xfffffffd | 1;
DataSynchronizationBarrier(0xf);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f613fc0)
void FUN_8f613f88(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f614018)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f613fc4(void)
{
_DAT_0b02102c = _DAT_0b02102c & 0xfffffffe | 2;
DataSynchronizationBarrier(0xf);
return;
}
// WARNING: Removing unreachable block (ram,0x8f614074)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61401c(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6140b4)
void FUN_8f614078(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f61415c)
void FUN_8f614128(void)
{
FUN_8f609e64();
return;
}
// WARNING: Removing unreachable block (ram,0x8f614194)
void FUN_8f614160(void)
{
FUN_8f609ebc();
return;
}
// WARNING: Removing unreachable block (ram,0x8f6141cc)
void FUN_8f614198(void)
{
FUN_8f609f14();
return;
}
void FUN_8f6141d0(int param_1)
{
int iVar1;
int iVar2;
code *pcVar3;
iVar1 = DAT_8f731d80;
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);
}
pcVar3 = *(code **)(iVar2 + 0x34);
if (pcVar3 != (code *)0x0) {
pcVar3 = (code *)(*pcVar3)(param_1);
}
FUN_8f6141d0(pcVar3);
iVar2 = *(int *)(param_1 + 0x10);
}
*(int *)(param_1 + 0x10) = iVar2 + -1;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f614264(int param_1)
{
int iVar1;
int iVar2;
code *pcVar3;
iVar1 = DAT_8f731d80;
iVar2 = param_1;
if (param_1 == 0) goto LAB_8f6142ec;
iVar2 = *(int *)(param_1 + 0x10);
if (iVar2 == 0) {
pcVar3 = *(code **)(*(int *)(param_1 + 8) + 0x34);
if (pcVar3 != (code *)0x0) {
pcVar3 = (code *)(*pcVar3)();
}
iVar2 = FUN_8f614264(pcVar3);
if (iVar2 != 0) goto LAB_8f6142ec;
if ((**(code ***)(param_1 + 8) != (code *)0x0) &&
(iVar2 = (***(code ***)(param_1 + 8))(param_1), iVar2 != 0)) {
FUN_8f6141d0(pcVar3);
goto LAB_8f6142ec;
}
iVar2 = *(int *)(param_1 + 0x10);
}
*(int *)(param_1 + 0x10) = iVar2 + 1;
iVar2 = 0;
LAB_8f6142ec:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f614320(int param_1)
{
int iVar1;
undefined4 uVar2;
code *pcVar3;
iVar1 = DAT_8f731d80;
pcVar3 = *(code **)(*(int *)(param_1 + 8) + 0x10);
if (pcVar3 == (code *)0x0) {
uVar2 = 0xfffffff9;
}
else {
uVar2 = (*pcVar3)();
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
// WARNING: Removing unreachable block (ram,0x8f6143b4)
void FUN_8f614370(int param_1,int param_2)
{
if (param_1 != 0 && param_2 != 0) {
DAT_8f72424c = param_1;
DAT_8f724250 = param_2;
}
return;
}
void FUN_8f6143b8(undefined4 param_1)
{
int iVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
undefined4 *puVar5;
int iVar6;
iVar2 = DAT_8f731d80;
iVar1 = DAT_8f724250;
if (DAT_8f72424c == (undefined4 *)0x0 || DAT_8f724250 == 0) {
FUN_8f63cbb4(s_Alert___clock_list_not_defined__8f66704c);
uVar4 = 0;
}
else {
iVar6 = 0;
puVar5 = DAT_8f72424c;
do {
iVar3 = FUN_8f63e6f4(*puVar5,param_1);
if (iVar3 == 0) {
uVar4 = puVar5[1];
goto LAB_8f614424;
}
iVar6 = iVar6 + 1;
puVar5 = puVar5 + 2;
} while (iVar6 != iVar1);
FUN_8f63cbb4(s_Alert___Requested_clock___s__is_n_8f667070,param_1);
uVar4 = 0;
}
LAB_8f614424:
if (iVar2 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar4);
}
return;
}
void FUN_8f61446c(undefined4 param_1,int param_2,int param_3)
{
int iVar1;
int iVar2;
int iVar3;
code *pcVar4;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f6143b8();
if (iVar2 == 0) {
param_3 = -7;
FUN_8f63cbb4(s_Can_t_find_clock_with_id___s_8f6670a0,param_1);
goto LAB_8f6144b0;
}
if (param_2 == 0) {
joined_r0x8f6144f0:
if ((param_3 != 0) && (param_3 = FUN_8f614264(iVar2), param_3 != 0)) {
FUN_8f63cbb4(s_Clock_enable_failed__8f6670d8);
}
}
else {
pcVar4 = *(code **)(*(int *)(iVar2 + 8) + 0x10);
if (pcVar4 == (code *)0x0) {
iVar3 = -7;
}
else {
iVar3 = (*pcVar4)(iVar2,param_2);
if (iVar3 == 0) goto joined_r0x8f6144f0;
}
param_3 = iVar3;
FUN_8f63cbb4(s_Clock_set_rate_failed__8f6670c0);
}
LAB_8f6144b0:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(param_3);
}
void FUN_8f6147f8(int param_1,int param_2)
{
int iVar1;
undefined4 uVar2;
int iVar3;
code *pcVar4;
int *piVar5;
iVar1 = DAT_8f731d80;
piVar5 = *(int **)(param_1 + -8);
iVar3 = *piVar5;
do {
if (iVar3 == -2) {
uVar2 = 0xfffffff8;
LAB_8f61487c:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
if (iVar3 == param_2) {
if (*(int **)(param_1 + -4) == piVar5) {
uVar2 = 0;
}
else {
FUN_8f614264(piVar5[1]);
pcVar4 = *(code **)(param_1 + -0xc);
if (pcVar4 == (code *)0x0) {
FUN_8f63cce8();
pcVar4 = *(code **)(param_1 + -0xc);
}
(*pcVar4)(param_1 + -0x20,piVar5);
*(int **)(param_1 + -4) = piVar5;
uVar2 = 0;
}
goto LAB_8f61487c;
}
piVar5 = piVar5 + 6;
iVar3 = *piVar5;
} while( true );
}
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f614a7c(byte *param_1,byte *param_2,int param_3)
{
int iVar1;
byte *pbVar2;
uint uVar3;
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;
iVar1 = DAT_8f731d80;
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;
pbVar2 = param_1;
if ((*(uint *)(param_1 + 0xa4) & 8) == 0) {
uVar8 = *(uint *)(param_1 + 0xb4);
while ((uVar8 & 0x80) == 0) {
pbVar2 = (byte *)FUN_8f613d18(1);
uVar8 = *(uint *)(param_1 + 0xb4);
}
}
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
pbVar2 = (byte *)FUN_8f62552c(pbVar2);
}
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;
pbVar6 = param_2;
uVar12 = uVar11;
if (uVar11 != 0) {
uVar7 = 0;
uVar12 = 0;
uVar3 = 0;
uVar13 = 0;
pbVar2 = param_2;
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;
pbVar6 = pbVar2;
} while (uVar3 != uVar11);
}
while ((*(uint *)(param_1 + 0xa4) & 4) == 0) {
pbVar2 = (byte *)FUN_8f613d18(1);
}
uVar4 = uVar4 + 1;
*(uint *)(param_1 + 0x100) = uVar12;
if (uVar4 == local_3c) break;
uVar12 = uVar8 - 4;
uVar11 = uVar8;
param_2 = pbVar6;
if (3 < uVar8) {
uVar11 = 4;
}
}
}
iVar10 = DAT_8f718ca8 + -1;
DAT_8f718ca8 = iVar10;
if (iVar10 == 0) {
FUN_8f62551c(pbVar2);
}
else {
iVar10 = 0;
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar10);
}
void FUN_8f614c94(undefined4 param_1,undefined4 *param_2,undefined4 *param_3)
{
int iVar1;
uint uVar2;
bool bVar3;
iVar1 = DAT_8f731d80;
FUN_8f604254();
DataSynchronizationBarrier(0xf);
FUN_8f604e20(param_1);
DataSynchronizationBarrier(0xf);
if (param_2 != (undefined4 *)0x0) {
*param_2 = 0x60;
}
DataSynchronizationBarrier(0xf);
param_3[0x28] = 0xcc;
DataSynchronizationBarrier(0xf);
*param_3 = 0;
param_3[1] = 0x34;
param_3[0x2c] = 0x99;
param_3[7] = 0;
param_3[8] = 0;
param_3[6] = 0xf;
param_3[0x2e] = 0;
param_3[9] = 0;
param_3[0x2a] = 0x10;
param_3[0x2a] = 0x20;
param_3[0x2a] = 0x30;
param_3[0x2a] = 0xa0;
param_3[0x2a] = 0x80;
param_3[0xf] = 0;
param_3[0x2a] = 1;
param_3[0x2a] = 4;
param_3[0x2a] = 0x600;
param_3[0x2a] = 0x80;
param_3[0xd] = 0x220;
param_3[0x2a] = 0x500;
FUN_8f614a7c(param_3,s_Android_Bootloader___UART_DM_Ini_8f667124,0x2c);
uVar2 = (uint)DAT_8f724254;
if (3 < uVar2) {
FUN_8f63cce8();
uVar2 = (uint)DAT_8f724254;
}
bVar3 = iVar1 != DAT_8f731d80;
*(undefined4 **)(&DAT_8f72425c + uVar2 * 4) = param_3;
DAT_8f724254 = (char)uVar2 + '\x01';
DAT_8f724258 = 1;
if (bVar3) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f614e0c(int param_1,undefined param_2)
{
undefined4 uVar1;
undefined local_11 [5];
int local_c;
local_c = DAT_8f731d80;
local_11[0] = param_2;
if (DAT_8f724258 == 0) {
uVar1 = 0xffffffff;
}
else {
FUN_8f614a7c(*(undefined4 *)(&DAT_8f72425c + param_1 * 4),local_11,1);
uVar1 = 0;
}
if (local_c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar1);
}
// WARNING: Removing unreachable block (ram,0x8f614eb8)
void FUN_8f614e7c(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f614ef8)
void FUN_8f614ebc(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f614f38)
void FUN_8f614efc(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f614f78)
void FUN_8f614f3c(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f614fb8)
void FUN_8f614f7c(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f614ff8)
void FUN_8f614fbc(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6150ac)
void FUN_8f614ffc(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6150ec)
void FUN_8f6150b0(void)
{
return;
}
void FUN_8f6150f0(void)
{
int iVar1;
undefined4 uVar2;
int iVar3;
int iVar4;
undefined auStack_64 [24];
int iStack_4c;
int local_40;
int local_38;
int local_1c;
local_1c = DAT_8f731d80;
iVar1 = FUN_8f6055b0();
if (iVar1 == 0) {
FUN_8f63cce8();
}
iVar1 = FUN_8f605710();
if (iVar1 != 0) {
iVar4 = 0;
iVar3 = 0;
do {
while (FUN_8f6056c0(auStack_64,iVar3), local_40 != 0xe) {
iVar3 = iVar3 + 1;
if (iVar3 == iVar1) goto LAB_8f615170;
}
iVar3 = iVar3 + 1;
if (local_38 == 1) {
iVar4 = iVar4 + iStack_4c;
}
} while (iVar3 != iVar1);
LAB_8f615170:
if (iVar4 == 0x20000000) {
uVar2 = 1;
goto LAB_8f615180;
}
}
uVar2 = 0;
LAB_8f615180:
if (local_1c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
void FUN_8f6151c8(void)
{
int iVar1;
int iVar2;
int iVar3;
uint uVar4;
uint uVar5;
undefined *puVar6;
undefined *puVar7;
undefined4 *puVar8;
bool bVar9;
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_8f731d80;
iVar1 = FUN_8f605260(0x89,&local_24c,4,0);
if (iVar1 == 0) {
uVar5 = local_24c & 0xffff;
DAT_8f72426e = (undefined2)uVar5;
DAT_8f72426c = (undefined2)(local_24c >> 0x10);
if (local_24c >> 0x10 == 0) {
if (uVar5 == 6) {
iVar1 = FUN_8f6050e8(0x89,auStack_248,0x48);
if (iVar1 != 0) goto LAB_8f61528c;
DAT_8f7179c0 = local_244;
DAT_8f7179cc = local_240;
DAT_8f7179d0 = local_214;
DAT_8f7179d4 = local_208;
}
else if (uVar5 == 7) {
iVar1 = FUN_8f6050e8(0x89,auStack_200,0x50);
if (iVar1 != 0) goto LAB_8f61528c;
DAT_8f7179e0 = uStack_1bc;
DAT_8f7179e4 = uStack_1b8;
DAT_8f7179c0 = local_1fc;
DAT_8f7179cc = local_1f8;
DAT_8f7179d0 = local_1cc;
DAT_8f7179d4 = local_1c0;
}
else if (uVar5 == 8) {
iVar1 = FUN_8f6050e8(0x89,auStack_1b0,0x5c);
if (iVar1 != 0) goto LAB_8f61528c;
DAT_8f7179d8 = local_178 & 0xff0000 | local_170 << 0x18 | local_17c & 0xff |
(local_178 & 0xff) << 8;
DAT_8f7179d0 = local_17c;
DAT_8f7179d4 = local_170;
DAT_8f7179c0 = local_1ac;
DAT_8f7179cc = local_1a8;
puVar6 = auStack_1b0;
puVar8 = &DAT_8f7179c0;
do {
uVar4 = *(uint *)(puVar6 + 0x48);
puVar7 = puVar6 + 8;
uVar5 = *(uint *)(puVar6 + 0x44);
bVar9 = uVar5 != 0x7fffffff;
puVar8[8] = uVar5;
if (bVar9) {
uVar5 = uVar5 & 0xff;
}
puVar8[9] = uVar4;
if (!bVar9) {
uVar5 = 0;
}
puVar8[10] = (uVar4 & 0xff) << 8 | uVar4 & 0xff0000 | uVar5;
puVar6 = puVar7;
puVar8 = puVar8 + 3;
} while (puVar7 != auStack_198);
}
else if (uVar5 == 9) {
iVar1 = FUN_8f6050e8(0x89,auStack_154,0x60);
if (iVar1 != 0) goto LAB_8f61528c;
DAT_8f7179d8 = local_11c & 0xff0000 | local_114 << 0x18 | local_120 & 0xff |
(local_11c & 0xff) << 8;
DAT_8f7179d0 = local_120;
DAT_8f7179d4 = local_114;
DAT_8f7179c0 = local_150;
DAT_8f7179cc = local_14c;
puVar6 = auStack_154;
puVar8 = &DAT_8f7179c0;
do {
uVar4 = *(uint *)(puVar6 + 0x48);
puVar7 = puVar6 + 8;
uVar5 = *(uint *)(puVar6 + 0x44);
bVar9 = uVar5 != 0x7fffffff;
puVar8[8] = uVar5;
if (bVar9) {
uVar5 = uVar5 & 0xff;
}
puVar8[9] = uVar4;
if (!bVar9) {
uVar5 = 0;
}
puVar8[10] = (uVar4 & 0xff) << 8 | uVar4 & 0xff0000 | uVar5;
puVar6 = puVar7;
puVar8 = puVar8 + 3;
} while (puVar7 != auStack_13c);
DAT_8f7179c4 = local_110[6];
}
else if (uVar5 == 10) {
iVar1 = FUN_8f6050e8(0x89,auStack_f4,100);
if (iVar1 != 0) goto LAB_8f61528c;
DAT_8f7179d8 = local_bc & 0xff0000 | local_b4 << 0x18 | local_c0 & 0xff |
(local_bc & 0xff) << 8;
DAT_8f7179d0 = local_c0;
DAT_8f7179d4 = local_b4;
DAT_8f7179c0 = local_f0;
DAT_8f7179cc = local_ec;
puVar6 = auStack_f4;
puVar8 = &DAT_8f7179c0;
do {
uVar4 = *(uint *)(puVar6 + 0x48);
puVar7 = puVar6 + 8;
uVar5 = *(uint *)(puVar6 + 0x44);
bVar9 = uVar5 != 0x7fffffff;
puVar8[8] = uVar5;
if (bVar9) {
uVar5 = uVar5 & 0xff;
}
puVar8[9] = uVar4;
if (!bVar9) {
uVar5 = 0;
}
puVar8[10] = (uVar4 & 0xff) << 8 | uVar4 & 0xff0000 | uVar5;
puVar6 = puVar7;
puVar8 = puVar8 + 3;
} while (puVar7 != auStack_dc);
DAT_8f7179c4 = local_b0[6];
DAT_8f7179c8 = local_94;
}
else if (10 < uVar5) {
iVar1 = FUN_8f6050e8(0x89,auStack_90,0x6c);
if (iVar1 != 0) goto LAB_8f61528c;
DAT_8f7179d4 = local_50;
DAT_8f7179d0 = local_5c;
DAT_8f7179c0 = local_8c;
DAT_8f7179cc = local_88;
DAT_8f7179c4 = local_34;
DAT_8f7179c8 = local_30;
DAT_8f717a14 = local_2c;
DAT_8f717a18 = local_28;
DAT_8f7179d8 = local_58 & 0xff0000 | local_50 << 0x18 | local_5c & 0xff |
(local_58 & 0xff) << 8;
}
iVar1 = FUN_8f6150f0();
iVar2 = FUN_8f625d80();
iVar3 = FUN_8f625db8();
DAT_8f717a10 = iVar1 << 8 | iVar2 << 0x10 | iVar3 << 0xb;
}
else {
FUN_8f63cbb4(s_Unsupported_board_info_format__u_8f667244);
FUN_8f63cce8();
}
}
LAB_8f61528c:
if (local_24 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f615640(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f6151c8();
FUN_8f6005d8(&DAT_8f7179c0);
if (iVar1 == DAT_8f731d80) {
FUN_8f60060c(&DAT_8f7179c0);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f615690(int param_1,int param_2,uint param_3,byte *param_4)
{
byte bVar1;
int iVar2;
uint uVar3;
uint *puVar4;
uint uVar5;
uint uVar6;
uint uStack_38;
uint local_34 [4];
int local_24;
iVar2 = DAT_8f731d80;
uVar6 = (uint)*param_4;
puVar4 = &uStack_38;
local_34[0] = DAT_8f66726c;
local_34[1] = DAT_8f667270;
local_34[2] = DAT_8f667274;
local_34[3] = DAT_8f667278;
local_24 = DAT_8f731d80;
if (uVar6 < param_3) {
uVar5 = 0;
do {
bVar1 = *(byte *)(param_1 + uVar6);
puVar4 = puVar4 + 1;
uVar3 = *puVar4;
uVar6 = uVar6 + 1 & 0xff;
*param_4 = (byte)uVar6;
uVar5 = uVar5 | (uint)bVar1 << (uVar3 & 0xff);
if (param_3 <= uVar6) break;
} while (puVar4 != local_34 + 3);
}
else {
uVar5 = 0;
}
*(uint *)(DAT_8f724278 * 0x8000 + 0x2400010 + param_2 * 4) = uVar5;
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f615750(int param_1,int param_2,uint param_3,byte *param_4)
{
uint *puVar1;
byte *pbVar2;
int iVar3;
uint uVar4;
uint uVar5;
int iVar6;
uint local_40 [4];
undefined4 local_30;
int local_2c;
iVar3 = DAT_8f731d80;
local_40[0] = *(uint *)PTR_DAT_8f615810;
local_40[1] = *(undefined4 *)(PTR_DAT_8f615810 + 4);
local_40[2] = *(undefined4 *)(PTR_DAT_8f615810 + 8);
local_40[3] = *(undefined4 *)(PTR_DAT_8f615810 + 0xc);
iVar6 = 0;
local_2c = DAT_8f731d80;
uVar5 = (uint)*param_4;
uVar4 = *(uint *)(DAT_8f724278 * 0x8000 + 0x2c00018 + param_2 * 4);
local_30 = *(undefined4 *)(PTR_DAT_8f615810 + 0x10);
do {
if (param_3 <= uVar5) break;
puVar1 = local_40 + iVar6;
pbVar2 = (byte *)((int)&local_30 + iVar6);
iVar6 = iVar6 + 1;
*(char *)(param_1 + uVar5) = (char)((uVar4 & *puVar1) >> (uint)*pbVar2);
uVar5 = *param_4 + 1 & 0xff;
*param_4 = (byte)uVar5;
} while (iVar6 != 4);
if (iVar3 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f615814(undefined4 param_1,undefined4 param_2)
{
int iVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
undefined4 uVar5;
int *piVar6;
int iVar7;
iVar3 = DAT_8f731d80;
DAT_8f724270 = _DAT_0200f000;
DAT_8f724280 = FUN_8f603b30();
uVar4 = param_2;
uVar5 = param_1;
if (0x2000ffff < DAT_8f724270) {
DAT_8f724284 = FUN_8f63e114(0x1000);
if (DAT_8f724284 == 0) {
FUN_8f63cce8();
}
iVar2 = DAT_8f724284;
iVar1 = DAT_8f724280;
uVar4 = DAT_8f724274;
uVar5 = DAT_8f724278;
if (DAT_8f724280 != 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_8f724274;
uVar5 = DAT_8f724278;
} while (iVar7 != iVar1);
}
}
DAT_8f724278 = uVar5;
DAT_8f724274 = uVar4;
DAT_8f72427c = 1;
if (iVar3 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f615944(undefined *param_1,undefined4 *param_2)
{
int iVar1;
uint uVar2;
uint uVar3;
uint local_20;
int local_1c;
uVar3 = DAT_8f724278;
local_1c = DAT_8f731d80;
local_20 = 0;
if (DAT_8f724270 < 0x20010000) {
iVar1 = DAT_8f724278 * 0x8000;
*(undefined4 *)(iVar1 + 0x2400004) = 0;
if (param_1 == (undefined *)0x0) {
FUN_8f63cbb4(s_PMIC_arbiter_error__no_command_p_8f6672b8);
uVar3 = 1;
goto LAB_8f615a48;
}
}
else {
uVar3 = (uint)*(byte *)(DAT_8f724284 + (uint)CONCAT11(param_1[2],param_1[3]));
iVar1 = uVar3 * 0x8000;
DAT_8f724278 = uVar3;
*(undefined4 *)(iVar1 + 0x2400004) = 0;
}
FUN_8f615690(*param_2,0,*(undefined *)(param_2 + 1),&local_20);
uVar2 = (uint)*(byte *)(param_2 + 1);
if (local_20 < uVar2) {
FUN_8f615690(*param_2,1,uVar2,&local_20);
uVar2 = (uint)*(byte *)(param_2 + 1);
}
uVar2 = uVar2 - 1 & 0xff;
param_1[5] = (char)uVar2;
*param_1 = 0;
*(uint *)((uVar3 + 0x480) * 0x8000) =
(uint)(byte)param_1[1] << 0x1a | (uint)(byte)param_1[4] << 4 | uVar2;
do {
} while (*(uint *)(iVar1 + 0x2400008) == 0);
uVar3 = *(uint *)(iVar1 + 0x2400008) ^ 1;
if (uVar3 != 0) {
FUN_8f63cbb4(s_SPMI_write_command_failure__cmd__8f6672e4,*param_1,uVar3);
}
LAB_8f615a48:
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
void FUN_8f615ab0(undefined *param_1,undefined4 *param_2)
{
int iVar1;
byte bVar2;
uint uVar3;
byte local_15;
int local_14;
local_15 = 0;
local_14 = DAT_8f731d80;
if (0x2000ffff < DAT_8f724270) {
DAT_8f724278 = (uint)*(byte *)(DAT_8f724284 + (uint)CONCAT11(param_1[2],param_1[3]));
}
iVar1 = DAT_8f724278 * 0x8000;
*(undefined4 *)(iVar1 + 0x2c00004) = 0;
bVar2 = *(byte *)(param_2 + 1);
*param_1 = 1;
uVar3 = bVar2 - 1 & 0xff;
param_1[5] = (char)uVar3;
*(uint *)(iVar1 + 0x2c00000) =
(uint)(byte)param_1[4] << 4 | (uint)(byte)param_1[1] << 0x1a | 0x8000000 | uVar3;
do {
} while (*(uint *)(iVar1 + 0x2c00008) == 0);
uVar3 = *(uint *)(iVar1 + 0x2c00008) ^ 1;
if (uVar3 == 0) {
FUN_8f615750(*param_2,0,*(undefined *)(param_2 + 1),&local_15);
if (local_15 < *(byte *)(param_2 + 1)) {
FUN_8f615750(*param_2,1,*(byte *)(param_2 + 1),&local_15);
if (local_15 < *(byte *)(param_2 + 1)) {
FUN_8f615750(*param_2,2,*(byte *)(param_2 + 1),&local_15);
goto LAB_8f615b7c;
}
}
uVar3 = 0;
}
else {
FUN_8f63cbb4(s_SPMI_read_command_failure__cmd_i_8f66731c,*param_1,uVar3);
}
LAB_8f615b7c:
if (local_14 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
return;
}
void FUN_8f615c1c(undefined4 param_1)
{
undefined local_1d;
undefined uStack_1c;
undefined local_1b;
undefined local_1a;
undefined local_19;
undefined local_18;
undefined *local_14;
undefined local_10;
int local_c;
local_18 = (undefined)param_1;
local_19 = (undefined)((uint)param_1 >> 8);
local_c = DAT_8f731d80;
local_14 = &local_1d;
local_1a = (undefined)((uint)param_1 >> 0x10);
local_1d = 0;
local_1b = 0;
local_10 = 1;
FUN_8f615ab0(&uStack_1c,&local_14);
if (local_c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(local_1d);
}
void FUN_8f615c94(undefined4 param_1,undefined param_2)
{
undefined local_21 [5];
undefined uStack_1c;
undefined local_1b;
undefined local_1a;
undefined local_19;
undefined local_18;
undefined *local_14;
undefined local_10;
int local_c;
local_18 = (undefined)param_1;
local_c = DAT_8f731d80;
local_19 = (undefined)((uint)param_1 >> 8);
local_14 = local_21;
local_1a = (undefined)((uint)param_1 >> 0x10);
local_10 = 1;
local_1b = 0;
local_21[0] = param_2;
FUN_8f615944(&uStack_1c,&local_14);
if (local_c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f615d08(undefined4 param_1,uint param_2,uint param_3)
{
int iVar1;
uint uVar2;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f615c1c();
if (iVar1 == DAT_8f731d80) {
FUN_8f615c94(param_1,uVar2 & ~param_2 & 0xff | param_2 & param_3);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f615da0)
void FUN_8f615d64(void)
{
return;
}
void FUN_8f615ddc(int *param_1,int param_2)
{
int iVar1;
iVar1 = DAT_8f731d80;
*(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;
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f615e48(int *param_1,int param_2,uint param_3)
{
int iVar1;
uint uVar2;
uint uVar3;
uint uVar4;
int iVar5;
iVar1 = DAT_8f731d80;
uVar3 = (uint)*(byte *)((int)param_1 + (param_2 + 1) * 0x18 + 2);
iVar5 = *param_1 + uVar3 * 0x1000;
while( true ) {
do {
} while ((*(uint *)(*param_1 + (param_1[0x15] + 3) * 0x1000) & 1 << uVar3 & 0x7fffU) == 0);
uVar4 = *(uint *)(iVar5 + 0x13010);
uVar2 = uVar4 & 0x10;
if (uVar2 != 0) break;
if ((uVar4 & param_3) != 0) {
*(undefined4 *)(iVar5 + 0x13014) = 0x29;
LAB_8f615ec0:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
}
FUN_8f63cbb4(s_Unexpected_interrupt___val__u_8f667354);
uVar2 = 1;
goto LAB_8f615ec0;
}
void FUN_8f615ef0(int *param_1,int param_2)
{
int iVar1;
iVar1 = DAT_8f731d80;
*(undefined4 *)
(*param_1 + 0x13018 + (uint)*(byte *)((int)param_1 + param_2 * 0x18 + 0x1a) * 0x1000) = 0x19;
*(uint *)(*param_1 + 0x3004 + param_1[0x15] * 0x1000) =
*(uint *)(*param_1 + 0x3004 + param_1[0x15] * 0x1000) |
1 << *(sbyte *)((int)param_1 + param_2 * 0x18 + 0x1a);
if (*(char *)(param_1 + param_2 * 6 + 7) == '\0') {
if (iVar1 == DAT_8f731d80) {
return;
}
}
else {
FUN_8f614198(*(undefined *)((int)param_1 + param_2 * 0x18 + 0x1b),&DAT_8f615da4,0);
if (iVar1 == DAT_8f731d80) {
FUN_8f614160(*(undefined *)((int)param_1 + param_2 * 0x18 + 0x1b));
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f615fa8(int *param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
if (*(byte *)((int)param_1 + 9) < 2) {
*(uint *)(*param_1 + 8) = (uint)*(ushort *)(param_1 + 0x14);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f615ff0(int *param_1,int param_2)
{
byte bVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
uint uVar5;
iVar2 = DAT_8f731d80;
if (*(short *)(param_1 + param_2 * 6 + 5) < 0) {
FUN_8f63cbb4(s_Size_exceeds_max_size_for_a_desc_8f667374);
uVar4 = 1;
}
else {
iVar3 = FUN_8f603a60(param_1[param_2 * 6 + 3] & 7);
if (iVar3 != 0) {
FUN_8f63cce8();
}
uVar5 = (uint)*(ushort *)(param_1 + param_2 * 6 + 5);
if ((uVar5 - 1 & uVar5) != 0) {
FUN_8f63cce8();
uVar5 = (uint)*(ushort *)(param_1 + param_2 * 6 + 5);
}
iVar3 = *param_1;
param_1[param_2 * 6 + 4] = param_1[param_2 * 6 + 3];
*(uint *)(iVar3 + 0x13820 + (uint)*(byte *)((int)param_1 + param_2 * 0x18 + 0x1a) * 0x1000) =
uVar5 << 3;
iVar3 = *param_1;
bVar1 = *(byte *)((int)param_1 + param_2 * 0x18 + 0x1a);
uVar4 = FUN_8f603a60();
*(undefined4 *)(iVar3 + 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 (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar4);
}
void FUN_8f616160(int *param_1,int param_2)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
*(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_8f615ef0();
*(uint *)(*param_1 + (*(byte *)((int)param_1 + param_2 * 0x18 + 0x1a) + 0x13) * 0x1000) =
(uint)*(byte *)((int)param_1 + param_2 * 0x18 + 9) << 3 |
(uint)*(byte *)((int)param_1 + param_2 * 0x18 + 0x1e) << 0x10 | 0x20;
iVar2 = DAT_8f731d80;
*(undefined *)((int)param_1 + param_2 * 0x18 + 0x1d) = 0;
if (iVar1 == iVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6161fc(int *param_1,int param_2,uint param_3)
{
int iVar1;
uint uVar2;
iVar1 = DAT_8f731d80;
if (*(ushort *)(param_1 + param_2 * 6 + 5) <= param_3) {
FUN_8f63cbb4(s_Max_allowed_desc_is_one_less_tha_8f667428);
return;
}
uVar2 = (uint)*(byte *)((int)param_1 + (param_2 + 1) * 0x18 + 2);
*(uint *)(*param_1 + 0x13818 + uVar2 * 0x1000) =
*(int *)(*param_1 + 0x13818 + uVar2 * 0x1000) + param_3 * 8 &
(uint)*(ushort *)(param_1 + param_2 * 6 + 5) * 8 - 1;
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f6162e8)
void FUN_8f61629c(void)
{
return;
}
void FUN_8f6162ec(int param_1,int param_2,int param_3,uint param_4,byte param_5)
{
int iVar1;
undefined4 uVar2;
int iVar3;
int *piVar4;
int *piVar5;
iVar1 = DAT_8f731d80;
iVar3 = param_1 + param_2 * 0x18;
piVar5 = *(int **)(iVar3 + 0x10);
if (param_4 == 0 || param_3 == 0) {
FUN_8f63cbb4(s_Wrong_params_for_BAM_transfer_8f66745c);
uVar2 = 1;
}
else if (*(char *)(iVar3 + 0x1d) == '\0') {
FUN_8f63cbb4(s_Please_allocate_the_FIFO_for_the_8f66747c,*(undefined *)(iVar3 + 0x1a));
uVar2 = 1;
}
else if ((param_5 & 6) == 6) {
FUN_8f63cbb4(s_Can_t_lock_and_unlock_in_the_sam_8f6674ac);
uVar2 = 1;
}
else if ((param_5 & 0x48) == 0x48) {
FUN_8f63cbb4(s_EOT_flag_set_on_the_CMD_desc_8f6674d4);
uVar2 = 1;
}
else if (*(ushort *)(param_1 + 0x58) < param_4) {
FUN_8f63cbb4(s_len_of_the_desc_exceeds_max_leng_8f6674f4,param_4,
(uint)*(ushort *)(param_1 + 0x58));
uVar2 = 1;
}
else {
*(byte *)((int)piVar5 + 7) = param_5;
iVar3 = param_1 + param_2 * 0x18 + 8;
*piVar5 = param_3;
*(short *)(piVar5 + 1) = (short)param_4;
*(bool *)((int)piVar5 + 6) = param_4 == 0 || param_3 == 0;
FUN_8f6254b4(piVar5,8);
piVar4 = *(int **)(iVar3 + 4);
uVar2 = 0;
if ((uint)(((int)piVar5 - (int)piVar4) * 0x2000) >> 0x10 != *(ushort *)(iVar3 + 0xc) - 1) {
piVar4 = piVar5 + 2;
}
*(int **)(param_1 + param_2 * 0x18 + 0x10) = piVar4;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
void FUN_8f616444(int param_1,uint param_2,int param_3,uint param_4,undefined param_5)
{
int iVar1;
undefined4 uVar2;
uint uVar3;
uint uVar4;
uint uVar5;
iVar1 = DAT_8f731d80;
uVar4 = (uint)(param_3 == 0 || param_4 == 0);
if (param_3 == 0 || param_4 == 0) {
FUN_8f63cbb4(s_Wrong_params_for_BAM_transfer_8f66745c);
uVar2 = 1;
}
else {
uVar3 = (uint)*(ushort *)(param_1 + 0x58);
if (*(ushort *)(param_1 + param_2 * 0x18 + 0x14) * uVar3 < param_4) {
FUN_8f63cbb4(s_Data_transfer_exceeds_desc_fifo_l_8f667520);
uVar2 = 1;
}
else {
uVar5 = uVar4;
if (uVar3 < param_4) {
do {
param_4 = param_4 - uVar3;
uVar5 = uVar5 + 1;
FUN_8f6162ec(param_1,param_2,param_3,uVar3,uVar4);
uVar3 = (uint)*(ushort *)(param_1 + 0x58);
param_3 = param_3 + uVar3;
if (param_4 == 0) goto LAB_8f616500;
} while (uVar3 < param_4);
}
uVar5 = uVar5 + 1;
FUN_8f6162ec(param_1,param_2,param_3,param_4,param_5);
LAB_8f616500:
FUN_8f6161fc(param_1,param_2 & 0xff,uVar5);
uVar2 = 0;
}
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
void FUN_8f616558(uint *param_1,uint param_2,uint param_3,int param_4)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
*param_1 = param_2 & 0xffffff | param_4 << 0x18;
param_1[1] = param_3;
iVar2 = DAT_8f731d80;
*(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_8f63cd70();
}
void FUN_8f6165b8(undefined4 *param_1,int param_2)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f616558(param_2,DAT_8f7242dc + 4,*param_1,0);
FUN_8f616558(param_2 + 0x10,DAT_8f7242dc + 8,param_1[1],0);
FUN_8f616558(param_2 + 0x20,DAT_8f7242dc + 0x20,param_1[2],0);
FUN_8f616558(param_2 + 0x30,DAT_8f7242dc + 0x24,param_1[3],0);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(param_2 + 0x40);
}
void FUN_8f616660(undefined4 param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f6161fc(&DAT_8f7242f8,2,param_1);
FUN_8f615e48(&DAT_8f7242f8,2,1);
if (iVar1 == DAT_8f731d80) {
FUN_8f61629c(&DAT_8f7242f8,2);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6166cc(uint param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f615e48(&DAT_8f7242f8,param_1 & 0xff,1);
if (iVar1 == DAT_8f731d80) {
FUN_8f61629c(&DAT_8f7242f8,param_1);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f616728(undefined4 param_1,uint param_2)
{
undefined4 uVar1;
undefined4 local_18;
int local_14;
local_14 = DAT_8f731d80;
uVar1 = FUN_8f603a60(&local_18);
FUN_8f616558(&DAT_8f732500,param_1,uVar1,1);
uVar1 = FUN_8f603a60(&DAT_8f732500);
FUN_8f6162ec(&DAT_8f7242f8,2,uVar1,0x10,param_2 | 0x88);
FUN_8f616660(1);
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(local_18);
}
void FUN_8f6167bc(undefined4 param_1,uint param_2)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f616558(param_1,DAT_8f7242dc + 0xe8,1,0);
FUN_8f6162ec(&DAT_8f7242f8,2,param_1,0x10,param_2 | 0x88);
FUN_8f616660(1);
FUN_8f616558(param_1,DAT_8f7242dc + 0xe8,2,0);
FUN_8f6162ec(&DAT_8f7242f8,2,param_1,0x10,0x88);
if (iVar1 == DAT_8f731d80) {
FUN_8f616660(1);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f61687c(uint param_1)
{
int iVar1;
uint uVar2;
iVar1 = DAT_8f731d80;
if (((param_1 & 0x10) != 0) && (uVar2 = FUN_8f616728(DAT_8f7242dc + 0xec,0), (uVar2 & 0x80) != 0))
{
param_1 = param_1 & 0xffffffef;
FUN_8f6167bc(&DAT_8f731ec0,0);
}
uVar2 = param_1 & 0x150;
if (uVar2 != 0) {
FUN_8f63cbb4(s_Nand_Flash_error__Status____d_8f66754c,param_1);
if ((param_1 & 0x40) == 0) {
uVar2 = 1;
}
else {
uVar2 = 2;
}
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
void FUN_8f616918(int param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f6165b8();
FUN_8f616558(iVar2,DAT_8f7242dc,*(undefined4 *)(param_1 + 0x10),0);
FUN_8f616558(iVar2 + 0x10,DAT_8f7242dc + 0x10,*(undefined4 *)(param_1 + 0x1c),0);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2 + 0x20);
}
void FUN_8f61698c(int param_1,undefined4 param_2)
{
int iVar1;
int iVar2;
undefined4 uVar3;
iVar2 = DAT_8f731d80;
iVar1 = DAT_8f7242dc;
uVar3 = FUN_8f603a60(param_2);
FUN_8f616558(param_1,iVar1 + 0x14,uVar3,1);
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(param_1 + 0x10);
}
void FUN_8f6169f4(int param_1,int param_2)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
FUN_8f616558(param_1,DAT_8f7242dc + 0x14,0x20,0);
iVar2 = param_1 + 0x10;
if (param_2 != 0) {
FUN_8f616558(iVar2,DAT_8f7242dc + 0x44,0xc0,0);
iVar2 = param_1 + 0x20;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f616a70(int param_1,int param_2)
{
int iVar1;
undefined4 uVar2;
iVar1 = DAT_8f731d80;
FUN_8f616558(param_2,DAT_8f7242dc + 0x28,*(undefined4 *)(param_1 + 0x14),0);
uVar2 = FUN_8f616558(param_2 + 0x10,DAT_8f7242dc + 0xf20,*(undefined4 *)(param_1 + 0x18),0);
if (iVar1 == DAT_8f731d80) {
FUN_8f616918(param_1);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2,param_2 + 0x20);
}
void FUN_8f616af0(int param_1)
{
int iVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
uint uVar5;
undefined uVar6;
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_8f731d80;
iVar1 = FUN_8f66024c(param_1,DAT_8f7242b0);
if (*(char *)(DAT_8f7242f4 + iVar1) != '\x02') {
if (*(char *)(DAT_8f7242f4 + iVar1) == '\x01') {
iVar2 = 6;
goto LAB_8f616b44;
}
local_40 = DAT_8f7242f0 & 0xfffffe3f;
local_3c = DAT_8f7242d4;
local_48 = DAT_8f7242c4 << 9 | param_1 << 0x10;
iVar2 = 1;
local_34 = DAT_8f72435c | 1;
local_44 = (uint)(param_1 << 8) >> 0x18;
local_38 = 0x33;
local_30 = 0x80040000;
local_2c = 1;
iVar3 = FUN_8f616a70(&local_48,&DAT_8f731ec0);
uVar4 = FUN_8f603a60(iVar3 + 0x708ce140);
FUN_8f6162ec(&DAT_8f7242f8,2,&DAT_8f731ec0,uVar4,0x9c);
uVar4 = FUN_8f603a60(&local_28);
FUN_8f616444(&DAT_8f7242f8,1,uVar4,4,0x80);
FUN_8f616660(1);
uVar5 = FUN_8f616728(DAT_8f7242dc + 0x14,0);
if ((uVar5 & 0x150) == 0) {
FUN_8f616728(DAT_8f7242dc + 0x14,2);
}
else {
iVar3 = FUN_8f61687c();
FUN_8f616728(DAT_8f7242dc + 0x14,2);
if (iVar3 != 0) {
FUN_8f63cbb4(s_Could_not_read_bad_block_value_8f66756c);
goto LAB_8f616b44;
}
}
FUN_8f6166cc(1);
if (DAT_8f7242b8 == 0) {
if (local_28 == -1) {
uVar6 = 2;
iVar2 = DAT_8f7242b8;
}
else {
uVar6 = 1;
iVar2 = 6;
}
*(undefined *)(DAT_8f7242f4 + iVar1) = uVar6;
goto LAB_8f616b44;
}
if ((local_28 != -1) && (local_27 != -1)) {
iVar2 = 6;
*(undefined *)(DAT_8f7242f4 + iVar1) = 1;
goto LAB_8f616b44;
}
}
iVar2 = 0;
LAB_8f616b44:
if (local_24 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
return;
}
void FUN_8f616d00(int param_1,int param_2,undefined4 param_3)
{
undefined4 uVar1;
uint uVar2;
undefined4 uVar3;
undefined4 uVar4;
undefined4 uVar5;
int iVar6;
byte *pbVar7;
int iVar8;
byte *pbVar9;
byte *pbVar10;
uint uVar12;
uint uVar13;
undefined *puVar14;
uint uVar15;
undefined *puVar16;
undefined *puVar17;
undefined *puVar18;
undefined4 *puVar19;
byte *pbVar20;
undefined4 in_lr;
bool bVar21;
byte *local_170;
undefined *local_16c;
undefined *local_168;
int local_164;
int local_134;
uint local_130;
undefined4 local_12c;
undefined4 local_128;
undefined4 local_124;
undefined4 local_118;
int local_114;
uint local_110;
undefined4 local_10c;
undefined4 local_108;
undefined4 local_104;
undefined4 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;
byte *pbVar11;
uVar1 = DAT_8f72435c;
uVar12 = DAT_8f7242c4;
iVar8 = param_1 << 0x10;
uVar15 = (uint)(param_1 << 8) >> 0x18;
local_2c = DAT_8f731d80;
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_8f724360;
local_128 = DAT_8f7242ec;
local_124 = 0x33;
local_118 = 1;
local_134 = iVar8;
local_130 = uVar15;
uVar2 = FUN_8f616af0();
if (uVar2 == 0) {
FUN_8f6167bc(&DAT_8f731ec0,4);
if (DAT_8f7242c4 != 0) {
local_168 = &DAT_8f731ec0;
uVar12 = (uVar12 - 1) * 4 & 0xffff;
uVar13 = uVar12 + 4 & 0xffff;
uVar12 = 0x200 - uVar12 & 0xffff;
local_164 = -0x7dfc0000;
puVar16 = &DAT_8f731ec0;
puVar19 = &local_cc;
do {
puVar14 = puVar16;
if (uVar2 == 0) {
iVar6 = FUN_8f6165b8(&local_134,puVar16);
puVar16 = (undefined *)(iVar6 + 0x10);
FUN_8f616558(iVar6,DAT_8f7242dc + 0x28,uVar1,0);
puVar14 = local_168;
}
local_168 = puVar14;
FUN_8f616558(puVar16,DAT_8f7242dc,local_124,0);
if (DAT_8f7242c4 - 1 == uVar2) {
puVar14 = puVar16 + 0x20;
FUN_8f616558(puVar16 + 0x10,DAT_8f7242dc + 0xf24,uVar12 | 0x80000000 | uVar13 << 0x10,0);
uVar3 = FUN_8f603a60(param_2);
FUN_8f6162ec(&DAT_8f7242f8,1,uVar3,uVar12,0);
uVar3 = FUN_8f603a60(param_3);
FUN_8f6162ec(&DAT_8f7242f8,1,uVar3,uVar13,0x80);
FUN_8f6161fc(&DAT_8f7242f8,1,2);
local_164 = uVar12 << 0x10;
}
else {
uVar3 = FUN_8f603a60(param_2);
FUN_8f6162ec(&DAT_8f7242f8,1,uVar3,0x204,0);
FUN_8f6161fc(&DAT_8f7242f8,1,1);
puVar14 = puVar16 + 0x10;
}
puVar18 = puVar14 + 0x20;
FUN_8f616558(puVar14,DAT_8f7242dc + 0xf20,local_164,0);
FUN_8f616558(puVar14 + 0x10,DAT_8f7242dc + 0x10,local_118,0);
puVar16 = puVar14 + 0x50;
param_2 = param_2 + 0x204;
uVar3 = FUN_8f603a60((int)puVar18 - (int)local_168);
FUN_8f6162ec(&DAT_8f7242f8,2,local_168,uVar3,0x18);
iVar6 = DAT_8f7242dc + 0x14;
uVar3 = FUN_8f603a60();
FUN_8f616558(puVar18,iVar6,uVar3,1);
iVar6 = DAT_8f7242dc + 0x18;
uVar3 = FUN_8f603a60(puVar19);
FUN_8f616558(puVar14 + 0x30,iVar6,uVar3,1);
iVar6 = DAT_8f7242dc + 0xec;
uVar3 = FUN_8f603a60();
FUN_8f616558(puVar14 + 0x40,iVar6,uVar3,1);
bVar21 = DAT_8f7242c4 - 1 == uVar2;
uVar2 = uVar2 + 1;
if (bVar21) {
uVar3 = 10;
}
else {
uVar3 = 8;
}
uVar4 = FUN_8f603a60(puVar18);
uVar5 = FUN_8f603a60((int)puVar16 - (int)puVar18);
FUN_8f6162ec(&DAT_8f7242f8,2,uVar4,uVar5,uVar3);
FUN_8f6161fc(&DAT_8f7242f8,2,2);
puVar19 = puVar19 + 1;
} while (uVar2 < DAT_8f7242c4);
}
FUN_8f6166cc(1);
uVar2 = DAT_8f7242c4;
if (DAT_8f7242c4 != 0) {
iVar6 = 0;
uVar12 = 0;
do {
if (((*(uint *)((int)local_f4 + iVar6) & 0x110) != 0) &&
((*(uint *)((int)local_a4 + iVar6) & 0x50) != 0x50)) {
iVar6 = DAT_8f7242d8 * DAT_8f7242c4;
pbVar7 = (byte *)FUN_8f63e150(0x10,iVar6);
if (pbVar7 == (byte *)0x0) {
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_qpic_nand_c_8f66758c,0x5b3,&DAT_8f6675ac);
}
FUN_8f63e410(pbVar7,0,iVar6);
uVar1 = DAT_8f7242e4;
uVar12 = DAT_8f7242d8 << 0x10;
local_10c = DAT_8f7242f0;
local_108 = DAT_8f7242d4;
local_104 = 0x32;
local_f8 = 1;
local_114 = iVar8;
local_110 = uVar15;
if (DAT_8f7242c4 != 0) {
puVar18 = &DAT_8f731ec0;
local_16c = &DAT_8f731ec0;
uVar2 = 0;
puVar16 = auStack_54;
puVar14 = auStack_7c;
local_170 = pbVar7;
do {
if (uVar2 == 0) {
iVar8 = FUN_8f6165b8(&local_114,puVar18);
puVar18 = (undefined *)(iVar8 + 0x30);
FUN_8f616558(iVar8,DAT_8f7242dc + 0x28,uVar1,0);
FUN_8f616558(iVar8 + 0x10,DAT_8f7242dc,local_104,0);
FUN_8f616558(iVar8 + 0x20,DAT_8f7242dc + 0xf20,uVar12 | 0x80000205,0);
uVar15 = 4;
}
else {
uVar15 = 0;
local_16c = puVar18;
}
puVar17 = puVar18 + 0x10;
if (uVar2 == DAT_8f7242c4 - 1) {
uVar13 = 0x98;
uVar15 = 0x80;
}
else {
uVar13 = uVar15 | 0x18;
}
uVar3 = FUN_8f603a60(local_170);
FUN_8f6162ec(&DAT_8f7242f8,1,uVar3,DAT_8f7242d8,uVar15);
FUN_8f6161fc(&DAT_8f7242f8,1,1);
FUN_8f616558(puVar18,DAT_8f7242dc + 0x10,local_f8,0);
uVar3 = FUN_8f603a60((int)puVar17 - (int)local_16c);
FUN_8f6162ec(&DAT_8f7242f8,2,local_16c,uVar3,uVar13);
iVar8 = DAT_8f7242dc + 0x14;
uVar3 = FUN_8f603a60(puVar14);
FUN_8f616558(puVar17,iVar8,uVar3,1);
iVar8 = DAT_8f7242dc + 0x18;
uVar3 = FUN_8f603a60(puVar16);
FUN_8f616558(puVar18 + 0x20,iVar8,uVar3,1);
puVar18 = puVar18 + 0x30;
bVar21 = uVar2 == DAT_8f7242c4 - 1;
uVar2 = uVar2 + 1;
if (bVar21) {
uVar3 = 10;
}
else {
uVar3 = 8;
}
uVar4 = FUN_8f603a60(puVar17);
uVar5 = FUN_8f603a60((int)puVar18 - (int)puVar17);
FUN_8f6162ec(&DAT_8f7242f8,2,uVar4,uVar5,uVar3);
local_170 = local_170 + DAT_8f7242d8;
FUN_8f6161fc(&DAT_8f7242f8,2,2);
puVar16 = puVar16 + 4;
puVar14 = puVar14 + 4;
} while (uVar2 < DAT_8f7242c4);
}
FUN_8f6166cc(1);
uVar2 = DAT_8f7242c4;
if (DAT_8f7242c4 != 0) {
uVar12 = 0;
pbVar9 = pbVar7;
do {
if (DAT_8f7242d8 != 0) {
pbVar20 = pbVar9 + DAT_8f7242d8;
iVar8 = 0;
pbVar11 = pbVar9;
do {
pbVar10 = pbVar11 + 1;
for (uVar2 = (uint)*pbVar11; uVar2 != 0; uVar2 = uVar2 >> 1) {
if ((uVar2 & 1) == 0) {
iVar8 = iVar8 + 1;
}
if (4 < iVar8) {
uVar2 = 5;
goto LAB_8f6174e4;
}
}
pbVar11 = pbVar10;
pbVar9 = pbVar20;
} while (pbVar10 != pbVar20);
}
uVar12 = uVar12 + 1;
} while (uVar12 != DAT_8f7242c4);
uVar2 = 0;
}
LAB_8f6174e4:
FUN_8f63e200(pbVar7);
goto LAB_8f616e1c;
}
uVar12 = uVar12 + 1;
iVar6 = iVar6 + 4;
} while (uVar12 != DAT_8f7242c4);
uVar2 = 0;
}
}
LAB_8f616e1c:
if (local_2c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
void FUN_8f617544(int param_1,int param_2,uint param_3)
{
int iVar1;
undefined4 uVar2;
undefined4 uVar3;
int extraout_r1;
int iVar4;
int extraout_r1_00;
int extraout_r1_01;
uint uVar5;
uint uVar6;
uint uVar7;
int iVar8;
uint uVar9;
uint uVar10;
int iVar11;
iVar1 = DAT_8f731d80;
uVar5 = DAT_8f7242c4;
if (DAT_8f7242c4 == 0) {
LAB_8f617654:
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(&DAT_8f731d80,iVar1,uVar5);
}
FUN_8f6161fc(&DAT_8f7242f8,0);
return;
}
uVar6 = 0;
iVar4 = param_2;
uVar5 = param_3;
uVar7 = 0;
iVar11 = param_1;
do {
uVar2 = DAT_8f7242c0;
uVar9 = DAT_8f7242c4 - 1;
if (uVar9 == uVar6) {
uVar10 = 0x80;
}
else {
uVar10 = 0;
}
if (param_2 == 0) {
uVar3 = FUN_8f603a60(param_1,iVar4,uVar5);
FUN_8f6162ec(&DAT_8f7242f8,0,uVar3,uVar2,uVar10 | 0x40);
uVar5 = uVar7 + 1;
iVar4 = extraout_r1_00;
if (DAT_8f7242c4 <= uVar6 + 1) goto LAB_8f617654;
}
else {
if (uVar6 < uVar9) {
uVar10 = uVar10 | 0x40;
iVar8 = 0x204;
}
else {
iVar8 = uVar9 * -4 + 0x200;
uVar10 = 0;
}
uVar2 = FUN_8f603a60(iVar11,iVar4,uVar5);
FUN_8f6162ec(&DAT_8f7242f8,0,uVar2,iVar8,uVar10);
uVar9 = DAT_8f7242c4;
uVar5 = uVar7 + 1;
iVar4 = extraout_r1;
if ((DAT_8f7242c4 - 1 == uVar6) && (param_2 == 1)) {
uVar2 = FUN_8f603a60(param_3,extraout_r1,uVar5);
FUN_8f6162ec(&DAT_8f7242f8,0,uVar2,uVar9 << 2,0xc0);
uVar5 = uVar7 + 2;
iVar4 = extraout_r1_01;
}
if (DAT_8f7242c4 <= uVar6 + 1) goto LAB_8f617654;
}
iVar11 = iVar11 + 0x204;
uVar6 = uVar6 + 1;
uVar7 = uVar5;
} while( true );
}
void FUN_8f6176d0(int param_1,int param_2,undefined4 param_3,undefined4 param_4)
{
int iVar1;
undefined4 uVar2;
undefined *puVar3;
uint uVar4;
undefined *puVar5;
uint uVar6;
uint *puVar7;
int iVar8;
int local_84;
int local_74;
uint local_70;
undefined4 local_6c;
undefined4 local_68;
undefined4 local_64;
uint local_58;
uint local_54 [10];
int local_2c;
local_2c = DAT_8f731d80;
if (param_2 == 0) {
local_74 = param_1 << 0x10;
local_64 = 0x36;
local_6c = DAT_8f7242f0;
local_70 = (uint)(param_1 << 8) >> 0x18;
local_68 = DAT_8f7242d4;
local_58 = 1;
FUN_8f617544(param_3,0,param_4);
}
else {
local_64 = 0x36;
local_68 = DAT_8f7242ec;
local_6c = DAT_8f724360;
local_70 = (uint)(param_1 << 8) >> 0x18;
local_74 = param_1 << 0x10;
local_58 = 1;
FUN_8f617544(param_3,param_2,param_4);
uVar6 = DAT_8f72435c;
if (param_2 == 1) goto LAB_8f617758;
}
uVar6 = DAT_8f72435c | 1;
LAB_8f617758:
FUN_8f616558(&DAT_8f731ec0,DAT_8f7242dc + 0x28,uVar6,0);
iVar1 = FUN_8f6165b8(&local_74,&DAT_8f731ed0);
iVar8 = iVar1 + 0x10;
FUN_8f616558(iVar1,DAT_8f7242dc,local_64,0);
uVar2 = FUN_8f603a60(iVar1 + 0x708ce150);
FUN_8f6162ec(&DAT_8f7242f8,2,&DAT_8f731ec0,uVar2,0xc);
if (DAT_8f7242c4 != 0) {
local_84 = 1;
uVar6 = 0;
puVar5 = &DAT_8f732500;
puVar7 = local_54;
while( true ) {
iVar1 = iVar8 + 0x10;
FUN_8f616558(iVar8,DAT_8f7242dc + 0x10,local_58,0);
uVar2 = FUN_8f603a60(0x10);
FUN_8f6162ec(&DAT_8f7242f8,2,iVar8,uVar2,0x18);
puVar3 = (undefined *)FUN_8f61698c(puVar5,puVar7);
uVar2 = FUN_8f603a60((int)puVar3 - (int)puVar5);
FUN_8f6162ec(&DAT_8f7242f8,2,puVar5,uVar2,8);
iVar8 = FUN_8f6169f4(iVar1,uVar6 == DAT_8f7242c4 - 1);
uVar2 = FUN_8f603a60(iVar8 - iVar1);
FUN_8f6162ec(&DAT_8f7242f8,2,iVar1,uVar2,0x88);
FUN_8f616660(local_84 + 3);
uVar4 = *puVar7 & 0x150;
if (uVar4 != 0) {
uVar4 = FUN_8f61687c(*puVar7);
}
uVar6 = uVar6 + 1;
*puVar7 = uVar4;
if (DAT_8f7242c4 <= uVar6) break;
local_84 = 0;
puVar5 = puVar3;
puVar7 = puVar7 + 1;
}
if (DAT_8f7242c4 != 0) {
puVar7 = &local_58;
uVar6 = 0;
do {
puVar7 = puVar7 + 1;
if (((*puVar7 & 0x150) != 0) && (uVar4 = FUN_8f61687c(), uVar4 != 0)) {
uVar4 = uVar4 & 0xff;
FUN_8f63cbb4(s_Failed_to_write_CW__d_for_page____8f6675b4,uVar6,param_1);
goto LAB_8f61795c;
}
uVar6 = uVar6 + 1;
} while (uVar6 < DAT_8f7242c4);
}
}
uVar4 = 0;
LAB_8f61795c:
FUN_8f6166cc(0);
if (local_2c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar4);
}
return;
}
void FUN_8f6179f0(uint param_1)
{
undefined auStack_228 [532];
int local_14;
local_14 = DAT_8f731d80;
FUN_8f63e410(auStack_228,0,0x214);
if ((param_1 & DAT_8f7242b4) != 0) {
param_1 = param_1 & ~DAT_8f7242b4;
}
FUN_8f6176d0(param_1,0,auStack_228,0);
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f617a60(undefined4 param_1)
{
undefined4 uVar1;
int iVar2;
undefined4 uVar3;
uint uVar4;
int iVar5;
uint uVar6;
undefined4 local_4c;
int local_48;
uint local_44;
undefined4 local_40;
undefined4 local_3c;
undefined4 local_30;
int local_2c;
local_2c = DAT_8f731d80;
uVar1 = FUN_8f66024c(param_1,DAT_8f7242b0);
iVar2 = FUN_8f616af0(param_1);
if (iVar2 == 0) {
local_40 = DAT_8f7242ec;
local_44 = DAT_8f724360 & 0xfffffe3f;
local_3c = 0x3a;
local_30 = 1;
local_4c = param_1;
local_48 = iVar2;
iVar2 = FUN_8f616918(&local_4c,&DAT_8f731ec0);
uVar3 = FUN_8f603a60(iVar2 + 0x708ce140);
FUN_8f6162ec(&DAT_8f7242f8,2,&DAT_8f731ec0,uVar3,0x9c);
FUN_8f616660(1);
uVar4 = FUN_8f616728(DAT_8f7242dc + 0x14,0);
iVar5 = FUN_8f61698c(&DAT_8f732500);
uVar3 = FUN_8f603a60(iVar5 + 0x708cdb00);
FUN_8f6162ec(&DAT_8f7242f8,2,&DAT_8f732500,uVar3,8);
iVar5 = FUN_8f6169f4(iVar2,1);
uVar3 = FUN_8f603a60(iVar5 - iVar2);
FUN_8f6162ec(&DAT_8f7242f8,2,iVar2,uVar3,0x88);
FUN_8f616660(2);
uVar6 = uVar4 & 0x150;
if (uVar6 != 0) {
uVar6 = FUN_8f61687c(uVar4);
}
FUN_8f616728(DAT_8f7242dc + 0x14,2);
if (uVar6 != 0) {
FUN_8f63cbb4(s_NAND_Erase_error__Block_address_b_8f6675d8,uVar1);
FUN_8f6179f0(param_1);
uVar6 = 1;
}
}
else {
FUN_8f63cbb4(s_NAND_Erase_error__Block_address_b_8f6675d8,uVar1);
uVar6 = 1;
}
if (local_2c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar6);
}
// WARNING: Removing unreachable block (ram,0x8f617c80)
void FUN_8f617c44(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f617cc0)
void FUN_8f617c84(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f617d00)
void FUN_8f617cc4(void)
{
return;
}
void FUN_8f617d04(int param_1,int param_2,uint param_3,int param_4,int param_5)
{
bool bVar1;
bool bVar2;
int iVar3;
undefined4 uVar4;
int iVar5;
int iVar6;
uint uVar7;
int iVar8;
int iVar9;
uint uVar10;
uint uVar11;
int iVar12;
uint uVar13;
uint uVar14;
iVar5 = DAT_8f731d80;
uVar4 = DAT_8f7242e8;
uVar7 = DAT_8f7242b4;
iVar3 = DAT_8f7242b0;
iVar8 = DAT_8f72429c;
uVar10 = DAT_8f72429c - 1;
uVar11 = *(uint *)(param_1 + 0x10);
iVar12 = *(int *)(param_1 + 0x14);
if ((param_3 & uVar10) == 0) {
iVar6 = FUN_8f66024c(param_3,DAT_8f72429c);
uVar13 = iVar12 + uVar11;
iVar12 = uVar11 * iVar3;
uVar14 = iVar6 + iVar12;
uVar7 = FUN_8f66024c(uVar14 & ~uVar7,iVar3);
if ((uVar11 < uVar7) && (iVar6 = uVar7 - uVar11, iVar6 != 0)) {
if (uVar11 < uVar13) {
do {
uVar11 = uVar11 + 1;
iVar9 = FUN_8f616af0(iVar12);
iVar12 = iVar12 + DAT_8f7242b0;
if (iVar9 == 0) {
iVar6 = iVar6 + -1;
}
else {
uVar14 = uVar14 + DAT_8f7242b0;
}
if (iVar6 == 0) goto LAB_8f617dac;
} while (uVar11 < (uint)(*(int *)(param_1 + 0x14) + *(int *)(param_1 + 0x10)));
}
bVar2 = false;
}
else {
LAB_8f617dac:
bVar2 = true;
}
iVar12 = 0;
iVar8 = FUN_8f66024c(param_2 + uVar10 + param_5,param_2 + iVar8);
while( true ) {
bVar1 = bVar2;
if (iVar3 * uVar13 <= uVar14) {
bVar1 = false;
}
if (!bVar1) break;
if (iVar8 == 0) goto LAB_8f617ef0;
iVar6 = FUN_8f616d00(uVar14,DAT_8f7242e0,uVar4);
if (iVar6 == 5) {
uVar14 = uVar14 + 1;
iVar12 = iVar12 + 1;
}
else if (iVar6 == 6) {
iVar12 = iVar12 + 1;
uVar14 = uVar14 + DAT_8f7242b0;
}
else {
uVar14 = uVar14 + 1;
FUN_8f63e304(param_4,DAT_8f7242e0,DAT_8f72429c);
iVar6 = param_4 + DAT_8f72429c;
param_4 = iVar6;
if (param_2 != 0) {
param_4 = iVar6 + param_2;
FUN_8f63e304(iVar6,uVar4,param_2);
}
iVar8 = iVar8 + -1;
}
}
FUN_8f63cbb4(s_flash_read_image__failed___d_err_8f6678d8,iVar12);
iVar8 = 1;
}
else {
FUN_8f63cbb4(s_Read_request_start_not_at_page_b_8f6678a8,param_3);
iVar8 = 3;
}
LAB_8f617ef0:
if (iVar5 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar8);
}
void FUN_8f617f38(int param_1)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
iVar1 = DAT_8f731d80;
if (*(int *)(param_1 + 0x14) < 1) {
iVar2 = 0;
}
else {
iVar4 = 0;
do {
while (iVar2 = FUN_8f617a60(DAT_8f7242b0 * (iVar4 + *(int *)(param_1 + 0x10))), iVar2 != 0) {
iVar3 = iVar4 + *(int *)(param_1 + 0x10);
iVar4 = iVar4 + 1;
FUN_8f63cbb4(s_Erase_operation_failed___page____8f667900,iVar3);
if (*(int *)(param_1 + 0x14) <= iVar4) goto LAB_8f617fc0;
}
iVar4 = iVar4 + 1;
} while (iVar4 < *(int *)(param_1 + 0x14));
}
LAB_8f617fc0:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f617fe8(int param_1,int param_2,int param_3,uint param_4)
{
int iVar1;
undefined4 uVar2;
int iVar3;
undefined4 uVar4;
uint uVar5;
uint uVar6;
uint uVar7;
uint uVar8;
int iVar9;
iVar1 = DAT_8f731d80;
uVar4 = DAT_8f7242e8;
iVar9 = DAT_8f7242c0 * DAT_8f7242c4 - DAT_8f72429c;
uVar6 = DAT_8f72429c;
if (param_2 != 0) {
uVar6 = DAT_8f7242c0 * DAT_8f7242c4;
}
uVar5 = *(int *)(param_1 + 0x10) * DAT_8f7242b0;
uVar8 = DAT_8f7242b0 * (*(int *)(param_1 + 0x10) + *(int *)(param_1 + 0x14));
uVar2 = FUN_8f66024c(iVar9,DAT_8f7242c4);
FUN_8f63e410(uVar4,0xff,uVar2);
if (param_4 == 0) {
LAB_8f61814c:
uVar6 = uVar5 + DAT_8f7242b4 & ~DAT_8f7242b4;
if (uVar6 <= uVar8 && uVar8 - uVar6 != 0) {
do {
FUN_8f617a60(uVar6);
uVar6 = uVar6 + DAT_8f7242b0;
} while (uVar6 <= uVar8 && uVar8 - uVar6 != 0);
}
uVar4 = 0;
}
else if (param_4 < uVar6) {
LAB_8f6181e8:
FUN_8f63cbb4(s_flash_write_image__image_undersi_8f667948,param_4,uVar6);
uVar4 = 0xffffffff;
}
else {
if (uVar5 < uVar8) {
do {
if (((uVar5 & DAT_8f7242b4) == 0) && (iVar3 = FUN_8f617a60(uVar5), iVar3 != 0)) {
uVar5 = uVar5 + DAT_8f7242b0;
}
else {
FUN_8f63e304(DAT_8f7242e0,param_3,DAT_8f72429c);
if (param_2 == 0) {
iVar3 = FUN_8f6176d0(uVar5,1,DAT_8f7242e0,uVar4);
}
else {
FUN_8f63e304(DAT_8f7242e0 + DAT_8f72429c,param_3 + DAT_8f72429c,iVar9);
iVar3 = FUN_8f6176d0(uVar5,1,DAT_8f7242e0,DAT_8f7242e0 + DAT_8f72429c);
}
if (iVar3 == 0) {
param_4 = param_4 - uVar6;
uVar5 = uVar5 + 1;
param_3 = param_3 + uVar6;
}
else {
uVar7 = uVar5 & ~DAT_8f7242b4;
iVar3 = uVar6 * (uVar5 & DAT_8f7242b4);
param_3 = param_3 - iVar3;
param_4 = param_4 + iVar3;
FUN_8f617a60(uVar7);
FUN_8f6179f0(uVar7);
uVar5 = uVar7 + DAT_8f7242b0;
}
}
if (param_4 == 0) goto LAB_8f61814c;
if (param_4 < uVar6) goto LAB_8f6181e8;
} while (uVar5 <= uVar8 && uVar8 - uVar5 != 0);
}
FUN_8f63cbb4(s_flash_write_image__out_of_space_8f667924);
uVar4 = 0xffffffff;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar4);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f618268)
void FUN_8f61821c(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6182b8)
void FUN_8f618274(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f618310)
void FUN_8f6182c4(void)
{
return;
}
void FUN_8f61831c(undefined4 param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f63e200(param_1);
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f6183ac)
void FUN_8f618368(void)
{
return;
}
void FUN_8f6183b8(int param_1,int param_2)
{
int iVar1;
int *piVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar3 = param_1 + param_2 + 0x1c;
piVar2 = (int *)FUN_8f63e150(0x40,param_1 + param_2 + 0x5bU & 0xffffffc0);
if (piVar2 != (int *)0x0) {
FUN_8f63e410(piVar2,0,iVar3);
*piVar2 = iVar3;
piVar2[1] = 0x10;
piVar2[2] = piVar2[1] + param_1;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(piVar2);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f6184c4)
// WARNING: Removing unreachable block (ram,0x8f6184e4)
// WARNING: Removing unreachable block (ram,0x8f6184e8)
void FUN_8f618488(void)
{
do {
software_smc(0);
} while( true );
}
// WARNING: Removing unreachable block (ram,0x8f618570)
void FUN_8f6184f0(void)
{
software_smc(0);
return;
}
// WARNING: Removing unreachable block (ram,0x8f618604)
void FUN_8f61857c(void)
{
software_smc(0);
return;
}
void FUN_8f618610(int param_1,uint param_2,int param_3,undefined4 param_4,int param_5,int param_6)
{
int iVar1;
undefined4 *puVar2;
undefined4 uVar3;
int iVar4;
int iVar5;
iVar1 = DAT_8f731d80;
puVar2 = (undefined4 *)FUN_8f6183b8(param_4,param_6);
if (puVar2 == (undefined4 *)0x0) {
iVar5 = -5;
}
else {
puVar2[3] = param_1 << 10 | param_2;
if (param_3 != 0) {
uVar3 = FUN_8f618274(puVar2);
FUN_8f63e304(uVar3,param_3,param_4);
}
FUN_8f6254b4(puVar2,*puVar2);
iVar5 = FUN_8f618488(puVar2);
if ((iVar5 == 0) && (param_6 != 0)) {
iVar4 = FUN_8f61821c(puVar2);
do {
FUN_8f6254dc(iVar4,0xc);
} while (*(int *)(iVar4 + 8) == 0);
uVar3 = FUN_8f6182c4(iVar4);
FUN_8f6254dc(uVar3,param_6);
if (param_5 != 0) {
FUN_8f63e304(param_5,uVar3,param_6);
}
}
FUN_8f61831c(puVar2);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar5);
}
void FUN_8f618790(undefined4 *param_1,undefined4 *param_2)
{
undefined4 uVar1;
undefined4 *local_14;
undefined4 *local_10;
int local_c;
local_c = DAT_8f731d80;
if (DAT_8f732640 == 0) {
local_14 = param_1;
local_10 = param_2;
FUN_8f6254b4(*param_1,*param_2);
uVar1 = FUN_8f618610(7,1,&local_14,8,0,0);
FUN_8f6254b4(param_1,4);
FUN_8f6254b4(param_2,4);
FUN_8f6254b4(*param_1,*param_2);
}
else {
uVar1 = 0xffffffff;
}
if (local_c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar1);
}
return;
}
void FUN_8f618898(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
undefined4 param_5,undefined4 param_6,undefined4 *param_7)
{
int iVar1;
iVar1 = DAT_8f731d80;
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;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(param_1);
}
return;
}
void FUN_8f618964(uint *param_1,undefined4 param_2)
{
int iVar1;
int iVar2;
uint uVar3;
uint local_24;
uint local_20;
int local_1c;
iVar1 = DAT_8f731d80;
local_24 = 0;
if (param_1[0xf] == 0) {
uVar3 = *param_1;
}
else {
uVar3 = *param_1 | 0x80000000;
}
*param_1 = uVar3;
local_20 = param_1[5];
if (4 < (param_1[1] & 0xf)) {
local_24 = FUN_8f63e150(0x40,0x28);
if (local_24 == 0) {
FUN_8f63cce8();
}
for (local_1c = 0; local_1c < 10; local_1c = local_1c + 1) {
*(uint *)(local_24 + local_1c * 4) = param_1[local_1c + 5];
}
FUN_8f6254b4(local_24,0x40);
local_20 = local_24;
}
iVar2 = FUN_8f618898(*param_1,param_1[1],param_1[2],param_1[3],param_1[4],local_20,param_2);
if (iVar2 == 0) {
if (local_24 != 0) {
FUN_8f63e200(local_24);
}
iVar2 = 0;
}
else {
FUN_8f63cbb4(s_SCM_call__0x_x_failed_with___x_8f6679c0,*param_1,iVar2);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f618b64(int param_1,uint param_2)
{
int iVar1;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
undefined4 local_4c;
undefined4 local_48;
uint local_44;
int local_c;
local_c = DAT_8f731d80;
FUN_8f63e410(&local_4c,0,0x40,0x40,param_2,param_1);
local_58 = 0;
local_54 = 0;
local_50 = 0;
local_4c = 0x2000601;
local_48 = 1;
local_44 = (param_1 << 8 | param_2) & 0xffff | 0x2000000;
iVar1 = FUN_8f618964(&local_4c,&local_58);
if (iVar1 == 0) {
DAT_8f732640 = 1;
}
if (local_c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f618c50(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f618b64(6,1);
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f618c9c(undefined4 param_1)
{
int local_58;
undefined4 local_54;
undefined4 local_50;
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_40;
int local_c;
local_c = DAT_8f731d80;
local_50 = 0;
local_54 = param_1;
FUN_8f63e410(&local_4c,0,0x40);
if (DAT_8f732640 == 0) {
local_58 = FUN_8f618610(0xc,2,&local_54,8,0,0);
}
else {
local_4c = 0x2000c02;
local_48 = 2;
local_40 = 0;
local_44 = param_1;
local_58 = FUN_8f618964(&local_4c,0);
}
if (local_58 != 0) {
FUN_8f63cbb4(s_Secure_Config_failed_8f6679e0);
local_58 = 1;
}
if (local_c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(local_58);
}
return;
}
void FUN_8f618db8(undefined4 *param_1,undefined4 *param_2)
{
undefined4 local_58;
undefined4 *local_54;
undefined4 *local_50;
undefined4 local_4c;
undefined4 local_48;
undefined4 *local_44;
undefined4 *local_40;
int local_c;
local_c = DAT_8f731d80;
FUN_8f63e410(&local_4c,0,0x40);
local_54 = param_1;
local_50 = param_2;
FUN_8f6254b4(*param_1,*param_2);
if (DAT_8f732640 == 0) {
local_58 = FUN_8f618610(7,2,&local_54,8,0,0);
}
else {
local_4c = 0x2000702;
local_48 = 0xa2;
local_44 = local_54;
local_40 = local_50;
local_58 = FUN_8f618964(&local_4c,0);
}
FUN_8f6254b4(param_1,4);
FUN_8f6254b4(param_2,4);
FUN_8f6254b4(*param_1,*param_2);
if (local_c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(local_58);
}
return;
}
void FUN_8f618f10(int *param_1,uint *param_2,undefined4 *param_3)
{
int iVar1;
uint uVar2;
int local_7c;
uint local_74;
int local_70;
int local_6c;
undefined4 local_68;
int local_64;
int local_60;
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
uint local_4c;
int local_48;
undefined4 local_18;
int local_14;
local_14 = DAT_8f731d80;
FUN_8f63e410(&local_54,0,0x40);
local_60 = 0;
local_5c = 0;
local_58 = 0;
local_70 = *param_1;
local_74 = *param_2;
if (0x7f < local_74) {
local_74 = 0x80;
}
FUN_8f6254b4(*param_1,local_74);
while( true ) {
if (DAT_8f732640 == 0) {
local_7c = FUN_8f618610(7,6,&local_74,8,&local_6c,0xc);
}
else {
local_54 = 0x2000706;
local_50 = 0x82;
local_4c = local_74;
local_48 = local_70;
local_18 = 1;
local_7c = FUN_8f618964(&local_54,&local_60);
local_6c = local_60;
}
uVar2 = local_74;
if ((local_7c != 0) || (local_6c != 6)) break;
iVar1 = local_74 * 4;
local_74 = local_74 * 2;
FUN_8f6254b4(*param_1 + iVar1,uVar2);
}
if (local_7c == 0) {
if (local_6c == 0) {
*param_3 = local_68;
*param_2 = *param_2 + (*param_1 - local_64);
*param_1 = local_64;
}
local_7c = local_6c;
}
else {
FUN_8f63cbb4(s_ssd_image_is_encrypted_call_fail_8f6679f8);
if (local_7c != 0) {
FUN_8f63cce8();
}
}
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(local_7c);
}
void FUN_8f6191a0(undefined4 *param_1,undefined4 *param_2)
{
undefined4 local_74;
int local_70;
int local_6c;
int local_68;
undefined4 local_64;
undefined4 local_60;
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_40;
undefined4 local_3c;
undefined4 local_38;
int local_c;
local_c = DAT_8f731d80;
local_6c = 0;
local_74 = 0;
FUN_8f63e410(&local_4c,0,0x40);
local_68 = 0;
local_64 = 0;
local_60 = 0;
local_6c = FUN_8f618f10(param_1,param_2,&local_74);
switch(local_6c) {
case 0:
FUN_8f6254b4(*param_1,*param_2);
local_5c = local_74;
local_58 = 1;
local_54 = *param_2;
local_50 = *param_1;
if (DAT_8f732640 == 0) {
local_6c = FUN_8f618610(7,7,&local_5c,0x10,&local_70,4);
}
else {
local_4c = 0x2000707;
local_48 = 0x804;
local_44 = local_74;
local_40 = 1;
local_3c = local_54;
local_38 = local_50;
local_6c = FUN_8f618964(&local_4c,&local_68);
local_70 = local_68;
}
if (local_6c == 0) {
local_6c = local_70;
}
FUN_8f6254dc(param_1,4);
FUN_8f6254dc(param_2,4);
FUN_8f6254dc(*param_1,*param_2);
break;
case 1:
case 3:
local_6c = 0;
break;
default:
FUN_8f63cbb4(s_decrypt_scm_v2__case_default__fa_8f667a4c,local_6c);
break;
case 4:
case 5:
case 6:
case 7:
case 8:
FUN_8f63cbb4(s_decrypt_scm_v2__failed_status__d_8f667a28,local_6c);
}
if (local_c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(local_6c);
}
return;
}
void FUN_8f6193fc(uint *param_1,undefined4 param_2)
{
undefined4 local_64;
uint local_60;
int local_5c;
uint local_58;
undefined4 local_54;
undefined4 local_50;
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
int local_c;
local_c = DAT_8f731d80;
local_5c = 0;
FUN_8f63e410(&local_4c,0,0x40);
local_58 = 0;
local_54 = 0;
local_50 = 0;
local_64 = 5;
if (DAT_8f732640 == 0) {
local_5c = FUN_8f618610(6,3,&local_64,4,&local_60,4,param_2);
}
else {
local_4c = 0x2000603;
local_48 = 1;
local_44 = 5;
local_5c = FUN_8f618964(&local_4c,&local_58);
local_60 = local_58;
}
if (local_5c == 0) {
*param_1 = local_60 >> 0x16;
}
if (local_c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(local_5c);
}
return;
}
void FUN_8f61953c(undefined4 *param_1,undefined4 *param_2)
{
int local_6c;
undefined4 *local_68;
undefined4 local_64;
undefined4 local_60;
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
undefined4 local_4c;
undefined4 local_48;
int local_c;
local_c = DAT_8f731d80;
FUN_8f63e410(&local_4c,0,0x40);
local_58 = 0;
local_54 = 0;
local_50 = 0;
if (DAT_8f732640 == 0) {
local_68 = &local_60;
local_64 = 8;
local_6c = FUN_8f618610(6,4,&local_68,8,0,0);
}
else {
local_4c = 0x2000604;
local_48 = 0;
local_6c = FUN_8f618964(&local_4c,&local_58);
local_60 = local_58;
local_5c = local_54;
}
if (local_6c == 0) {
*param_1 = local_60;
*param_2 = local_5c;
}
if (local_c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(local_6c);
}
return;
}
void FUN_8f61968c(undefined4 param_1,undefined4 param_2)
{
int local_68;
int local_64;
undefined4 local_60;
undefined4 local_5c;
int local_58;
undefined4 local_54;
undefined4 local_50;
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_40;
int local_c;
local_c = DAT_8f731d80;
local_64 = 0;
FUN_8f63e410(&local_4c,0,0x40);
local_58 = 0;
local_54 = 0;
local_50 = 0;
local_60 = param_1;
local_5c = param_2;
FUN_8f6254b4(param_1,param_2);
if (DAT_8f732640 == 0) {
local_64 = FUN_8f618610(7,5,&local_60,8,&local_68,4);
}
else {
local_4c = 0x2000705;
local_48 = 0x22;
local_44 = local_60;
local_40 = local_5c;
local_64 = FUN_8f618964(&local_4c,&local_58);
local_68 = local_58;
}
if ((local_64 == 0) && (local_68 != 0)) {
local_64 = local_68;
}
if (local_c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(local_64);
}
return;
}
void FUN_8f6197f0(int param_1,undefined4 param_2,int param_3,undefined4 param_4,undefined4 param_5)
{
int iVar1;
undefined4 uVar2;
undefined4 local_74;
undefined4 local_70;
undefined4 local_6c;
int local_68;
undefined4 local_64;
int local_60;
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
int local_4c;
undefined4 local_48;
int local_44;
undefined4 local_40;
undefined4 local_3c;
int local_14;
local_14 = DAT_8f731d80;
FUN_8f63e410(&local_54,0,0x40);
local_74 = 0;
local_70 = 0;
local_6c = 0;
if (param_1 == 0) {
FUN_8f63cce8();
}
if (param_3 == 0) {
FUN_8f63cce8();
}
local_58 = param_5;
local_68 = param_1;
local_64 = param_2;
local_60 = param_3;
local_5c = param_4;
if (DAT_8f732640 == 0) {
iVar1 = FUN_8f618610(0x12,1,&local_68,0x14,0,0);
if (iVar1 != 0) {
FUN_8f63cbb4(s_Failed_to_call_Cipher_DIP_SCM_8f667ab8);
uVar2 = 0xffffffff;
goto LAB_8f619a1c;
}
}
else {
local_54 = 0x2001201;
local_50 = 0x215;
local_3c = param_5;
local_4c = param_1;
local_48 = param_2;
local_44 = param_3;
local_40 = param_4;
iVar1 = FUN_8f618964(&local_54,&local_74);
if (iVar1 != 0) {
FUN_8f63cbb4(s_Failed_in_Cipher_DIP_SCM_call_8f667ad8);
uVar2 = 0xffffffff;
goto LAB_8f619a1c;
}
}
uVar2 = 0;
LAB_8f619a1c:
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f619a44(void)
{
int iVar1;
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_10;
int local_c;
local_c = DAT_8f731d80;
FUN_8f63e410(&local_4c,0,0x40,0x40,0);
if (DAT_8f732640 == 0) {
iVar1 = FUN_8f6184f0(9,1,0);
}
else {
local_4c = 0x2000901;
local_48 = 1;
local_44 = 0;
local_10 = 1;
iVar1 = FUN_8f618964(&local_4c,0);
}
if (iVar1 != 0) {
if (DAT_8f732640 == 0) {
iVar1 = FUN_8f6184f0(9,2,0);
}
else {
local_4c = 0x2000902;
local_48 = 1;
local_44 = 0;
local_10 = 1;
iVar1 = FUN_8f618964(&local_4c,0);
}
}
if (local_c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
return;
}
void FUN_8f619b88(undefined4 param_1,undefined4 param_2)
{
undefined4 local_54;
undefined4 local_50;
undefined4 *local_4c;
undefined4 local_48;
int local_14;
local_14 = DAT_8f731d80;
FUN_8f63e410(&local_54,0,0x40);
DAT_8f725004 = 0;
DAT_8f72504c = 0;
DAT_8f725000 = param_2;
DAT_8f725048 = param_1;
if (DAT_8f732640 == 0) {
FUN_8f618610(1,0xf,&DAT_8f725000,0x50,0,0);
}
else {
local_54 = 0x200010f;
local_50 = 0x12;
local_4c = &DAT_8f725000;
local_48 = 0x50;
FUN_8f618964(&local_54,0);
}
FUN_8f63cbb4(s_Failed_to_jump_to_kernel_8f667b30);
FUN_8f63cce8();
if (local_14 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f619cec(undefined4 param_1,undefined4 param_2)
{
int local_58;
undefined4 local_54;
undefined4 local_50;
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_40;
int local_c;
local_c = DAT_8f731d80;
FUN_8f63e410(&local_4c,0,0x40);
if (DAT_8f732640 == 0) {
local_54 = param_1;
local_50 = param_2;
FUN_8f6254b4(param_1,param_2);
local_58 = FUN_8f618610(10,1,&local_54,8,0,0);
FUN_8f6254b4(param_1,param_2);
}
else {
local_4c = 0x2000a01;
local_48 = 0x22;
local_44 = param_1;
local_40 = param_2;
FUN_8f6254b4(param_1,param_2);
local_58 = FUN_8f618964(&local_4c,0);
if (local_58 == 0) {
FUN_8f6254b4(param_1,param_2);
}
else {
FUN_8f63cbb4(s_Secure_canary_SCM_failed___x_8f667b50,local_58);
}
}
if (local_c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(local_58);
}
return;
}
void FUN_8f619e44(void)
{
int iVar1;
undefined4 local_10;
int local_c;
local_c = DAT_8f731d80;
iVar1 = FUN_8f619cec(&local_10,4);
if (iVar1 != 0) {
FUN_8f63cbb4(s_scm_call_for_random_failed_____8f667b70);
local_10 = FUN_8f63e270();
}
if (local_c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(local_10);
}
return;
}
void FUN_8f619ec0(void)
{
uint local_60;
int local_5c;
uint local_58;
undefined4 local_54;
undefined4 local_50;
undefined4 local_4c [16];
int local_c;
local_c = DAT_8f731d80;
local_5c = 0;
FUN_8f63e410(local_4c,0,0x40);
local_58 = 0;
local_54 = 0;
local_50 = 0;
if (DAT_8f732640 == 0) {
local_5c = FUN_8f618610(6,4,0,0,&local_60,4);
}
else {
local_4c[0] = 0x2000604;
local_5c = FUN_8f618964(local_4c,&local_58);
local_60 = local_58;
}
if (local_5c == 0) {
if ((local_60 & 1) != 0) {
DAT_8f717a24 = 0;
}
if ((local_60 & 4) != 0) {
DAT_8f717a20 = 0;
}
}
else {
FUN_8f63cbb4(s_scm_call_to_check_secure_boot_fu_8f667bc4);
}
if (local_c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f61a014(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f619ec0();
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(DAT_8f717a24);
}
return;
}
void FUN_8f61a068(undefined4 param_1,undefined4 param_2)
{
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_40;
undefined4 local_10;
int local_c;
local_c = DAT_8f731d80;
FUN_8f63e410(&local_4c,0,0x40);
local_58 = 0;
local_54 = 0;
local_50 = 0;
if (DAT_8f732640 == 0) {
local_5c = FUN_8f61857c(5,2,param_1,param_2);
}
else {
local_4c = 0x2000502;
local_48 = 2;
local_10 = 1;
local_44 = param_1;
local_40 = param_2;
local_5c = FUN_8f618964(&local_4c,&local_58);
}
if (local_c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(local_5c);
}
return;
}
void FUN_8f61a170(int param_1,uint param_2,undefined4 param_3,undefined4 param_4)
{
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
uint local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_40;
int local_c;
local_c = DAT_8f731d80;
FUN_8f63e410(&local_4c,0,0x40);
local_58 = 0;
local_54 = 0;
local_50 = 0;
if (DAT_8f732640 == 0) {
local_5c = FUN_8f61857c(param_1,param_2,param_3,param_4);
}
else {
local_4c = (param_1 << 8 | param_2) & 0xffff | 0x2000000;
local_48 = 2;
local_44 = param_3;
local_40 = param_4;
local_5c = FUN_8f618964(&local_4c,&local_58);
}
if (local_c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(local_5c);
}
return;
}
void FUN_8f61a290(int param_1)
{
int iVar1;
int local_14;
undefined4 local_10;
iVar1 = DAT_8f731d80;
if (param_1 == 0) {
local_10 = 0x10;
}
else if (param_1 == 1) {
local_10 = 1;
}
else {
local_10 = 0;
}
local_14 = FUN_8f61a170(1,0x10,local_10,0);
if ((local_14 == 0) || (local_14 = FUN_8f61a068(0x193d100,local_10), local_14 == 0)) {
FUN_8f619ec0();
if (((DAT_8f717a24 == 0) && (DAT_8f717a20 == 0)) &&
(local_14 = FUN_8f61a170(1,9,1,0), local_14 != 0)) {
FUN_8f63cbb4(s_Failed_to_disable_the_wdog_debug_8f667c14);
}
}
else {
FUN_8f63cbb4(s_Failed_to_write_to_boot_misc___d_8f667bf0,local_14);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(local_14);
}
void FUN_8f61a3d8(undefined4 param_1,uint *param_2)
{
uint *puVar1;
undefined4 uVar2;
uint *puVar3;
uint *puVar4;
uint local_60;
uint local_5c;
uint local_58;
undefined4 local_54;
uint local_50 [4];
uint local_40 [11];
int local_14;
local_14 = DAT_8f731d80;
FUN_8f63e410(&local_54,0,0x40);
local_60 = 0;
local_5c = 0;
local_58 = 0;
if (param_2 == (uint *)0x0) {
FUN_8f63cbb4(s__s__Invalid_input_8f667d24,s_allocate_extra_arg_buffer_8f667cbc);
uVar2 = 0xffffffff;
}
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)) {
puVar3 = local_50 + 3;
puVar4 = param_2;
do {
puVar1 = puVar4 + 4;
puVar4 = puVar4 + 1;
puVar3 = puVar3 + 1;
*puVar3 = *puVar1;
} while (puVar3 != local_50 + (local_50[0] & 0xf));
}
local_54 = param_1;
uVar2 = FUN_8f618964(&local_54,&local_60);
param_2[0xb] = local_60;
param_2[0xc] = local_5c;
param_2[0xd] = local_58;
}
if (local_14 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
void FUN_8f61a4c8(int param_1)
{
int iVar1;
undefined4 *puVar2;
iVar1 = DAT_8f731d80;
if (param_1 < 1) {
FUN_8f63cbb4(s__s__Invalid_Input_8f667d38,s___qseecom_check_handle_exists_8f6683b0);
puVar2 = (undefined4 *)0x0;
}
else {
puVar2 = DAT_8f726028;
if (DAT_8f726028 != &DAT_8f726024) {
do {
if (puVar2[0xc] == param_1) goto LAB_8f61a528;
puVar2 = (undefined4 *)puVar2[1];
} while (puVar2 != &DAT_8f726024);
}
puVar2 = (undefined4 *)0x0;
}
LAB_8f61a528:
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(puVar2);
}
return;
}
void FUN_8f61a560(int param_1,int param_2,int *param_3,undefined4 param_4,int *param_5)
{
int iVar1;
undefined4 uVar2;
char *pcVar3;
int iVar4;
undefined4 *puVar5;
uint uVar6;
uint uVar7;
char *pcVar8;
char *pcVar9;
int iVar10;
uint uVar11;
bool bVar12;
uint local_ac;
uint local_a4;
int local_9c;
char *local_90;
int local_84;
undefined4 local_80;
undefined4 local_7c;
int local_78;
int local_74;
int local_70;
int local_6c;
int local_68;
int local_64;
int local_4c;
undefined2 local_48;
undefined4 local_44;
int local_2c;
local_ac = (uint)(param_5 == (int *)0x0 || param_3 == (int *)0x0);
local_2c = DAT_8f731d80;
local_84 = 0;
local_80 = 0;
local_7c = 0;
if (param_5 != (int *)0x0 && param_3 != (int *)0x0) {
FUN_8f626c38(PTR_DAT_8f61ac40);
local_9c = *param_3;
local_a4 = local_ac;
do {
iVar1 = FUN_8f618368();
uVar11 = DAT_8f726084;
if (iVar1 == 0) {
iVar1 = FUN_8f618610(param_1,param_2,param_3,param_4,param_5,10);
goto LAB_8f61a66c;
}
if (DAT_8f726084 != 0) {
local_a4 = DAT_8f726084;
FUN_8f6254dc(DAT_8f726084,DAT_8f726088);
local_ac = (uint)*(ushort *)(uVar11 + 2);
}
FUN_8f63e410(&local_78,0,0x48);
if (param_1 == 6) {
if (param_2 == 1) {
uVar2 = 0x2000601;
local_74 = 0x2000603;
local_78 = param_2;
}
else if (param_2 == 3) {
uVar2 = 0x2000603;
local_78 = 1;
local_74 = *param_3;
}
else {
uVar2 = 0;
}
iVar1 = FUN_8f61a3d8(uVar2,&local_78);
goto LAB_8f61a648;
}
if (param_1 != 0xfc) {
iVar1 = -1;
FUN_8f63cbb4(s_svc_id_0x_x_is_not_supported_by_a_8f667d84,param_1);
goto LAB_8f61a648;
}
switch(*param_3) {
case 1:
local_74 = param_3[1];
local_70 = param_3[2];
uVar11 = 0x101;
local_6c = param_3[3];
goto LAB_8f61ab14;
case 2:
local_74 = param_3[1];
uVar11 = 0x102;
goto LAB_8f61aa28;
default:
iVar1 = -1;
FUN_8f63cbb4(s_qseos_cmd_id_0x_d_is_not_support_8f667d4c);
break;
case 4:
local_70 = param_3[2];
local_74 = param_3[1];
local_6c = param_3[3];
local_78 = 0x83;
iVar1 = FUN_8f61a3d8(0x32000201,&local_78);
break;
case 5:
local_74 = param_3[1];
uVar11 = 0x202;
goto LAB_8f61aa28;
case 6:
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;
iVar1 = FUN_8f61a3d8(0x30000001,&local_78);
break;
case 7:
local_74 = param_3[1];
local_70 = param_3[2];
local_78 = 2;
iVar1 = FUN_8f61a3d8(0x32000203,&local_78);
break;
case 0xb:
local_74 = param_3[1];
local_70 = param_3[2];
uVar11 = 0x107;
local_6c = param_3[3];
LAB_8f61ab14:
local_78 = 3;
iVar1 = FUN_8f61a3d8(uVar11 | 0x32000000,&local_78);
break;
case 0xc:
iVar1 = FUN_8f61a3d8(0x32000108,&local_78);
break;
case 0xd:
local_74 = param_3[1];
local_70 = param_3[2];
uVar11 = 0x105;
goto LAB_8f61ab60;
case 0xe:
local_74 = param_3[1];
local_70 = param_3[2];
uVar11 = 0x106;
LAB_8f61ab60:
local_78 = 0x22;
iVar1 = FUN_8f61a3d8(uVar11 | 0x32000000,&local_78);
break;
case 0xf:
local_74 = param_3[1];
uVar11 = 0x401;
LAB_8f61aa28:
local_78 = 1;
iVar1 = FUN_8f61a3d8(uVar11 | 0x32000000,&local_78);
break;
case 0x10:
iVar1 = FUN_8f61a3d8(0x32000402,&local_78);
}
LAB_8f61a648:
uVar11 = DAT_8f726084;
bVar12 = DAT_8f726084 != 0;
*param_5 = local_4c;
*(undefined2 *)(param_5 + 1) = local_48;
*(undefined4 *)((int)param_5 + 6) = local_44;
if (bVar12) {
FUN_8f6254dc(uVar11,DAT_8f726088);
uVar11 = DAT_8f726084;
uVar7 = (uint)*(ushort *)(local_a4 + 2);
if (local_ac < uVar7) {
uVar6 = uVar7 - local_ac;
local_90 = (char *)FUN_8f63e114(uVar6);
if (local_90 != (char *)0x0) {
FUN_8f63e410(local_90,0,uVar6);
FUN_8f63e5b8(local_90,uVar6,uVar11 + 4 + local_ac,uVar6);
goto LAB_8f61a904;
}
LAB_8f61ac28:
FUN_8f63cbb4(s_Failed_to_alloc_buffer_to_print_T_8f667db8,uVar6);
}
else if (uVar7 < local_ac) {
uVar6 = (uVar7 + 0xffc) - local_ac;
iVar4 = 0xffc - local_ac;
local_90 = (char *)FUN_8f63e114(uVar6);
if (local_90 == (char *)0x0) goto LAB_8f61ac28;
FUN_8f63e410(local_90,0,uVar6);
iVar10 = uVar11 + 4;
FUN_8f63e5b8(local_90,uVar6,iVar10 + local_ac,iVar4);
FUN_8f63e5b8(local_90 + iVar4,uVar6 - iVar4,iVar10,uVar7);
LAB_8f61a904:
if (uVar6 != 0) {
uVar11 = 0;
pcVar3 = local_90;
pcVar8 = local_90;
do {
if ((*pcVar8 == '\r') && (pcVar8[1] == '\n')) {
*pcVar8 = '\0';
pcVar9 = pcVar8 + 2;
pcVar8[1] = '\0';
uVar11 = uVar11 + 2;
FUN_8f63cbb4(s_SERIAL_NUMBER____s_8f666a6c + 0x10,pcVar3);
pcVar3 = pcVar9;
}
else {
uVar11 = uVar11 + 1;
pcVar9 = pcVar8 + 1;
}
pcVar8 = pcVar9;
} while (uVar11 < uVar6);
}
FUN_8f63e200(local_90);
}
}
LAB_8f61a66c:
if (iVar1 != 0) {
FUN_8f63cbb4(s_ERROR__scm_call_to_load_failed___8f667de4,iVar1);
iVar1 = -1;
goto LAB_8f61a6ac;
}
if (param_1 == 6) goto LAB_8f61a6ac;
iVar4 = *param_5;
if (iVar4 != 1) {
if (iVar4 == 0) {
if (((*(short *)(param_5 + 1) != -0x11ff) || (*(int *)((int)param_5 + 6) == 0)) &&
(local_9c == 6)) {
FUN_8f63cbb4(s_ERROR__Resp_type__d_or_Resp_Data_8f667e10,*(short *)(param_5 + 1),
*(undefined4 *)((int)param_5 + 6));
iVar1 = -1;
}
}
else if (iVar4 == -1) {
FUN_8f63cbb4(s_scm_call_failed_w_response_resul_8f667e40,*param_5);
iVar1 = iVar4;
}
else {
FUN_8f63cbb4(s_scm_call_return_unknown_response_8f667ea8,*param_5);
iVar1 = -1;
}
goto LAB_8f61a6ac;
}
if (*(short *)(param_5 + 1) != -0x11fe) goto LAB_8f61ac0c;
FUN_8f626c38(PTR_DAT_8f61ac44);
puVar5 = DAT_8f726004;
if (DAT_8f726004 != &DAT_8f726000) {
iVar1 = DAT_8f726004[2];
while (*(int *)((int)param_5 + 6) != iVar1) {
puVar5 = (undefined4 *)puVar5[1];
if (puVar5 == &DAT_8f726000) goto LAB_8f61a7e4;
iVar1 = puVar5[2];
}
FUN_8f6254dc(puVar5[3],puVar5[4]);
(*(code *)puVar5[5])(puVar5[3],puVar5[4]);
FUN_8f6254b4(puVar5[3],puVar5[4]);
}
LAB_8f61a7e4:
local_80 = puVar5[2];
param_3 = &local_84;
local_9c = 7;
local_84 = 7;
local_7c = 0;
FUN_8f626d1c(PTR_DAT_8f61ac44);
} while( true );
}
iVar1 = -1;
LAB_8f61a6b8:
if (local_2c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
return;
LAB_8f61ac0c:
FUN_8f63cbb4(s_Listener_service_incorrect_resp__8f667e68,*param_5);
iVar1 = -1;
LAB_8f61a6ac:
FUN_8f626d1c(PTR_DAT_8f61ac40);
goto LAB_8f61a6b8;
}
void FUN_8f61ac48(undefined4 *param_1)
{
int iVar1;
undefined4 *puVar2;
iVar1 = DAT_8f731d80;
if (param_1 == (undefined4 *)0x0) {
FUN_8f63cbb4(s__s__Invalid_Input_8f667d38,s___qseecom_check_listener_exists_8f667d04);
puVar2 = param_1;
}
else {
puVar2 = DAT_8f726004;
if (DAT_8f726004 != &DAT_8f726000) {
do {
if ((undefined4 *)puVar2[2] == param_1) goto LAB_8f61ac9c;
puVar2 = (undefined4 *)puVar2[1];
} while (puVar2 != &DAT_8f726000);
}
puVar2 = (undefined4 *)0x0;
}
LAB_8f61ac9c:
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(puVar2);
}
return;
}
void FUN_8f61acdc(int param_1)
{
undefined *puVar1;
undefined *puVar2;
undefined4 uVar3;
int iVar4;
int iVar5;
int iVar6;
int *piVar7;
undefined *puVar8;
longlong lVar9;
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_8f731d80;
if (param_1 == 0) {
FUN_8f63cbb4(s__s__Input_error_8f667ed0,s_qseecom_start_app_8f667cf0);
iVar4 = -1;
goto LAB_8f61aee8;
}
FUN_8f626c38(&DAT_8f726058);
if ((DAT_8f726078 == 0) || (DAT_8f72607c == 0)) {
FUN_8f63cbb4(s__s_qseecom_init_not_done_8f667ee4,s_qseecom_start_app_8f667cf0);
FUN_8f626d1c(PTR_DAT_8f61b1d4);
iVar4 = -1;
goto LAB_8f61aee8;
}
FUN_8f626d1c(&DAT_8f726058);
if (DAT_8f726074 == 0) {
local_5c = DAT_8f726074;
local_58 = DAT_8f726074;
local_54 = DAT_8f726074;
local_50 = DAT_8f726074;
local_4c = DAT_8f726074;
local_48 = DAT_8f726074;
local_44 = DAT_8f726074;
local_40 = DAT_8f726074;
local_3c = DAT_8f726074;
local_38 = DAT_8f726074;
local_34 = DAT_8f726074;
local_30 = DAT_8f726074;
local_68 = DAT_8f726074;
local_64 = 0;
uStack_62 = 0;
local_60 = 0;
uVar3 = FUN_8f607810(s_cmnlib_8f667f00);
FUN_8f6079b4();
FUN_8f60ff88();
iVar4 = FUN_8f6078c4(uVar3);
iVar5 = FUN_8f63e150(0x1000,iVar4 + 0xfffU & 0xfffff000);
if (iVar5 == 0) {
FUN_8f63cbb4(s__s__Aloc_failed_for__s_image_8f667f08,s_qseecom_load_commonlib_image_8f667c9c,
s_cmnlib_8f667f00);
iVar4 = -1;
}
else {
lVar9 = FUN_8f60793c(uVar3);
if (lVar9 == 0) {
FUN_8f63cbb4(s_ERROR__No__s_found_8f667f28,s_cmnlib_8f667f00);
iVar4 = -1;
}
else {
iVar6 = FUN_8f60f940((int)lVar9,(int)((ulonglong)lVar9 >> 0x20),iVar5,iVar4);
if (iVar6 == 0) {
local_50 = FUN_8f603a60(iVar5);
local_5c = 0xb;
local_58 = iVar6;
local_54 = iVar4;
FUN_8f63e5b8(&local_4c,0x20,s_cmnlib_8f667f00,0x20);
FUN_8f6254b4(local_50,local_54);
iVar4 = FUN_8f61a560(0xfc,1,&local_5c,0x10,&local_68);
if (iVar4 == 0) {
iVar4 = CONCAT22(local_60,uStack_62);
FUN_8f63e200(iVar5);
if (iVar4 == 0) {
DAT_8f726074 = 1;
goto LAB_8f61ae84;
}
goto LAB_8f61ae48;
}
}
else {
FUN_8f63cbb4(s_ERROR__Cannot_read__s_image_8f667f3c,s_cmnlib_8f667f00);
iVar4 = -1;
}
}
FUN_8f63e200(iVar5);
}
LAB_8f61ae48:
FUN_8f63cbb4(s__s_qseecom_load_commonlib_image_f_8f667f5c,s_qseecom_start_app_8f667cf0,iVar4);
goto LAB_8f61aee8;
}
LAB_8f61ae84:
FUN_8f626c38(PTR_DAT_8f61b1d4);
puVar2 = PTR_DAT_8f61b1d8;
for (puVar8 = DAT_8f726028; puVar8 != puVar2; puVar8 = *(undefined **)(puVar8 + 4)) {
iVar4 = FUN_8f63ea58(param_1,puVar8 + 0x10,0x20);
puVar1 = PTR_DAT_8f61b1d4;
if (iVar4 == 0) {
if (puVar8 != (undefined *)0x0) {
iVar4 = *(int *)(puVar8 + 0x30);
*(int *)(puVar8 + 0xc) = *(int *)(puVar8 + 0xc) + 1;
FUN_8f626d1c(puVar1);
goto LAB_8f61aee8;
}
break;
}
}
FUN_8f626d1c(&DAT_8f726058);
local_5c = 0;
local_58 = 0;
local_54 = 0;
local_50 = 0;
local_4c = 0;
local_48 = 0;
local_44 = 0;
local_40 = 0;
local_3c = 0;
local_38 = 0;
local_34 = 0;
local_30 = 0;
uVar3 = FUN_8f607810(param_1);
FUN_8f6079b4();
FUN_8f60ff88();
iVar4 = FUN_8f6078c4(uVar3);
iVar5 = FUN_8f63e150(0x1000,iVar4 + 0xfffU & 0xfffff000);
if (iVar5 == 0) {
FUN_8f63cbb4(s__s__Aloc_failed_for__s_image_8f667f08,s___qseecom_load_app_8f66839c,param_1);
}
else {
lVar9 = FUN_8f60793c(uVar3);
if (lVar9 == 0) {
FUN_8f63cbb4(s_ERROR__No__s_found_8f667f28,param_1);
}
else {
iVar6 = FUN_8f60f940((int)lVar9,(int)((ulonglong)lVar9 >> 0x20),iVar5,iVar4);
if (iVar6 == 0) {
local_50 = FUN_8f603a60(iVar5);
local_5c = 1;
local_58 = iVar6;
local_54 = iVar4;
FUN_8f63e5b8(&local_4c,0x20,param_1,0x20);
FUN_8f6254b4(local_50,local_54);
iVar4 = FUN_8f61a560(0xfc,1,&local_5c,0x10,&local_68);
if (iVar4 == 0) {
iVar4 = CONCAT22(local_60,uStack_62);
FUN_8f63e200(iVar5);
if (iVar4 != 0) {
FUN_8f626c38(&DAT_8f726058);
piVar7 = (int *)FUN_8f63e114(0x34);
if (piVar7 == (int *)0x0) {
FUN_8f63cbb4(s_malloc_for_app_entry_failed_8f667fcc);
FUN_8f63cbb4(s__s____qseecom_add_app_entry_fail_8f667fec,s_qseecom_start_app_8f667cf0)
;
FUN_8f626d1c(&DAT_8f726058);
iVar4 = -1;
}
else {
piVar7[2] = iVar4;
piVar7[3] = 1;
FUN_8f63e8d8(piVar7 + 4,param_1,0x20);
piVar7[1] = (int)puVar2;
iVar4 = DAT_8f726050 + 1;
*piVar7 = (int)DAT_8f726024;
DAT_8f726024[1] = (int)piVar7;
piVar7[0xc] = iVar4;
DAT_8f726024 = piVar7;
DAT_8f726050 = iVar4;
FUN_8f626d1c(&DAT_8f726058);
}
goto LAB_8f61aee8;
}
}
else {
FUN_8f63e200(iVar5);
}
goto LAB_8f61afe0;
}
FUN_8f63cbb4(s_ERROR__Cannot_read__s_image_8f667f3c,param_1);
}
FUN_8f63e200(iVar5);
}
LAB_8f61afe0:
FUN_8f63cbb4(s__s____qseecom_load_app_failed_wi_8f667f94,s_qseecom_start_app_8f667cf0);
iVar4 = -1;
LAB_8f61aee8:
if (local_2c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar4);
}
return;
}
void FUN_8f61b1dc(int param_1,int param_2,uint param_3,int param_4,uint param_5)
{
int iVar1;
uint uVar2;
undefined auStack_48 [12];
undefined4 local_3c;
undefined4 local_38;
undefined4 local_34;
uint local_30;
undefined4 local_2c;
uint local_28;
int local_24;
local_24 = DAT_8f731d80;
if (param_1 < 1) {
FUN_8f63cbb4(s__s_Handle_is_Invalid_8f66809c,s_qseecom_send_command_8f667cd8);
iVar1 = -1;
}
else if (param_4 == 0 || param_2 == 0) {
FUN_8f63cbb4(s__s__Input_Buffers_invalid_8f6680b4,s_qseecom_send_command_8f667cd8);
iVar1 = -1;
}
else {
FUN_8f626c38(&DAT_8f726058);
if ((DAT_8f726078 == 0) || (DAT_8f72607c == 0)) {
FUN_8f63cbb4(s__s_qseecom_init_not_done_8f667ee4,s_qseecom_send_command_8f667cd8);
FUN_8f626d1c(PTR_DAT_8f61b3b8);
iVar1 = -1;
}
else {
iVar1 = FUN_8f61a4c8(param_1);
if (iVar1 == 0) {
FUN_8f63cbb4(s__s__Send_cmd_on_an_app_that_was_n_8f6680d0,s_qseecom_send_command_8f667cd8,
param_1);
FUN_8f626d1c(&DAT_8f726058);
iVar1 = -1;
}
else {
local_38 = *(undefined4 *)(iVar1 + 8);
FUN_8f626d1c(&DAT_8f726058);
uVar2 = param_3;
if (param_3 < param_5) {
uVar2 = param_5;
}
FUN_8f63e5b8(0x90000000,uVar2 + 0xfff & 0xfffff000,param_2,param_3);
local_3c = 6;
local_34 = FUN_8f603a60(0x90000000);
local_30 = param_3;
local_2c = FUN_8f603a60(0x90000000);
local_28 = param_5;
iVar1 = FUN_8f61a560(0xfc,1,&local_3c,0x18,auStack_48);
FUN_8f63e5b8(param_4,param_5,local_2c,local_28);
if (iVar1 != 0) {
FUN_8f63cbb4(s__s___qseecom_send_cmd_failed_wit_8f668108,s_qseecom_send_command_8f667cd8,
iVar1,param_1);
}
}
}
}
if (local_24 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
return;
}
void FUN_8f61b3bc(int param_1)
{
int *piVar1;
int *piVar2;
int iVar3;
int *piVar4;
int iVar5;
int iVar6;
undefined4 local_38 [3];
undefined4 local_2c;
int local_28;
undefined4 local_24;
int local_20;
int local_1c;
local_1c = DAT_8f731d80;
FUN_8f626c38(&DAT_8f726058);
if (DAT_8f726078 == 0) {
FUN_8f63cbb4(s__s_qseecom_init_not_done_8f667ee4,s_qseecom_register_listener_8f667c64);
FUN_8f626d1c(&DAT_8f726058);
iVar3 = -1;
goto LAB_8f61b454;
}
FUN_8f626d1c(&DAT_8f726058);
FUN_8f626c38(&DAT_8f726008);
if (param_1 == 0) {
FUN_8f63cbb4(s__s_Invalid_Input_listnr_8f668140,s_qseecom_register_listener_8f667c64);
iVar3 = -1;
goto LAB_8f61b454;
}
if (((*(int *)(param_1 + 4) == 0) || (*(int *)(param_1 + 8) == 0)) ||
(*(int *)(param_1 + 0xc) == 0)) {
FUN_8f63cbb4(s__s_Invalid_Input_listnr_id__d_sb_8f66815c,s_qseecom_register_listener_8f667c64,
*(int *)(param_1 + 4));
iVar3 = -1;
goto LAB_8f61b454;
}
iVar3 = FUN_8f61ac48();
if (iVar3 == 0) {
piVar4 = (int *)FUN_8f63e114(0x18);
if (piVar4 == (int *)0x0) {
iVar3 = -1;
FUN_8f63cbb4(s__s_new_entry_malloc_failed_for_s_8f6681bc,s_qseecom_register_listener_8f667c64,
0x18);
}
else {
FUN_8f63e410(piVar4,0,0x18);
iVar5 = *(int *)(param_1 + 8);
iVar3 = *(int *)(param_1 + 0xc);
iVar6 = *(int *)(param_1 + 4);
piVar4[4] = iVar5;
piVar4[5] = iVar3;
piVar4[2] = iVar6;
iVar3 = FUN_8f63e150(0x1000,iVar5 + 0xfffU & 0xfffff000);
iVar5 = *(int *)(param_1 + 8);
piVar4[3] = iVar3;
if (iVar3 == 0) {
FUN_8f63cbb4(s__s_virt_sb_base_malloc_failed_fo_8f6681e4,
s_qseecom_register_listener_8f667c64);
}
else {
FUN_8f63e410(iVar3,0,iVar5 + 0xfffU & 0xfffff000);
FUN_8f6254b4(piVar4[3],*(int *)(param_1 + 8) + 0xfffU & 0xfffff000);
local_28 = piVar4[2];
local_20 = piVar4[4];
local_2c = 4;
local_24 = FUN_8f603a60(piVar4[3]);
local_38[0] = 1;
iVar3 = FUN_8f61a560(0xfc,1,&local_2c,0x10,local_38);
piVar1 = DAT_8f726000;
if (iVar3 == 0) {
piVar4[1] = (int)&DAT_8f726000;
piVar2 = piVar4;
*piVar4 = (int)DAT_8f726000;
DAT_8f726000 = piVar2;
piVar1[1] = (int)piVar4;
goto LAB_8f61b448;
}
FUN_8f63cbb4(s_qseecom_scm_call_failed_with_err_8f668210,iVar3);
}
if (piVar4[3] != 0) {
FUN_8f63e200();
}
iVar3 = -1;
FUN_8f63e200(piVar4);
}
}
else {
FUN_8f63cbb4(s_Service_is_not_unique_and_is_alr_8f668188);
iVar3 = -2;
}
LAB_8f61b448:
FUN_8f626d1c(PTR_DAT_8f61b630);
LAB_8f61b454:
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar3);
}
void FUN_8f61b634(undefined4 param_1)
{
int *piVar1;
int iVar2;
int *piVar3;
undefined4 local_28;
undefined4 local_24;
undefined4 local_20 [3];
int local_14;
local_14 = DAT_8f731d80;
FUN_8f626c38(&DAT_8f726058);
if (DAT_8f726078 == 0) {
FUN_8f63cbb4(s__s_qseecom_init_not_done_8f667ee4,s_qseecom_deregister_listener_8f667c80);
FUN_8f626d1c(&DAT_8f726058);
iVar2 = -1;
goto LAB_8f61b6f4;
}
FUN_8f626d1c(&DAT_8f726058);
FUN_8f626c38(&DAT_8f726008);
piVar1 = (int *)FUN_8f61ac48(param_1);
if (piVar1 == (int *)0x0) {
FUN_8f63cbb4(s_Service_not_present_8f668238);
LAB_8f61b720:
iVar2 = -1;
}
else {
local_20[0] = 1;
local_28 = 5;
local_24 = param_1;
iVar2 = FUN_8f61a560(0xfc,1,&local_28,8,local_20);
if (iVar2 != 0) {
FUN_8f63cbb4(s_scm_call___failed_with_err___d___8f668250,iVar2,local_24);
goto LAB_8f61b720;
}
piVar3 = (int *)piVar1[1];
*piVar3 = *piVar1;
*(int **)(*piVar1 + 4) = piVar3;
piVar1[1] = 0;
*piVar1 = 0;
FUN_8f63e200(piVar1);
}
FUN_8f626d1c(PTR_DAT_8f61b760);
LAB_8f61b6f4:
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f61b764(void)
{
int iVar1;
undefined auStack_34 [12];
undefined4 local_28;
undefined4 local_24;
undefined4 local_20;
int local_1c;
local_24 = DAT_8f717a2c;
local_1c = DAT_8f731d80;
local_28 = 0xd;
local_20 = DAT_8f717a28;
FUN_8f63cbb4(s_secure_app_region_addr_0x_x_size_8f668280,DAT_8f717a2c,DAT_8f717a28);
iVar1 = FUN_8f61a560(0xfc,1,&local_28,0xc,auStack_34);
FUN_8f63cbb4(s_TZ_App_region_notif_returned_wit_8f6682a8,iVar1,local_24,local_20);
if (iVar1 == 0) {
iVar1 = FUN_8f63e150(0x1000,0x1000);
if (iVar1 == 0) {
iVar1 = -1;
}
else {
FUN_8f63e410(iVar1,0,0x1000);
DAT_8f726080 = 0xe;
DAT_8f726084 = FUN_8f603a60(iVar1);
DAT_8f726088 = 0x1000;
iVar1 = FUN_8f61a560(0xfc,1,&DAT_8f726080,0xc,auStack_34);
FUN_8f63cbb4(s_TZ_App_log_region_register_retur_8f6682e8,iVar1,DAT_8f726084,DAT_8f726088);
if (iVar1 == 0) {
DAT_8f72607c = 1;
FUN_8f63cbb4(s_Qseecom_TZ_Init_Done_in_Appsbl_8f66832c);
}
}
}
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
void FUN_8f61b8c0(void)
{
int iVar1;
undefined4 local_24;
undefined4 local_20 [3];
int local_14;
local_14 = DAT_8f731d80;
local_24 = 10;
FUN_8f63e410(&DAT_8f726000,0,0x80);
FUN_8f626be8(&DAT_8f726058);
FUN_8f626be8(&DAT_8f72602c);
FUN_8f626be8(&DAT_8f726008);
DAT_8f726004 = &DAT_8f726000;
DAT_8f726000 = &DAT_8f726000;
DAT_8f726028 = &DAT_8f726024;
DAT_8f726024 = &DAT_8f726024;
iVar1 = FUN_8f61a560(6,3,&local_24,4,local_20);
if (iVar1 == 0) {
DAT_8f726078 = 1;
DAT_8f726048 = local_20[0];
FUN_8f63cbb4(s_Qseecom_Init_Done_in_Appsbl_vers_8f66834c,local_20[0]);
}
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
// WARNING: Removing unreachable block (ram,0x8f61b9c8)
void FUN_8f61b98c(void)
{
return;
}
void FUN_8f61b9cc(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
if (DAT_8f726084 != 0) {
FUN_8f63e200();
}
DAT_8f726078 = 0;
FUN_8f63cbb4(s_Qseecom_De_Init_Done_in_Appsbl_8f66837c);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f61ba38(int *param_1)
{
int iVar1;
int iVar2;
int *piVar3;
iVar1 = DAT_8f731d80;
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;
FUN_8f63e200(iVar2);
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
FUN_8f63e200(param_1);
return;
}
void FUN_8f61bac8(int **param_1,int param_2)
{
int iVar1;
uint uVar2;
uint uVar3;
undefined4 uVar4;
int **ppiVar5;
uint uVar6;
int **ppiVar7;
uint uVar8;
iVar1 = DAT_8f731d80;
ppiVar5 = (int **)param_1[1];
if ((param_1 != ppiVar5) && (ppiVar5 != (int **)0x0)) {
uVar8 = 0;
do {
switch(param_2 + -1) {
case 0:
uVar6 = ppiVar5[2][3];
uVar3 = FUN_8f6150b0();
goto LAB_8f61bb48;
case 1:
uVar6 = ppiVar5[2][1];
uVar3 = FUN_8f614ebc();
uVar6 = uVar6 & 0xffff00;
uVar3 = uVar3 & 0xffff00;
goto LAB_8f61bb48;
case 2:
uVar4 = 0;
uVar6 = ppiVar5[2][4];
break;
case 3:
uVar4 = 1;
uVar6 = ppiVar5[2][5];
break;
case 4:
uVar4 = 2;
uVar6 = ppiVar5[2][6];
break;
case 5:
uVar4 = 3;
uVar6 = ppiVar5[2][7];
break;
default:
goto switchD_8f61bb08_caseD_6;
}
uVar3 = FUN_8f614ffc(uVar4);
uVar6 = uVar6 & 0xffff00;
uVar3 = uVar3 & 0xffff00;
LAB_8f61bb48:
if (uVar6 == uVar3) {
ppiVar5 = (int **)param_1[1];
goto joined_r0x8f61bba4;
}
uVar2 = uVar6;
if ((uVar3 <= uVar6 || uVar6 <= uVar8) && (uVar2 = uVar8, uVar6 < uVar8)) {
ppiVar7 = (int **)*ppiVar5;
FUN_8f61ba38(ppiVar5);
ppiVar5 = ppiVar7;
}
uVar8 = uVar2;
ppiVar5 = (int **)ppiVar5[1];
} while ((param_1 != ppiVar5) && (ppiVar5 != (int **)0x0));
ppiVar5 = (int **)param_1[1];
uVar6 = uVar8;
joined_r0x8f61bba4:
do {
if ((ppiVar5 == param_1) || (ppiVar5 == (int **)0x0)) break;
switch(param_2 + -1) {
case 0:
uVar8 = ppiVar5[2][3];
break;
case 1:
uVar8 = ppiVar5[2][1] & 0xffff00;
break;
case 2:
uVar8 = ppiVar5[2][4] & 0xffff00;
break;
case 3:
uVar8 = ppiVar5[2][5] & 0xffff00;
break;
case 4:
uVar8 = ppiVar5[2][6] & 0xffff00;
break;
case 5:
uVar8 = ppiVar5[2][7] & 0xffff00;
break;
default:
goto switchD_8f61bb08_caseD_6;
}
if (uVar8 != uVar6) {
ppiVar5 = (int **)*ppiVar5;
FUN_8f61ba38();
}
ppiVar5 = (int **)ppiVar5[1];
} while( true );
}
uVar4 = 1;
LAB_8f61bc48:
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar4);
}
return;
switchD_8f61bb08_caseD_6:
FUN_8f63cbb4(s_ERROR__Unsupported_version___d__i_8f6683e8,param_2);
uVar4 = 0;
goto LAB_8f61bc48;
}
void FUN_8f61bd04(undefined4 *param_1,undefined4 param_2)
{
byte *pbVar1;
uint uVar2;
undefined4 uVar3;
int iVar4;
uint *puVar5;
undefined4 *puVar6;
uint uVar7;
int iVar8;
undefined4 *puVar9;
uint uStack_60;
uint local_5c [4];
uint local_4c [4];
uint local_3c;
int local_38;
int local_34;
int local_30;
int local_2c;
puVar6 = (undefined4 *)param_1[1];
local_5c[0] = 0;
local_5c[1] = 0;
local_2c = DAT_8f731d80;
local_5c[2] = 0;
local_5c[3] = 0;
local_4c[0] = 0;
local_4c[1] = 0;
local_4c[2] = 0;
local_4c[3] = 0;
local_3c = 0;
local_38 = 0;
local_34 = 0;
local_30 = 0;
if ((param_1 != puVar6) && (puVar6 != (undefined4 *)0x0)) {
do {
switch(param_2) {
case 0:
uVar7 = *(uint *)puVar6[2];
iVar8 = FUN_8f614fbc();
uVar7 = uVar7 & 0xff0000;
uVar2 = iVar8 << 0x10;
break;
default:
goto switchD_8f61bd70_caseD_1;
case 7:
iVar8 = 0;
uVar2 = 0;
do {
iVar4 = uVar2 + 4;
uVar7 = uVar2 & 0xff;
uVar2 = uVar2 + 1;
*(uint *)((int)local_5c + iVar8) = (uint)*(byte *)(puVar6[2] + iVar4 * 4);
uVar7 = FUN_8f614ffc(uVar7);
*(uint *)((int)local_4c + iVar8) = uVar7 & 0xff;
iVar8 = iVar8 + 4;
} while (uVar2 != 4);
if ((((local_5c[0] != local_4c[0]) || (local_5c[1] != local_4c[1])) ||
(local_5c[2] != local_4c[2])) || (local_5c[3] != local_4c[3])) goto LAB_8f61bdbc;
uVar7 = 0;
puVar6 = (undefined4 *)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_8f61bdd8;
case 8:
uVar7 = *(uint *)(puVar6[2] + 8);
uVar2 = FUN_8f625fec();
uVar7 = uVar7 & 0x1800;
uVar2 = uVar2 & 0x1800;
break;
case 9:
uVar7 = *(uint *)(puVar6[2] + 8);
uVar2 = FUN_8f625fec();
uVar7 = uVar7 & 0xf0000;
uVar2 = uVar2 & 0xf0000;
}
if (uVar7 == uVar2) {
puVar6 = (undefined4 *)param_1[1];
goto LAB_8f61bdd8;
}
LAB_8f61bdbc:
puVar6 = (undefined4 *)puVar6[1];
} while ((param_1 != puVar6) && (puVar6 != (undefined4 *)0x0));
puVar6 = (undefined4 *)param_1[1];
uVar7 = 0;
LAB_8f61bdd8:
if ((param_1 != puVar6) && (puVar6 != (undefined4 *)0x0)) {
do {
switch(param_2) {
case 0:
uVar2 = *(uint *)puVar6[2] & 0xff0000;
break;
default:
goto switchD_8f61bd70_caseD_1;
case 7:
iVar8 = puVar6[2];
puVar5 = &uStack_60;
do {
pbVar1 = (byte *)(iVar8 + 0x10);
iVar8 = iVar8 + 4;
puVar5 = puVar5 + 1;
*puVar5 = (uint)*pbVar1;
} while (puVar5 != local_5c + 3);
if ((((local_5c[0] != local_3c) || (local_5c[1] != local_38)) || (local_5c[2] != local_34)
) || (local_5c[3] != local_30)) goto LAB_8f61bf2c;
goto LAB_8f61bf38;
case 8:
uVar2 = *(uint *)(puVar6[2] + 8) & 0x1800;
break;
case 9:
uVar2 = *(uint *)(puVar6[2] + 8) & 0xf0000;
}
if (uVar2 != uVar7) {
LAB_8f61bf2c:
puVar9 = (undefined4 *)*puVar6;
FUN_8f61ba38(puVar6);
puVar6 = puVar9;
}
LAB_8f61bf38:
puVar6 = (undefined4 *)puVar6[1];
} while ((param_1 != puVar6) && (puVar6 != (undefined4 *)0x0));
}
}
uVar3 = 1;
LAB_8f61bf00:
if (local_2c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
switchD_8f61bd70_caseD_1:
FUN_8f63cbb4(s_ERROR__Unsupported_version___d__i_8f6683e8,param_2);
uVar3 = 0;
goto LAB_8f61bf00;
}
void FUN_8f61bfec(short *param_1,int **param_2)
{
short sVar1;
int iVar2;
short sVar3;
undefined4 uVar4;
uint uVar5;
int *piVar6;
int iVar7;
int *piVar8;
uint uVar9;
uint uVar10;
iVar2 = DAT_8f731d80;
sVar1 = *param_1;
uVar9 = *(uint *)(param_1 + 2);
uVar10 = *(uint *)(param_1 + 4);
sVar3 = FUN_8f614e7c();
if ((sVar3 == sVar1) && (uVar5 = FUN_8f614f3c(), uVar5 == (uVar9 & 0xff))) {
uVar9 = FUN_8f614f7c();
if (uVar9 == (uVar10 & 0xff)) {
uVar9 = FUN_8f625fec();
if (((((uVar9 & 0x700) == (uVar10 & 0x700)) &&
(uVar10 = *(uint *)(param_1 + 6), uVar9 = FUN_8f6150b0(), uVar10 <= uVar9)) &&
(uVar10 = *(uint *)(param_1 + 2), uVar9 = FUN_8f614ebc(),
(uVar10 & 0xffff00) <= (uVar9 & 0xffff00))) &&
(((uVar10 = *(uint *)(param_1 + 8), uVar9 = FUN_8f614ffc(0),
(uVar10 & 0xffff00) <= (uVar9 & 0xffff00) &&
(uVar10 = *(uint *)(param_1 + 10), uVar9 = FUN_8f614ffc(1),
(uVar10 & 0xffff00) <= (uVar9 & 0xffff00))) &&
((uVar10 = *(uint *)(param_1 + 0xc), uVar9 = FUN_8f614ffc(2),
(uVar10 & 0xffff00) <= (uVar9 & 0xffff00) &&
(uVar10 = *(uint *)(param_1 + 0xe), uVar9 = FUN_8f614ffc(3),
(uVar10 & 0xffff00) <= (uVar9 & 0xffff00))))))) {
piVar6 = (int *)FUN_8f63e114(0xc);
if (piVar6 == (int *)0x0) {
FUN_8f63cce8();
}
piVar6[1] = 0;
*piVar6 = 0;
iVar7 = FUN_8f63e114(0x28);
piVar6[2] = iVar7;
if (iVar7 == 0) {
FUN_8f63cce8();
}
FUN_8f63e410(piVar6[2],0,0x28);
FUN_8f63e304(piVar6[2],param_1,0x28);
piVar8 = *param_2;
uVar4 = 1;
*piVar6 = (int)piVar8;
piVar6[1] = (int)param_2;
piVar8[1] = (int)piVar6;
*param_2 = piVar6;
goto LAB_8f61c030;
}
}
}
uVar4 = 0;
LAB_8f61c030:
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar4);
}
void FUN_8f61c1f8(int param_1)
{
int iVar1;
int iVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f61bd04(param_1,0);
if ((((((iVar2 != 0) && (iVar2 = FUN_8f61bd04(param_1,7), iVar2 != 0)) &&
(iVar2 = FUN_8f61bd04(param_1,8), iVar2 != 0)) &&
((iVar2 = FUN_8f61bd04(param_1,9), iVar2 != 0 &&
(iVar2 = FUN_8f61bac8(param_1,1), iVar2 != 0)))) &&
((iVar2 = FUN_8f61bac8(param_1,2), iVar2 != 0 &&
((iVar2 = FUN_8f61bac8(param_1,3), iVar2 != 0 &&
(iVar2 = FUN_8f61bac8(param_1,4), iVar2 != 0)))))) &&
((iVar2 = FUN_8f61bac8(param_1,5), iVar2 != 0 && (iVar2 = FUN_8f61bac8(param_1,6), iVar2 != 0))
)) {
for (iVar2 = *(int *)(param_1 + 4); param_1 != iVar2; iVar2 = *(int *)(iVar2 + 4)) {
if (iVar2 == 0) {
FUN_8f63cbb4(s_ERROR__Couldn_t_find_the_suitabl_8f668468);
break;
}
iVar3 = *(int *)(iVar2 + 8);
if (iVar3 != 0) goto LAB_8f61c318;
}
}
iVar3 = 0;
LAB_8f61c318:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar3);
}
void FUN_8f61c334(uint param_1)
{
int iVar1;
undefined4 uVar2;
uint uVar3;
uint uVar4;
uint uVar5;
int iVar6;
uint uVar7;
uint uVar8;
uint uVar9;
bool bVar10;
iVar1 = DAT_8f731d80;
uVar3 = *(uint *)(param_1 + 4);
if (CARRY4(param_1,((uVar3 << 0x10) >> 0x18) << 0x10 | uVar3 << 0x18 | uVar3 >> 0x18 |
((uVar3 << 8) >> 0x18) << 8)) {
FUN_8f63cbb4(s_Integer_over_in_fdt_header__s__d_8f668490,s_fdt_check_header_ext_8f6683d0,0x45);
uVar2 = 4;
}
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';
if ((bVar10 && iVar6 != -1 || bVar10 && iVar6 == -1) &&
(uVar3 = (((uVar3 << 0x10) >> 0x18) << 0x10 | uVar3 << 0x18 | uVar3 >> 0x18 |
((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 <= uVar3)) {
uVar8 = *(uint *)(param_1 + 0x20);
uVar5 = *(uint *)(param_1 + 0xc);
uVar4 = ((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 = uVar4 + uVar7;
iVar6 = param_1 + uVar5;
bVar10 = (char)(CARRY4(uVar4,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 <= uVar3)) {
uVar2 = 0;
goto LAB_8f61c3f8;
}
}
uVar2 = 4;
}
LAB_8f61c3f8:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f61c530(uint param_1,int param_2,int param_3,int *param_4)
{
longlong lVar1;
ulonglong uVar2;
int *piVar3;
int iVar4;
int *piVar5;
int iVar6;
int iVar7;
uint *puVar8;
uint *puVar9;
uint *puVar10;
uint *puVar11;
uint uVar12;
uint uVar13;
int *piVar14;
uint uVar15;
int extraout_r1;
uint uVar16;
uint *puVar17;
uint uVar18;
uint *puVar19;
uint uVar20;
uint uVar21;
uint uVar22;
uint uVar23;
undefined4 uVar24;
uint uVar25;
int iVar26;
uint uVar27;
undefined4 in_lr;
uint uVar28;
int local_120;
int local_11c;
int local_110;
uint *local_fc;
int local_f8;
int local_d4;
uint *local_cc;
int local_bc;
uint local_b4;
int local_a8;
uint local_a4;
uint local_a0;
uint local_9c;
int local_98;
uint local_94;
uint local_90;
uint local_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;
undefined auStack_54 [4];
uint local_50;
int local_2c;
local_2c = DAT_8f731d80;
local_a8 = 0;
piVar3 = (int *)FUN_8f63e114(0xc);
if (piVar3 == (int *)0x0) {
FUN_8f63cbb4(s_Out_of_memory_8f6684b4);
}
else {
piVar3[1] = (int)piVar3;
*piVar3 = (int)piVar3;
if (param_3 == 0) {
FUN_8f63e304(&local_a8,param_1 + 0x2c,4);
uVar20 = local_a8 + param_1;
}
else {
uVar20 = param_3 + param_1;
local_a8 = param_3;
}
if (uVar20 < param_1) {
piVar3 = (int *)0x0;
}
else {
for (; uVar20 + 0x28 < param_1 + param_2; uVar20 = uVar20 + uVar15) {
FUN_8f63e304(auStack_54,uVar20,0x28);
iVar4 = FUN_8f63ee6c(auStack_54);
if (((iVar4 != 0) || (piVar5 = (int *)FUN_8f61c334(auStack_54), piVar5 != (int *)0x0)) ||
(local_a4 = local_50,
CARRY4(uVar20,((local_50 << 0x10) >> 0x18) << 0x10 | local_50 << 0x18 | local_50 >> 0x18
| ((local_50 << 8) >> 0x18) << 8))) break;
local_a0 = local_50;
uVar15 = ((local_50 << 0x10) >> 0x18) << 0x10 | local_50 << 0x18 | local_50 >> 0x18;
if (param_1 + param_2 < uVar20 + (uVar15 | ((local_50 << 8) >> 0x18) << 8)) break;
local_9c = local_50;
uVar15 = uVar15 | ((local_50 << 8) >> 0x18) << 8;
iVar4 = FUN_8f62ae5c(param_4,uVar15);
if (iVar4 != 0) {
FUN_8f63cbb4(s_Tags_addresses_overlap_with_aboo_8f6684c4);
piVar3 = piVar5;
goto LAB_8f61cba8;
}
iVar6 = FUN_8f63fb78(uVar20,&DAT_8f6684f4);
if (-1 < iVar6) {
iVar7 = FUN_8f63fa8c(uVar20,iVar6,s_oem_get_model_8f66c13c + 8,&local_98);
local_f8 = iVar7;
if ((iVar7 != 0) && (local_f8 = iVar4, 0 < local_98)) {
local_f8 = FUN_8f63e114();
if (local_f8 == 0) {
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_dev_tree_c_8f66841c,0xa0,
s_oem_get_model_8f66c13c + 8);
}
FUN_8f63e8d8(local_f8,iVar7,local_98);
}
local_fc = (uint *)FUN_8f63fa8c(uVar20,iVar6,s_qcom_pmic_id_8f6684f8,&local_8c);
puVar8 = (uint *)FUN_8f63fa8c(uVar20,iVar6,s_qcom_board_id_8f668508,&local_94);
if ((local_fc == (uint *)0x0) || ((int)local_8c < 1)) {
if ((puVar8 == (uint *)0x0) || ((int)local_94 < 1)) goto LAB_8f61cc00;
if ((local_94 & 7) == 0) {
local_110 = 2;
uVar24 = 8;
goto LAB_8f61c75c;
}
FUN_8f63cbb4(s_qcom_board_id_in_device_tree_is___8f66856c,local_94,8);
}
else {
if ((puVar8 == (uint *)0x0) || ((int)local_94 < 1)) {
LAB_8f61cc00:
uVar24 = 0xc;
local_110 = 1;
}
else {
if (((local_94 | local_8c) & 7) != 0) {
FUN_8f63cbb4(s_qcom_pmic_id__d__or_qcom_board_i_8f668518);
goto LAB_8f61cb28;
}
uVar24 = 8;
local_110 = 3;
}
LAB_8f61c75c:
puVar9 = (uint *)FUN_8f63fa8c(uVar20,iVar6,s_qcom_msm_id_8f6685ac,&local_90);
uVar23 = local_90;
if (((puVar9 != (uint *)0x0) && (0 < (int)local_90)) &&
(FUN_8f6603f0(local_90,uVar24), uVar13 = local_8c, extraout_r1 == 0)) {
if (local_110 == 1) {
local_cc = (uint *)FUN_8f63e114(0x28);
if (local_cc == (uint *)0x0) {
FUN_8f63cbb4(s_Out_of_memory_8f6684b4);
goto LAB_8f61cb28;
}
FUN_8f63e410(local_cc,0,0x28);
puVar9 = puVar9 + 3;
while (local_90 != 0) {
local_58 = puVar9[-3];
local_64 = puVar9[-2];
local_60 = puVar9[-1];
*local_cc = ((local_58 << 0x10) >> 0x18) << 0x10 | local_58 << 0x18 |
local_58 >> 0x18 | ((local_58 << 8) >> 0x18) << 8;
local_cc[2] = local_64 & 0xff;
local_cc[1] = ((local_64 << 0x10) >> 0x18) << 0x10 | local_64 << 0x18 |
local_64 >> 0x18 | ((local_64 << 8) >> 0x18) << 8;
local_cc[3] = ((local_60 << 0x10) >> 0x18) << 0x10 | local_60 << 0x18 |
local_60 >> 0x18 | ((local_60 << 8) >> 0x18) << 8;
local_5c = local_64;
uVar23 = FUN_8f614ffc(0);
local_cc[4] = uVar23;
uVar23 = FUN_8f614ffc(1);
local_cc[5] = uVar23;
uVar23 = FUN_8f614ffc(2);
local_cc[6] = uVar23;
uVar23 = FUN_8f614ffc(3);
local_cc[8] = uVar20;
local_cc[9] = uVar15;
local_cc[7] = uVar23;
iVar4 = FUN_8f61bfec(local_cc,piVar3);
if (iVar4 == 0) {
puVar9 = puVar9 + 3;
local_90 = local_90 - 0xc;
}
}
LAB_8f61cb0c:
FUN_8f63e200(local_cc);
}
else {
uVar18 = local_94;
if ((int)local_94 < 0) {
uVar18 = local_94 + 7;
}
uVar18 = (int)uVar18 >> 3;
puVar10 = (uint *)FUN_8f63e114(uVar18 * 8);
if (puVar10 == (uint *)0x0) {
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_dev_tree_c_8f66841c,0x115,s_board_data_8f6685b8
);
}
uVar12 = local_90;
if ((int)local_90 < 0) {
uVar12 = local_90 + 7;
}
puVar11 = (uint *)FUN_8f63e114(uVar12 & 0xfffffff8);
if (puVar11 == (uint *)0x0) {
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_dev_tree_c_8f66841c,0x117,
s_platform_data_8f6685c4);
}
if (local_110 == 3) {
uVar12 = local_8c;
if ((int)local_8c < 0) {
uVar12 = local_8c + 7;
}
local_cc = (uint *)FUN_8f63e114(((int)uVar12 >> 3) << 4);
if (local_cc == (uint *)0x0) {
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_dev_tree_c_8f66841c,0x11a,
s_pmic_data_8f6685d4);
}
}
else {
local_cc = (uint *)0x0;
}
if (uVar18 != 0) {
iVar4 = 0;
do {
local_68 = *puVar8;
puVar17 = (uint *)((int)puVar10 + iVar4);
*puVar17 = ((local_68 << 0x10) >> 0x18) << 0x10 | local_68 << 0x18 |
local_68 >> 0x18 | ((local_68 << 8) >> 0x18) << 8;
local_6c = puVar8[1];
iVar4 = iVar4 + 8;
uVar12 = ((local_6c << 0x10) >> 0x18) << 0x10 | local_6c << 0x18 |
local_6c >> 0x18 | ((local_6c << 8) >> 0x18) << 8;
puVar17[1] = uVar12;
if (uVar12 == 0) {
uStack_70 = *puVar8;
puVar17[1] = uStack_70 & 0xff;
}
puVar8 = puVar8 + 2;
} while (uVar18 * 8 != iVar4);
local_94 = local_94 + uVar18 * -8;
}
uVar12 = (int)uVar23 >> 3;
if (uVar12 != 0) {
iVar4 = 0;
do {
local_74 = *puVar9;
puVar8 = (uint *)((int)puVar11 + iVar4);
*puVar8 = ((local_74 << 0x10) >> 0x18) << 0x10 | local_74 << 0x18 |
local_74 >> 0x18 | ((local_74 << 8) >> 0x18) << 8;
local_78 = puVar9[1];
iVar4 = iVar4 + 8;
puVar8[1] = ((local_78 << 0x10) >> 0x18) << 0x10 | local_78 << 0x18 |
local_78 >> 0x18 | ((local_78 << 8) >> 0x18) << 8;
puVar9 = puVar9 + 2;
} while (iVar4 != uVar12 * 8);
local_90 = local_90 + uVar12 * -8;
}
uVar21 = uVar13 + 7;
if (-1 < (int)uVar13) {
uVar21 = uVar13;
}
uVar21 = (int)uVar21 >> 3;
if (local_fc == (uint *)0x0 || local_110 != 3) {
local_bc = uVar18 * uVar12;
iVar4 = uVar21 * local_bc;
}
else {
if (uVar21 != 0) {
uVar13 = 0;
puVar9 = local_cc;
puVar8 = local_fc;
do {
local_7c = *puVar8;
uVar13 = uVar13 + 1;
*puVar9 = ((local_7c << 0x10) >> 0x18) << 0x10 | local_7c << 0x18 |
local_7c >> 0x18 | ((local_7c << 8) >> 0x18) << 8;
local_80 = puVar8[1];
puVar9[1] = ((local_80 << 0x10) >> 0x18) << 0x10 | local_80 << 0x18 |
local_80 >> 0x18 | ((local_80 << 8) >> 0x18) << 8;
local_84 = puVar8[2];
puVar9[2] = ((local_84 << 0x10) >> 0x18) << 0x10 | local_84 << 0x18 |
local_84 >> 0x18 | ((local_84 << 8) >> 0x18) << 8;
local_88 = puVar8[3];
puVar9[3] = ((local_88 << 0x10) >> 0x18) << 0x10 | local_88 << 0x18 |
local_88 >> 0x18 | ((local_88 << 8) >> 0x18) << 8;
puVar9 = puVar9 + 4;
puVar8 = puVar8 + 4;
} while (uVar21 != uVar13);
local_8c = local_8c + uVar21 * -0x10;
local_fc = local_fc + uVar21 * 4;
}
iVar4 = uVar21 * uVar18 * uVar12;
local_bc = iVar4;
}
local_11c = (int)((ulonglong)uVar12 * (ulonglong)uVar18 >> 0x20);
local_11c = uVar18 * ((int)uVar23 >> 0x1f) + local_11c;
uVar2 = (ulonglong)uVar12 * (ulonglong)uVar18 & 0xffffffff;
local_120 = (int)uVar2;
lVar1 = uVar21 * uVar2;
if ((uVar21 * local_11c + (int)((ulonglong)lVar1 >> 0x20) == 0 &&
(int)lVar1 == iVar4) && (local_11c == 0 && local_120 == uVar18 * uVar12)) {
iVar4 = FUN_8f63e114(local_bc * 0x28);
if (iVar4 == 0) {
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_dev_tree_c_8f66841c,0x15c,
s_dt_entry_array_8f6685e0);
}
if (uVar12 != 0) {
iVar6 = 0;
local_b4 = 0;
puVar8 = puVar11;
do {
if (uVar18 != 0) {
uVar23 = 0;
puVar9 = puVar10;
iVar7 = iVar6;
do {
if (local_fc == (uint *)0x0 || local_110 != 3) {
iVar6 = iVar7 + 1;
iVar26 = iVar4 + iVar7 * 0x28;
uVar16 = puVar8[1];
uVar13 = *puVar9;
*(uint *)(iVar4 + iVar7 * 0x28) = *puVar8;
uVar25 = puVar9[1];
*(uint *)(iVar26 + 0xc) = uVar16;
*(uint *)(iVar26 + 4) = uVar13;
*(uint *)(iVar26 + 8) = uVar25;
uVar24 = FUN_8f614ffc(0);
*(undefined4 *)(iVar26 + 0x10) = uVar24;
uVar24 = FUN_8f614ffc(1);
*(undefined4 *)(iVar26 + 0x14) = uVar24;
uVar24 = FUN_8f614ffc(2);
*(undefined4 *)(iVar26 + 0x18) = uVar24;
uVar24 = FUN_8f614ffc(3);
*(uint *)(iVar26 + 0x20) = uVar20;
*(uint *)(iVar26 + 0x24) = uVar15;
*(undefined4 *)(iVar26 + 0x1c) = uVar24;
}
else {
iVar6 = iVar7;
if (uVar21 != 0) {
uVar25 = *puVar8;
uVar28 = puVar8[1];
uVar16 = 0;
uVar27 = *puVar9;
uVar13 = puVar9[1];
puVar17 = local_cc;
puVar19 = (uint *)(iVar4 + iVar7 * 0x28 + 0x10);
do {
uVar22 = puVar17[1];
uVar16 = uVar16 + 1;
puVar19[-4] = uVar25;
puVar19[-1] = uVar28;
puVar19[1] = uVar22;
uVar22 = puVar17[2];
puVar19[-3] = uVar27;
puVar19[-2] = uVar13;
puVar19[2] = uVar22;
uVar22 = *puVar17;
puVar19[4] = uVar20;
puVar19[5] = uVar15;
*puVar19 = uVar22;
puVar19[3] = puVar17[3];
puVar17 = puVar17 + 4;
puVar19 = puVar19 + 10;
} while (uVar21 != uVar16);
iVar6 = iVar7 + uVar21;
}
}
uVar23 = uVar23 + 1;
puVar9 = puVar9 + 2;
iVar7 = iVar6;
} while (uVar18 != uVar23);
}
puVar8 = puVar8 + 2;
local_b4 = local_b4 + 1;
} while (uVar12 != local_b4);
}
if (local_bc != 0) {
iVar7 = 0;
iVar6 = iVar4;
do {
iVar7 = iVar7 + 1;
FUN_8f61bfec(iVar6,piVar3);
iVar6 = iVar6 + 0x28;
} while (iVar7 != local_bc);
}
FUN_8f63e200(puVar10);
FUN_8f63e200(puVar11);
if (local_cc != (uint *)0x0) {
FUN_8f63e200(local_cc);
}
FUN_8f63e200(iVar4);
}
else {
FUN_8f63e200(puVar10);
FUN_8f63e200(puVar11);
if (local_cc != (uint *)0x0) goto LAB_8f61cb0c;
}
}
if (local_f8 != 0) {
FUN_8f63e200(local_f8);
}
}
}
}
LAB_8f61cb28:
}
piVar5 = (int *)FUN_8f61c1f8(piVar3);
if (piVar5 != (int *)0x0) {
local_d4 = piVar5[9];
piVar5 = (int *)piVar5[8];
}
piVar14 = (int *)piVar3[1];
while (piVar3 != piVar14) {
iVar4 = *piVar14;
FUN_8f61ba38();
piVar14 = *(int **)(iVar4 + 4);
}
if (piVar5 == (int *)0x0) {
FUN_8f63cbb4(s_DTB_offset_is_incorrect__kernel_i_8f6685f0);
piVar3 = piVar5;
}
else {
FUN_8f63e304(param_4,piVar5,local_d4);
*(undefined4 *)(param_1 + local_a8) = 0;
piVar3 = param_4;
}
}
}
LAB_8f61cba8:
if (local_2c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(piVar3);
}
return;
}
void FUN_8f61d0cc(undefined4 param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5,
uint param_6)
{
int iVar1;
uint uVar2;
uint *puVar3;
uint uVar4;
uint local_64;
uint local_60;
uint local_5c;
uint local_58;
uint local_54;
uint local_50;
uint local_4c;
uint local_48;
uint local_44;
uint local_40;
uint local_3c;
uint local_38;
uint local_34;
uint local_30;
int local_2c;
local_2c = DAT_8f731d80;
iVar1 = FUN_8f605750();
DAT_8f72608c = param_2;
if (iVar1 == 0) {
DAT_8f726094 = 1;
DAT_8f726098 = 1;
if (DAT_8f726090 != 0) goto LAB_8f61d130;
LAB_8f61d204:
local_54 = ((param_3 << 0x10) >> 0x18) << 0x10 | param_3 << 0x18 | param_3 >> 0x18 |
((param_3 << 8) >> 0x18) << 8;
local_50 = param_3;
uVar2 = FUN_8f64050c(param_1,DAT_8f72608c,&DAT_8f668700,&local_54,4);
if (uVar2 != 0) {
LAB_8f61d4bc:
FUN_8f63cbb4(s_ERROR__Could_not_set_prop_reg_fo_8f668880);
goto LAB_8f61d1e8;
}
LAB_8f61d248:
DAT_8f726090 = 1;
LAB_8f61d174:
if (DAT_8f726098 == 2) {
local_38 = param_6;
local_3c = ((param_6 << 0x10) >> 0x18) << 0x10 | param_6 << 0x18 | param_6 >> 0x18 |
((param_6 << 8) >> 0x18) << 8;
uVar2 = FUN_8f640620(param_1,DAT_8f72608c,&DAT_8f668700,&local_3c,4);
if (uVar2 != 0) goto LAB_8f61d3c4;
}
local_34 = ((param_5 << 0x10) >> 0x18) << 0x10 | param_5 << 0x18 | param_5 >> 0x18 |
((param_5 << 8) >> 0x18) << 8;
local_30 = param_5;
uVar2 = FUN_8f640620(param_1,DAT_8f72608c,&DAT_8f668700,&local_34,4);
if (uVar2 != 0) {
FUN_8f63cbb4(s_Failed_to_add_the_memory_informa_8f668734,uVar2);
}
}
else {
uVar2 = FUN_8f63fb78(param_1,&DAT_8f6684f4);
if ((int)uVar2 < 0) {
FUN_8f63cbb4(s_Could_not_find_memory_node__8f668764);
LAB_8f61d4e8:
FUN_8f63cbb4(s_Could_not_find__address_cells_an_8f66883c,uVar2);
goto LAB_8f61d1e8;
}
puVar3 = (uint *)FUN_8f63fa8c(param_1,uVar2,s__address_cells_8f668784,&local_30);
if ((int)local_30 < 1) {
if (local_30 == 0xffffffff) {
DAT_8f726094 = 2;
FUN_8f63cbb4(s_Using_default__addr_cell_size____8f668794,2);
goto LAB_8f61d2c0;
}
LAB_8f61d400:
FUN_8f63cbb4(s_Error_finding_the__address_cells_8f6687b8);
LAB_8f61d410:
uVar2 = local_30;
if ((int)local_30 < 0) goto LAB_8f61d4e8;
}
else {
if (puVar3 == (uint *)0x0) goto LAB_8f61d400;
uVar4 = *puVar3;
DAT_8f726094 = ((uVar4 << 0x10) >> 0x18) << 0x10 | uVar4 << 0x18 | uVar4 >> 0x18 |
((uVar4 << 8) >> 0x18) << 8;
LAB_8f61d2c0:
puVar3 = (uint *)FUN_8f63fa8c(param_1,uVar2,s__size_cells_8f6687e4,&local_30);
if (0 < (int)local_30) {
if (puVar3 != (uint *)0x0) {
uVar2 = *puVar3;
DAT_8f726098 = ((uVar2 << 0x10) >> 0x18) << 0x10 | uVar2 << 0x18 | uVar2 >> 0x18 |
((uVar2 << 8) >> 0x18) << 8;
goto LAB_8f61d310;
}
LAB_8f61d504:
FUN_8f63cbb4(s_Error_finding_the__size_cells_pr_8f668814);
goto LAB_8f61d410;
}
if (local_30 != 0xffffffff) goto LAB_8f61d504;
DAT_8f726098 = 1;
FUN_8f63cbb4(s_Using_default__size_cell_size____8f6687f0,1);
}
LAB_8f61d310:
if (DAT_8f726090 == 0) {
if (DAT_8f726094 != 2) goto LAB_8f61d204;
local_64 = ((param_4 << 0x10) >> 0x18) << 0x10 | param_4 << 0x18 | param_4 >> 0x18 |
((param_4 << 8) >> 0x18) << 8;
local_60 = param_4;
uVar2 = FUN_8f64050c(param_1,DAT_8f72608c,&DAT_8f668700,&local_64,4);
if (uVar2 != 0) goto LAB_8f61d4bc;
local_5c = ((param_3 << 0x10) >> 0x18) << 0x10 | param_3 << 0x18 | param_3 >> 0x18 |
((param_3 << 8) >> 0x18) << 8;
local_58 = param_3;
uVar2 = FUN_8f640620(param_1,DAT_8f72608c,&DAT_8f668700,&local_5c,4);
if (uVar2 != 0) goto LAB_8f61d3c4;
goto LAB_8f61d248;
}
if (DAT_8f726094 == 2) {
local_4c = ((param_4 << 0x10) >> 0x18) << 0x10 | param_4 << 0x18 | param_4 >> 0x18 |
((param_4 << 8) >> 0x18) << 8;
local_48 = param_4;
uVar2 = FUN_8f640620(param_1,DAT_8f72608c,&DAT_8f668700,&local_4c,4);
if (uVar2 == 0) goto LAB_8f61d130;
}
else {
LAB_8f61d130:
local_44 = ((param_3 << 0x10) >> 0x18) << 0x10 | param_3 << 0x18 | param_3 >> 0x18 |
((param_3 << 8) >> 0x18) << 8;
local_40 = param_3;
uVar2 = FUN_8f640620(param_1,DAT_8f72608c,&DAT_8f668700,&local_44,4);
if (uVar2 == 0) goto LAB_8f61d174;
}
LAB_8f61d3c4:
FUN_8f63cbb4(s_ERROR__Could_not_append_prop_reg_8f6688b0);
}
LAB_8f61d1e8:
if (local_2c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
void FUN_8f61d540(int param_1,int param_2,uint param_3,int param_4)
{
int iVar1;
int iVar2;
uint uVar3;
uint local_34;
uint local_30;
uint local_2c;
uint local_28;
int local_24;
local_24 = DAT_8f731d80;
iVar1 = FUN_8f63ee6c();
if ((iVar1 == 0) && (iVar1 = FUN_8f61c334(param_1), iVar1 == 0)) {
uVar3 = *(uint *)(param_1 + 4);
iVar2 = FUN_8f62ae5c(param_1,(((uVar3 << 0x10) >> 0x18) << 0x10 | uVar3 << 0x18 | uVar3 >> 0x18
| ((uVar3 << 8) >> 0x18) << 8) + 0x400);
if (iVar2 == 0) {
uVar3 = *(uint *)(param_1 + 4);
iVar1 = FUN_8f640888(param_1,param_1,
(((uVar3 << 0x10) >> 0x18) << 0x10 | uVar3 << 0x18 | uVar3 >> 0x18 |
((uVar3 << 8) >> 0x18) << 8) + 0x400);
if (iVar1 == 0) {
iVar1 = FUN_8f63fb78(param_1,s__memory_8f668940);
if (iVar1 < 0) {
FUN_8f63cbb4(s_Could_not_find_memory_node__8f668764);
}
else {
iVar1 = FUN_8f601450(param_1);
if (iVar1 == 0) {
iVar1 = FUN_8f63fb78(param_1,s__chosen_8f66896c);
if (iVar1 < 0) {
FUN_8f63cbb4(s_Could_not_find_chosen_node__8f668974);
}
else {
iVar2 = iVar1;
if (param_2 != 0) {
iVar2 = FUN_8f63e9a0(param_2);
iVar2 = FUN_8f640750(param_1,iVar1,s_bootargs_8f668994,param_2,iVar2 + 1);
if (iVar2 != 0) {
FUN_8f63cbb4(s_ERROR__Cannot_update_chosen_node_8f6689a0);
iVar1 = iVar2;
goto LAB_8f61d584;
}
}
if (param_4 != 0) {
local_34 = ((param_3 << 0x10) >> 0x18) << 0x10 | param_3 << 0x18 | param_3 >> 0x18 |
((param_3 << 8) >> 0x18) << 8;
local_30 = param_3;
iVar2 = FUN_8f64050c(param_1,iVar1,s_linux_initrd_start_8f6689d0,&local_34,4);
if (iVar2 != 0) {
FUN_8f63cbb4(s_ERROR__Cannot_update_chosen_node_8f6689e4);
iVar1 = iVar2;
goto LAB_8f61d584;
}
local_28 = param_3 + param_4;
local_2c = (local_28 * 0x10000 >> 0x18) << 0x10 | local_28 * 0x1000000 |
local_28 >> 0x18 | (local_28 * 0x100 >> 0x18) << 8;
iVar2 = FUN_8f64050c(param_1,iVar1,s_linux_initrd_end_8f668a1c,&local_2c,4);
if (iVar2 != 0) {
FUN_8f63cbb4(s_ERROR__Cannot_update_chosen_node_8f668a30);
iVar1 = iVar2;
goto LAB_8f61d584;
}
}
FUN_8f640be4(param_1);
FUN_8f62446c(param_1);
iVar1 = iVar2;
}
}
else {
FUN_8f63cbb4(s_ERROR__Cannot_update_memory_node_8f668948);
}
}
}
else {
FUN_8f63cbb4(s_Failed_to_move_resize_dtb_buffer_8f668918,iVar1);
}
}
else {
FUN_8f63cbb4(s_Error__Fdt_addresses_overlap_wit_8f6688e4);
}
}
else {
FUN_8f63cbb4(s_Invalid_device_tree_header_8f668a68);
iVar1 = 1;
}
LAB_8f61d584:
if (local_24 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
return;
}
void FUN_8f61d7d8(int param_1,int param_2)
{
int iVar1;
int iVar2;
uint *puVar3;
int iVar4;
int iVar5;
iVar1 = DAT_8f731d80;
if (param_2 != 0) {
iVar2 = param_1 + 8;
iVar4 = param_1;
do {
puVar3 = *(uint **)(iVar4 + 8);
iVar5 = iVar4 + 0xc;
if (puVar3 == (uint *)0x0) {
*(undefined4 *)(iVar4 + 8) = 0x110a000;
}
if (puVar3 == (uint *)0x0) {
puVar3 = (uint *)0x110a000;
}
*puVar3 = *puVar3 & ~((uint)*(byte *)(iVar2 + -3) << (*(uint *)(iVar2 + -8) & 0xff)) |
(uint)*(byte *)(iVar2 + -4) << (*(uint *)(iVar2 + -8) & 0xff);
iVar2 = iVar2 + 0xc;
iVar4 = iVar5;
} while (iVar5 != (short)((short)param_2 - 1U & 0xff) * 0xc + param_1 + 0xc);
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f61d878(int param_1,int param_2)
{
int iVar1;
int iVar2;
uint *puVar3;
int iVar4;
int iVar5;
iVar1 = DAT_8f731d80;
if (param_2 != 0) {
iVar2 = param_1 + 8;
iVar4 = param_1;
do {
puVar3 = *(uint **)(iVar4 + 8);
iVar5 = iVar4 + 0xc;
if (puVar3 == (uint *)0x0) {
*(undefined4 *)(iVar4 + 8) = 0x110a000;
}
if (puVar3 == (uint *)0x0) {
puVar3 = (uint *)0x110a000;
}
*puVar3 = *puVar3 & ~((uint)*(byte *)(iVar2 + -3) << (*(uint *)(iVar2 + -8) & 0xff)) |
(uint)*(byte *)(iVar2 + -4) << (*(uint *)(iVar2 + -8) & 0xff);
iVar2 = iVar2 + 0xc;
iVar4 = iVar5;
} while (iVar5 != (short)((short)param_2 - 1U & 0xff) * 0xc + param_1 + 0xc);
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f61d918(undefined4 param_1)
{
int iVar1;
uint uVar2;
int iVar3;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f6038a8();
if (uVar2 < 0xc001) {
iVar3 = FUN_8f639a0c();
if (iVar3 == 0) {
FUN_8f60047c();
}
else {
FUN_8f6280c0(param_1,0x32,FUN_8f61d918,0);
}
}
else {
FUN_8f62810c(param_1);
DAT_8f7260b8 = 1;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(1);
}
void FUN_8f61d9a8(void)
{
int iVar1;
int iVar2;
uint uVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f600424();
if ((iVar2 == 0) || (uVar3 = FUN_8f6038a8(), 0xc000 < uVar3)) {
LAB_8f61d9cc:
if (iVar1 == DAT_8f731d80) {
return;
}
}
else {
FUN_8f628064(&DAT_8f72609c);
FUN_8f6280c0(&DAT_8f72609c,0,FUN_8f61d918,0);
do {
if (DAT_8f7260b8 != 0) goto LAB_8f61d9cc;
uVar3 = FUN_8f6038a8();
} while (uVar3 < 0xc001);
if (iVar1 == DAT_8f731d80) {
FUN_8f62810c(&DAT_8f72609c);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f61da60(undefined4 param_1,undefined4 param_2,int param_3)
{
int iVar1;
undefined4 uVar2;
iVar1 = DAT_8f731d80;
if (param_3 == 0) {
FUN_8f63cbb4(s__ERROR__Boot_Invalid__RSA_KEY_is_8f663ccf + 1,param_2,param_2);
uVar2 = 0xffffffff;
}
else {
uVar2 = FUN_8f659c80(0x100,param_1,param_2,param_3,1);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
// WARNING: Removing unreachable block (ram,0x8f61db08)
void FUN_8f61dac8(undefined4 param_1,undefined4 param_2,undefined param_3,undefined4 param_4)
{
FUN_8f61dee8(param_1,param_2,param_4,param_3);
return;
}
void FUN_8f61db0c(undefined4 param_1,undefined4 param_2)
{
int iVar1;
undefined4 uVar2;
undefined *local_20;
int local_1c;
local_1c = DAT_8f731d80;
local_20 = &DAT_8f668a88;
iVar1 = FUN_8f64bb00(0,&local_20,0x126);
if (iVar1 == 0) {
FUN_8f63cbb4(s__ERROR__Boot_Invalid__RSA_KEY_is_8f663ccf + 1);
uVar2 = 0xffffffff;
}
else {
uVar2 = FUN_8f61da60(param_1,param_2,iVar1);
FUN_8f659a30(iVar1);
}
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f61dba4(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
if (DAT_8f7260bc != 1) {
FUN_8f61eba8();
FUN_8f61ebdc();
DAT_8f7260bc = 1;
}
if (iVar1 == DAT_8f731d80) {
FUN_8f61ec10();
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f61dc00(void)
{
undefined4 *puVar1;
undefined4 *puVar2;
undefined4 uStack_34;
undefined4 local_30 [5];
int local_1c;
local_30[0] = DAT_8f668c78;
local_30[1] = DAT_8f668c7c;
local_30[2] = DAT_8f668c80;
local_30[3] = DAT_8f668c84;
local_30[4] = DAT_8f668c88;
local_1c = DAT_8f731d80;
DAT_8f7260c0 = 0;
DAT_8f7260c4 = 0;
FUN_8f63e410(&DAT_8f7260c8,0,0x40);
puVar1 = (undefined4 *)0x8f726110;
puVar2 = &uStack_34;
do {
puVar2 = puVar2 + 1;
puVar1 = puVar1 + 1;
*puVar1 = *puVar2;
} while (puVar2 != local_30 + 4);
DAT_8f726108 = 0;
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f61dc9c(void)
{
undefined4 *puVar1;
undefined4 *puVar2;
undefined4 uStack_40;
undefined4 local_3c [8];
int local_1c;
puVar2 = &uStack_40;
local_3c[0] = *(undefined4 *)PTR_DAT_8f61dd34;
local_3c[1] = *(undefined4 *)(PTR_DAT_8f61dd34 + 4);
local_3c[2] = *(undefined4 *)(PTR_DAT_8f61dd34 + 8);
local_3c[3] = *(undefined4 *)(PTR_DAT_8f61dd34 + 0xc);
DAT_8f726128 = 0;
DAT_8f72612c = 0;
local_3c[4] = *(undefined4 *)(PTR_DAT_8f61dd34 + 0x10);
local_3c[5] = *(undefined4 *)(PTR_DAT_8f61dd34 + 0x14);
local_3c[6] = *(undefined4 *)(PTR_DAT_8f61dd34 + 0x18);
local_3c[7] = *(undefined4 *)(PTR_DAT_8f61dd34 + 0x1c);
local_1c = DAT_8f731d80;
FUN_8f63e410(&DAT_8f726130,0,0x40);
puVar1 = (undefined4 *)0x8f726178;
do {
puVar2 = puVar2 + 1;
puVar1 = puVar1 + 1;
*puVar1 = *puVar2;
} while (puVar2 != local_3c + 7);
DAT_8f726170 = 0;
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f61dd38(int param_1,int param_2,int param_3,undefined4 param_4)
{
uint uVar1;
uint uVar2;
int iVar3;
undefined4 uVar4;
uint uVar5;
int iVar6;
uint uVar7;
int local_30;
int local_2c;
uVar7 = (uint)*(byte *)(param_1 + 0x48);
iVar3 = 0;
local_2c = DAT_8f731d80;
uVar4 = 1;
local_30 = 1;
while( true ) {
uVar1 = FUN_8f61eda4();
uVar2 = (param_3 + uVar7) - iVar3;
iVar6 = param_2;
if (uVar1 < uVar2) {
uVar2 = FUN_8f61eda4();
uVar1 = (uint)*(byte *)(param_1 + 0x48);
if (uVar1 == 0) {
iVar6 = param_2 + (iVar3 - uVar7);
uVar5 = uVar2;
}
else {
uVar5 = uVar2 - uVar1;
uVar1 = 0;
}
}
else {
uVar1 = 1;
if (*(byte *)(param_1 + 0x48) == 0) {
uVar5 = uVar2 - uVar7;
iVar6 = param_2 + (iVar3 - uVar7);
}
else {
uVar5 = uVar2 - *(byte *)(param_1 + 0x48);
}
}
FUN_8f61ec50(param_1,uVar2,param_4,uVar4,uVar1);
FUN_8f61ecc4(param_1,iVar6,uVar5,uVar2,&local_30);
if (local_30 != 1) {
FUN_8f63cbb4(s__do_sha_update_returns_error_fro_8f668cab + 1);
uVar4 = 2;
goto LAB_8f61deac;
}
FUN_8f61ed14(param_1 + 0x54,&local_30,param_4,uVar1);
if (local_30 != 1) {
FUN_8f63cbb4(s_do_sha_update_returns_error_from_8f668ce0);
uVar4 = 2;
goto LAB_8f61deac;
}
if (uVar1 == 0) {
FUN_8f61ed60(param_1);
}
iVar3 = iVar3 + uVar2;
*(undefined *)(param_1 + 0x48) = 0;
if (param_3 + uVar7 == iVar3) break;
uVar4 = 0;
}
uVar4 = 0;
LAB_8f61deac:
if (local_2c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar4);
}
void FUN_8f61dee8(int param_1,int param_2,int param_3,int param_4)
{
int iVar1;
int iVar2;
undefined8 uVar3;
iVar1 = DAT_8f731d80;
uVar3 = FUN_8f600e68();
iVar2 = (int)uVar3;
if (param_4 == 1) {
if (iVar2 == 1) {
if (iVar1 == DAT_8f731d80) {
FUN_8f65ab10(param_1,param_2,param_3);
return;
}
goto LAB_8f61dfb4;
}
if (iVar2 != 2) goto LAB_8f61df28;
if ((param_1 != 0 && param_2 != 0) && (param_3 != 0)) {
FUN_8f61dba4();
FUN_8f61dc00();
param_4 = FUN_8f61dd38(&DAT_8f7260c0,param_1,param_2,1);
if (param_4 == 0) {
uVar3 = FUN_8f63e304(param_3,PTR_DAT_8f61e0b8,0x14);
}
else {
LAB_8f61e088:
FUN_8f63cbb4(s_do_sha_update_returns_error__d_8f668d14,param_4);
uVar3 = FUN_8f63cbb4(s_crypto_sha256_returns_error__d_8f668d34,param_4);
iVar2 = (int)uVar3;
if (param_4 != 0) goto LAB_8f61df2c;
}
goto LAB_8f61e02c;
}
LAB_8f61df6c:
param_4 = 3;
}
else if (param_4 == 2) {
if (iVar2 == 1) {
if (iVar1 == DAT_8f731d80) {
FUN_8f65b304(param_1,param_2,param_3);
return;
}
goto LAB_8f61dfb4;
}
if (iVar2 == 2) {
if ((param_1 == 0 || param_2 == 0) || (param_3 == 0)) goto LAB_8f61df6c;
FUN_8f61dba4();
FUN_8f61dc9c();
param_4 = FUN_8f61dd38(&DAT_8f726128,param_1,param_2,2);
if (param_4 != 0) goto LAB_8f61e088;
uVar3 = FUN_8f63e304(param_3,PTR_DAT_8f61e0b4,0x20);
LAB_8f61e02c:
if (iVar1 == DAT_8f731d80) {
return;
}
goto LAB_8f61dfb4;
}
}
else {
LAB_8f61df28:
param_4 = 2;
}
LAB_8f61df2c:
uVar3 = CONCAT44(param_4,iVar2);
if (iVar1 == DAT_8f731d80) {
FUN_8f63cbb4(s_crypto_sha256_returns_error__d_8f668d34);
return;
}
LAB_8f61dfb4:
// WARNING: Subroutine does not return
FUN_8f63cd70((int)uVar3,(int)((ulonglong)uVar3 >> 0x20));
}
// WARNING: Removing unreachable block (ram,0x8f61e0f8)
void FUN_8f61e0bc(void)
{
return;
}
void FUN_8f61e0fc(int param_1)
{
int iVar1;
undefined4 uVar2;
int iVar3;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f63d778(0x40,8);
iVar3 = FUN_8f63e150(uVar2,param_1 * 8 + 0x3fU & 0xffffffc0);
if (iVar3 == 0) {
FUN_8f63cbb4(s_Could_not_allocate_fifo_buffer_8f668d54);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar3);
}
void FUN_8f61e16c(int param_1,int *param_2,undefined4 param_3,undefined4 param_4)
{
int iVar1;
bool bVar2;
iVar1 = DAT_8f731d80;
FUN_8f616558(param_1 + *param_2 * 0x10,param_3,param_4,0);
FUN_8f6254b4(param_1 + *param_2 * 0x10,0x10);
bVar2 = iVar1 == DAT_8f731d80;
*param_2 = *param_2 + 1;
if (bVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f61e1dc(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4)
{
undefined4 uVar1;
int iVar2;
undefined auStack_2c [16];
int local_1c;
local_1c = DAT_8f731d80;
FUN_8f616558(auStack_2c,param_2,param_3,0);
FUN_8f6254b4(auStack_2c,0x10);
uVar1 = FUN_8f603a60(auStack_2c);
iVar2 = FUN_8f6162ec(param_1,1,uVar1,0x10,param_4 | 0x88);
if (iVar2 == 0) {
FUN_8f6161fc(param_1,1,1);
FUN_8f615e48(param_1,1,1);
FUN_8f61629c(param_1,1);
}
else {
FUN_8f63cbb4(s_CRYPTO_WRITE_REG__Reg_write_fail_8f668d74,param_2);
}
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f61e2a4(undefined4 *param_1,undefined4 *param_2)
{
undefined uVar1;
int iVar2;
int iVar3;
int iVar4;
undefined4 uVar5;
undefined4 uVar6;
uVar6 = *param_2;
uVar5 = param_2[1];
param_1[6] = param_2[2];
iVar2 = DAT_8f731d80;
param_1[1] = uVar5;
*param_1 = uVar6;
*(undefined *)(param_1 + 0x1e) = *(undefined *)(param_2 + 7);
uVar1 = *(undefined *)((int)param_2 + 0x1d);
*(undefined *)((int)param_1 + 0x21) = 1;
*(undefined *)((int)param_1 + 0x32) = uVar1;
*(short *)(param_1 + 0xb) = (short)param_2[5];
uVar5 = FUN_8f61e0fc();
param_1[9] = uVar5;
*(undefined *)((int)param_1 + 0x36) = *(undefined *)((int)param_2 + 0x1f);
uVar1 = *(undefined *)((int)param_2 + 0x1e);
*(undefined *)((int)param_1 + 0x39) = 0;
*(undefined *)((int)param_1 + 0x4a) = uVar1;
*(short *)(param_1 + 0x11) = (short)param_2[6];
uVar5 = FUN_8f61e0fc();
param_1[0xf] = uVar5;
uVar1 = *(undefined *)(param_2 + 8);
*(undefined2 *)(param_1 + 0x1a) = 0x8000;
*(undefined *)((int)param_1 + 0x4e) = uVar1;
uVar5 = param_2[3];
*(undefined2 *)(param_1 + 0x1c) = 0x7fc0;
param_1[0x1b] = uVar5;
uVar5 = FUN_8f63d778(0x40,0x40);
iVar3 = FUN_8f63e150(uVar5,0x80);
if (iVar3 == 0) {
FUN_8f63cbb4(s_Could_not_allocate_output_dump_b_8f668da8);
}
iVar4 = param_2[4];
param_1[5] = iVar3;
iVar3 = FUN_8f63e150(0x40,iVar4 * 0x10 + 0x3fU & 0xffffffc0);
if (iVar3 == 0) {
FUN_8f63cbb4(s_Could_not_allocate_ce_array_buff_8f668dd0);
}
iVar4 = DAT_8f731d80;
param_1[2] = iVar3;
param_1[3] = 0;
param_1[4] = 0;
if (iVar2 == iVar4) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f61e3d8(int *param_1)
{
byte bVar1;
int iVar2;
int iVar3;
int *piVar4;
iVar2 = DAT_8f731d80;
piVar4 = param_1 + 6;
bVar1 = *(byte *)((int)param_1 + 0x32);
FUN_8f604c38(*(undefined *)(param_1 + 1));
if (*(char *)(param_1 + 0x1e) != '\0') {
FUN_8f615fa8(piVar4);
}
FUN_8f616160(piVar4,0);
iVar3 = FUN_8f615ff0(piVar4,0);
if (iVar3 == 0) {
FUN_8f616160(piVar4,1);
iVar3 = FUN_8f615ff0(piVar4,1);
if (iVar3 == 0) {
*(uint *)(*param_1 + 0x400) = (uint)(bVar1 >> 1) << 5 | 0xe000f;
if (iVar2 == DAT_8f731d80) {
FUN_8f61e1dc(piVar4,*param_1 + 0x400,
(uint)(*(byte *)((int)param_1 + 0x4a) >> 1) << 5 | 0xe020f,4);
return;
}
goto LAB_8f61e4f8;
}
FUN_8f63cbb4(s_CRYPTO__BAM_Write_FIFO_init_erro_8f668e18);
}
else {
FUN_8f63cbb4(s_CRYPTO__BAM_Read_FIFO_init_error_8f668df4);
}
if (iVar2 == DAT_8f731d80) {
FUN_8f63cbb4(s_CRYPTO__BAM_init_error_8f668e3c);
return;
}
LAB_8f61e4f8:
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f61e4fc(int *param_1,undefined4 *param_2,int param_3)
{
int iVar1;
int iVar2;
int iVar3;
uint uVar4;
uint uVar5;
uint uVar6;
int *piVar7;
iVar1 = DAT_8f731d80;
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) {
FUN_8f63cbb4(s_crypto_set_sha_ctx_invalid_auth_a_8f668e54);
if (iVar1 == DAT_8f731d80) {
FUN_8f63cbb4(s_Authentication_alg_config_failed_8f668e80);
return;
}
goto LAB_8f61e6b8;
}
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_8f61e16c(iVar2,piVar7,iVar3 + 0x200,0);
iVar2 = 0;
FUN_8f61e16c(param_1[2],piVar7,*param_1 + 0x300,param_3);
uVar6 = 0;
do {
while ((param_2[0x14] & 1) == 0) {
uVar6 = uVar6 + 1;
FUN_8f61e16c(param_1[2],piVar7,*param_1 + 0x310 + iVar2,
*(undefined4 *)((int)param_2 + iVar2 + 0x54));
iVar2 = iVar2 + 4;
if (uVar5 <= uVar6) goto LAB_8f61e624;
}
uVar4 = *(uint *)((int)param_2 + iVar2 + 0x54);
uVar6 = uVar6 + 1;
FUN_8f61e16c(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_8f61e624:
FUN_8f61e16c(param_1[2],piVar7,*param_1 + 0x390,*param_2);
if (iVar1 == DAT_8f731d80) {
FUN_8f61e16c(param_1[2],piVar7,*param_1 + 0x394,param_2[1]);
return;
}
LAB_8f61e6b8:
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f61e6bc(int **param_1,int param_2,uint param_3)
{
int iVar1;
int iVar2;
int *piVar3;
int **ppiVar4;
int **ppiVar5;
uint uVar6;
uint uVar7;
undefined4 uVar8;
uint uVar9;
uint uVar10;
iVar1 = DAT_8f731d80;
piVar3 = *param_1;
uVar10 = *(uint *)(param_2 + 0x4c);
if ((uint)(*piVar3 << 8) >> 0x18 == 0) {
uVar6 = param_3 & 0x3f;
if (uVar6 == 0) {
uVar7 = uVar6;
uVar9 = uVar10 + 0x3f & 0xffffffc0;
}
else {
FUN_8f63cbb4(s_Data_start_not_aligned_at_burst_l_8f668ea4,param_2,piVar3,0);
uVar6 = param_3 - (param_3 & 0xffffffc0);
piVar3 = *param_1;
uVar7 = param_3 & 0xffffffc0;
uVar9 = uVar10 + 0x3f + uVar6 & 0xffffffc0;
}
}
else {
uVar6 = 0;
uVar7 = uVar6;
uVar9 = uVar10;
}
ppiVar5 = param_1 + 3;
ppiVar4 = param_1 + 6;
FUN_8f61e16c(param_1[2],ppiVar5,piVar3 + 0xc2,uVar6);
FUN_8f61e16c(param_1[2],ppiVar5,*param_1 + 0xc1,uVar10);
FUN_8f61e16c(param_1[2],ppiVar5,*param_1 + 0x44,uVar9);
FUN_8f61e16c(param_1[2],ppiVar5,*param_1 + 0x48,5);
piVar3 = param_1[2] + (int)param_1[4] * 4;
iVar2 = FUN_8f6162ec(ppiVar4,1,piVar3,(int)param_1[2] + ((int)param_1[3] * 0x10 - (int)piVar3),
0x8c);
if (iVar2 != 0) {
FUN_8f63cbb4(s_CRYPTO_ADD_DESC__Adding_desc_fai_8f668ed0);
}
param_1[4] = param_1[3];
FUN_8f6161fc(ppiVar4,1,1);
FUN_8f615e48(ppiVar4,1,1);
FUN_8f61629c(ppiVar4,1);
if (uVar7 == 0) {
FUN_8f6254b4(param_3,uVar9);
}
else {
FUN_8f6254b4(uVar7,uVar9);
param_3 = uVar7;
}
iVar2 = FUN_8f616444(ppiVar4,1,param_3,uVar9,0xd0);
if (iVar2 == 0) {
FUN_8f6254b4(param_1[5],0x80);
uVar8 = FUN_8f603a60(param_1[5]);
iVar2 = FUN_8f616444(ppiVar4,0,uVar8,0x80,0x80);
if (iVar2 == 0) {
uVar8 = 1;
FUN_8f615e48(ppiVar4,1,1);
FUN_8f61629c(ppiVar4,1);
FUN_8f615e48(ppiVar4,0,1);
FUN_8f61629c(ppiVar4,0);
FUN_8f6254b4(param_1[5],0x80);
goto LAB_8f61e828;
}
}
FUN_8f63cbb4(s_Crypto_send_data_failed_8f668ef8);
uVar8 = 2;
LAB_8f61e828:
FUN_8f61e1dc(ppiVar4,*param_1 + 0x40,0,2);
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar8);
}
return;
}
void FUN_8f61e930(int *param_1)
{
int iVar1;
int *piVar2;
iVar1 = DAT_8f731d80;
piVar2 = param_1 + 6;
FUN_8f61e1dc(piVar2,*param_1 + 0x100,0,2);
FUN_8f615ddc(piVar2,0);
FUN_8f615ddc(piVar2,1);
FUN_8f63e200(param_1[5]);
FUN_8f63e200(param_1[2]);
FUN_8f63e200(param_1[9]);
if (iVar1 == DAT_8f731d80) {
FUN_8f63e200(param_1[0xf]);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f61e9bc(int param_1,int param_2,int param_3)
{
int iVar1;
int iVar2;
undefined4 uVar3;
undefined4 *puVar4;
uint uVar5;
uint uVar6;
int iVar7;
iVar2 = DAT_8f731d80;
iVar7 = *(int *)(param_1 + 0x14);
uVar5 = *(uint *)(iVar7 + 0x60);
uVar5 = uVar5 << 0x18 | (uVar5 >> 8 & 0xff) << 0x10 | (uVar5 >> 0x10 & 0xff) << 8 | uVar5 >> 0x18;
uVar6 = *(uint *)(iVar7 + 100);
if (((uVar5 & 0x104001) != 0) || ((uVar6 >> 0x18 & 2) != 0)) {
FUN_8f604c38(*(undefined *)(param_1 + 4));
FUN_8f63cbb4(s_crypto_get_digest_status_error_8f668f14);
FUN_8f63cbb4(s_status____x_status2____x_8f668f34,uVar5,
uVar6 << 0x18 | (uVar6 >> 8 & 0xff) << 0x10 | (uVar6 >> 0x10 & 0xff) << 8 |
uVar6 >> 0x18);
uVar3 = 2;
goto LAB_8f61ea30;
}
if (param_3 == 1) {
uVar5 = 5;
LAB_8f61ea64:
puVar4 = (undefined4 *)(param_2 + -4);
uVar6 = 0;
do {
iVar1 = uVar6 * 4;
uVar6 = uVar6 + 1;
puVar4 = puVar4 + 1;
*puVar4 = *(undefined4 *)(iVar7 + iVar1);
} while (uVar6 < uVar5);
}
else if (param_3 == 2) {
uVar5 = 8;
goto LAB_8f61ea64;
}
uVar3 = 1;
LAB_8f61ea30:
if (iVar2 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f61eadc)
void FUN_8f61ea90(int param_1,uint *param_2)
{
int iVar1;
uint uVar2;
iVar1 = *(int *)(param_1 + 0x14);
uVar2 = *(uint *)(iVar1 + 0x40);
*param_2 = uVar2 << 0x18 | (uVar2 >> 8 & 0xff) << 0x10 | (uVar2 >> 0x10 & 0xff) << 8 |
uVar2 >> 0x18;
uVar2 = *(uint *)(iVar1 + 0x44);
param_2[1] = uVar2 << 0x18 | (uVar2 >> 8 & 0xff) << 0x10 | (uVar2 >> 0x10 & 0xff) << 8 |
uVar2 >> 0x18;
return;
}
// WARNING: Removing unreachable block (ram,0x8f61eb20)
void FUN_8f61eae0(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f61eb64)
void FUN_8f61eb24(undefined4 param_1)
{
FUN_8f61e2a4(&DAT_8f72619c,param_1);
return;
}
// WARNING: Removing unreachable block (ram,0x8f61eba4)
void FUN_8f61eb68(void)
{
FUN_8f61e930(&DAT_8f72619c);
return;
}
// WARNING: Removing unreachable block (ram,0x8f61ebd8)
void FUN_8f61eba8(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f61ec0c)
void FUN_8f61ebdc(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f61ec4c)
void FUN_8f61ec10(void)
{
FUN_8f61e3d8(&DAT_8f72619c);
return;
}
void FUN_8f61ec50(int param_1,undefined4 param_2,undefined4 param_3,uint param_4,int param_5)
{
int iVar1;
int iVar2;
if (param_4 != 0) {
param_4 = 1;
}
*(uint *)(param_1 + 0x50) = param_4;
iVar1 = DAT_8f731d80;
if (param_5 != 0) {
param_4 = *(uint *)(param_1 + 0x50);
}
*(undefined4 *)(param_1 + 0x4c) = param_2;
if (param_5 != 0) {
*(uint *)(param_1 + 0x50) = param_4 | 2;
}
FUN_8f61e4fc(&DAT_8f72619c,param_1);
iVar2 = DAT_8f731d80;
*(undefined4 *)(param_1 + 0x50) = 0;
if (iVar1 != iVar2) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f61ecc4(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
undefined4 *param_5)
{
int iVar1;
undefined4 uVar2;
bool bVar3;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f61e6bc(&DAT_8f72619c,param_1,param_2);
bVar3 = iVar1 == DAT_8f731d80;
*param_5 = uVar2;
if (bVar3) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f61ed14(undefined4 param_1,undefined4 *param_2)
{
int iVar1;
undefined4 uVar2;
bool bVar3;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f61e9bc(&DAT_8f72619c,param_1);
bVar3 = iVar1 == DAT_8f731d80;
*param_2 = uVar2;
if (bVar3) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f61eda0)
void FUN_8f61ed60(undefined4 param_1)
{
FUN_8f61ea90(&DAT_8f72619c,param_1);
return;
}
// WARNING: Removing unreachable block (ram,0x8f61ede0)
void FUN_8f61eda4(void)
{
FUN_8f61eae0(&DAT_8f72619c);
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61ede4(int param_1,uint *param_2,uint *param_3)
{
uint uVar1;
int iVar2;
uint uVar3;
int iVar4;
iVar2 = DAT_8f731d80;
uVar1 = _DAT_01a01000;
uVar3 = (uint)*(byte *)(param_1 + 0x88);
if (uVar3 != 0) {
if (*(char *)(param_1 + 0x287) == '\0') {
iVar4 = *(int *)(param_1 + 0x24);
uVar3 = 1 - *(byte *)(param_1 + 0x89);
if (1 < *(byte *)(param_1 + 0x89)) {
uVar3 = 0;
}
goto joined_r0x8f61ee30;
}
uVar3 = 0;
}
iVar4 = *(int *)(param_1 + 0x24);
joined_r0x8f61ee30:
if (iVar4 == 1) {
if (uVar3 == 0) {
uVar3 = 0x2048;
}
else {
uVar3 = 0x20d8;
}
*param_2 = uVar3 | 0x20000;
*param_3 = 0x24090;
if (*(char *)(param_1 + 0x8b) != '\0') {
*param_2 = *param_2 | 0x10;
}
}
else if (iVar4 == 2) {
if (uVar3 == 0) {
uVar3 = 0x2840;
}
else {
uVar3 = 0x38c0;
}
*param_2 = uVar3 | 0x20000;
*param_3 = 0x25080;
if (*(char *)(param_1 + 0x8b) != '\0') {
*param_2 = *param_2 | 0x1000;
}
}
else {
if (uVar3 == 0) {
uVar3 = 0x2041;
}
else {
uVar3 = 0x20c3;
}
*param_2 = uVar3 | 0x20000;
*param_3 = 0x24082;
if (*(char *)(param_1 + 0x8b) != '\0') {
*param_2 = *param_2 | 2;
}
}
if (((uVar1 & 0xfffbffff) == 0x10080000 || uVar1 == 0x10060000) || (uVar1 == 0x100b0000)) {
if (*(int *)(param_1 + 0x1c) == 2) {
*param_2 = *param_2 | 0x80000000;
uVar3 = *param_3 | 0x40000000;
}
else {
*param_2 = *param_2 | 0x40000000;
uVar3 = *param_3 | 0x80000000;
}
*param_3 = uVar3;
}
else if (((uVar1 == 0x10090000 || uVar1 == 0x10050000) || (uVar1 >> 0x10 == 0x1007)) ||
(uVar1 == 0x100a0000)) {
if (*(int *)(param_1 + 0x1c) == 2) {
*param_2 = *param_2 | 0x20000000;
uVar3 = *param_3 | 0x40000000;
}
else {
*param_2 = *param_2 | 0x40000000;
uVar3 = *param_3 | 0x20000000;
}
*param_3 = uVar3;
}
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61efe0(int *param_1,uint *param_2,int *param_3)
{
int iVar1;
uint uVar2;
int iVar3;
uint uVar4;
int iVar5;
uint uVar6;
uint uVar7;
int iVar8;
iVar3 = DAT_8f731d80;
uVar4 = param_2[0xb];
iVar1 = ((param_1[2] - uVar4) - param_2[0xc]) * 0x10000;
uVar7 = (param_1[1] - param_2[0xd]) - param_2[0xe];
iVar5 = iVar1 + uVar7;
iVar8 = iVar5;
if ((*(char *)(param_2 + 0x22) == '\0') ||
((iVar8 = iVar1 + (uVar7 >> 1), param_3 != (int *)0x1a27000 &&
(((uint)param_3 & 0xfffeffff) != 0x1a07000)))) {
uVar7 = (uint)(param_1[3] * param_1[4]) >> 3;
}
else {
uVar6 = *param_2;
uVar2 = uVar6 >> 1;
if (uVar2 != 0) {
uVar6 = uVar4 << 0x10;
uVar4 = uVar6 | uVar2;
}
uVar7 = (uint)(param_1[3] * param_1[4]) >> 3;
if (uVar2 != 0) goto LAB_8f61f08c;
}
uVar4 = param_2[0xd] | uVar4 << 0x10;
uVar6 = uVar4;
LAB_8f61f08c:
param_3[5] = *param_1;
param_3[9] = uVar7;
param_3[1] = iVar5;
*param_3 = iVar8;
param_3[3] = iVar8;
param_3[2] = uVar4;
param_3[4] = uVar6;
param_3[0xc] = 0x2243f;
param_3[0xd] = 0x20001;
if ((param_2[6] & 1) == 0) {
uVar4 = 0;
}
else {
uVar4 = 0x2000;
}
if ((param_2[6] & 2) != 0) {
uVar4 = uVar4 | 0x4000;
}
if (_DAT_01a01000 >> 0x10 == 0x1007) {
uVar4 = uVar4 | 0x80000000;
param_3[0x42] = iVar8;
param_3[0x46] = iVar8;
param_3[0x4a] = iVar8;
param_3[0x84] = 0x200000;
param_3[0x85] = 0x200000;
param_3[0x86] = 0x200000;
param_3[0x87] = 0x200000;
}
param_3[0xe] = uVar4;
if (iVar3 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f61f150(uint param_1,uint *param_2,uint *param_3,int param_4)
{
int iVar1;
uint *puVar2;
uint uVar3;
uint uVar4;
uint *puVar5;
uint uVar6;
iVar1 = DAT_8f731d80;
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 (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(param_4,param_2);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61f240(void)
{
int iVar1;
undefined4 uVar2;
iVar1 = DAT_8f731d80;
if (_DAT_01a01000 == 0x10080000 || _DAT_01a01000 == 0x100b0000) {
uVar2 = 0x1420;
}
else {
uVar2 = 0;
if (_DAT_01a01000 == 0x100a0000) {
uVar2 = 0x1334;
}
else {
FUN_8f63cbb4(s_Invalid_PPB0_CONFIG_offset_8f668f60);
}
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61f2d0(uint *param_1,undefined *param_2)
{
char cVar1;
int iVar2;
uint uVar3;
int iVar4;
undefined *puVar5;
uint uVar6;
uint uVar7;
int iVar8;
uint uVar9;
int iVar10;
int iVar11;
uint local_40;
iVar2 = DAT_8f731d80;
if (param_1 == (uint *)0x0) goto LAB_8f61f4d8;
uVar7 = *param_1;
if (*(char *)((int)param_1 + 0x89) == '\0') {
LAB_8f61f344:
cVar1 = *(char *)((int)param_1 + 0x8b);
}
else {
uVar7 = uVar7 >> 1;
if (((_DAT_01a01000 & 0xfffbffff) == 0x10080000 || _DAT_01a01000 == 0x10060000) ||
(_DAT_01a01000 == 0x100b0000)) {
puVar5 = (undefined *)0x1a6b800;
}
else {
puVar5 = (undefined *)0x1a21300;
if (0x1001ffff < _DAT_01a01000) {
puVar5 = (undefined *)0x1a12700;
}
}
if (param_2 != puVar5) goto LAB_8f61f344;
if (*(char *)((int)param_1 + 0x8a) == '\0') {
_DAT_01a013f0 = 0x100;
_DAT_01a012f8 = 0x10;
}
else {
_DAT_01a013f0 = 0x10;
_DAT_01a012f8 = 0x100;
}
_DAT_01a012f4 = 1;
cVar1 = *(char *)((int)param_1 + 0x8b);
}
if (cVar1 != '\0') {
if (((_DAT_01a01000 & 0xfffbffff) == 0x10080000 || _DAT_01a01000 == 0x10060000) ||
(_DAT_01a01000 == 0x100b0000)) {
puVar5 = (undefined *)0x1a6b800;
}
else {
puVar5 = (undefined *)0x1a21300;
if (0x1001ffff < _DAT_01a01000) {
puVar5 = (undefined *)0x1a12700;
}
}
if (param_2 == puVar5) {
iVar4 = FUN_8f61f240();
*(undefined4 *)(iVar4 + 0x1a00004) = 0x10000;
*(undefined4 *)(iVar4 + 0x1a00000) = 0x20;
}
}
if (param_1[8] == 1) {
local_40 = param_1[1];
uVar7 = param_1[0x50];
}
else {
if (param_1[8] == 2) {
if ((param_1[0x23] == 0) || (uVar3 = param_1[0x24], uVar3 == 0)) {
uVar3 = 1;
param_1[0x24] = 1;
}
}
else {
uVar3 = param_1[0x24];
}
local_40 = param_1[1];
uVar7 = FUN_8f66024c(uVar7 + param_1[0x20],uVar3);
}
uVar9 = param_1[0x1c];
iVar11 = uVar9 + param_1[0x1a];
uVar3 = param_1[0x19] + param_1[0x17];
iVar8 = uVar7 + uVar3 + param_1[0x18];
iVar4 = iVar11 * iVar8 + param_1[0x1f];
iVar11 = iVar11 + param_1[0x21] + local_40;
uVar6 = param_1[0x1b];
iVar10 = iVar11 * iVar8 + (param_1[0x1f] - 1);
if (((_DAT_01a01000 & 0xfffbffff) == 0x10080000 || _DAT_01a01000 == 0x10060000) ||
(_DAT_01a01000 == 0x100b0000)) {
puVar5 = &DAT_01a6b600;
}
else {
puVar5 = (undefined *)0x1a21100;
if (0x1001ffff < _DAT_01a01000) {
puVar5 = (undefined *)0x1a12500;
}
}
if (param_2 == puVar5) {
iVar4 = iVar4 + uVar3;
iVar10 = iVar10 - param_1[0x18];
}
*(uint *)(param_2 + 8) = param_1[0x19] | iVar8 * 0x10000;
*(uint *)(param_2 + 0xc) = iVar8 * (iVar11 + uVar6);
*(undefined4 *)(param_2 + 0x10) = 0;
*(uint *)(param_2 + 0x14) = uVar9 * iVar8;
*(undefined4 *)(param_2 + 0x18) = 0;
*(uint *)(param_2 + 0x3c) = uVar3 | (uVar7 + uVar3 + -1) * 0x10000;
*(int *)(param_2 + 0x1c) = iVar4;
*(undefined4 *)(param_2 + 0x20) = 0;
*(int *)(param_2 + 0x24) = iVar10;
*(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;
if (((_DAT_01a01000 & 0xfffbffff) == 0x10080000 || _DAT_01a01000 == 0x10060000) ||
(_DAT_01a01000 == 0x100b0000)) {
iVar4 = 0x59100;
puVar5 = &DAT_01a6b600;
}
else {
puVar5 = (undefined *)0x1a21100;
if (_DAT_01a01000 < 0x10020000) {
iVar4 = 0xec00;
}
else {
iVar4 = 0;
puVar5 = (undefined *)0x1a12500;
}
}
if (param_2 == puVar5) {
*(undefined4 *)(iVar4 + 0x1a12590) = 0x212a;
}
else {
*(undefined4 *)(param_2 + 0x90) = 0x213f;
}
LAB_8f61f4d8:
if (iVar2 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61f6a4(int param_1,int param_2,int param_3)
{
uint uVar1;
int iVar2;
undefined4 uVar3;
undefined4 uVar4;
int iVar5;
undefined4 uVar6;
undefined4 uVar7;
undefined4 in_lr;
int iVar8;
undefined4 local_38;
iVar2 = DAT_8f731d80;
if (_DAT_01a01000 == 0x10060000 || _DAT_01a01000 == 0x100c0000) {
iVar5 = *(int *)(param_1 + 0x24);
uVar6 = 0;
iVar8 = 0x1fff;
uVar4 = 0x2000;
uVar3 = 0;
}
else {
uVar6 = 0;
if (_DAT_01a01000 == 0x10080000 || _DAT_01a01000 == 0x100b0000) {
iVar5 = *(int *)(param_1 + 0x24);
iVar8 = 0x27ff;
uVar4 = 0x2800;
uVar3 = uVar6;
}
else {
uVar6 = 0;
if (_DAT_01a01000 + 0xeffd0000 < 0xffd0000) {
iVar5 = *(int *)(param_1 + 0x24);
iVar8 = 0x1fff;
uVar4 = 0x2000;
uVar3 = 0xc;
if (iVar5 == 1) {
iVar5 = 1;
uVar6 = 2;
}
else {
uVar6 = 0;
}
}
else {
iVar8 = 0xfff;
iVar5 = *(int *)(param_1 + 0x24);
uVar4 = 0x1000;
uVar3 = uVar6;
}
}
}
uVar1 = _DAT_01a01000 >> 0x10;
if (((uVar1 == 0x1006 || uVar1 == 0x1001) || (uVar1 == 0x1008)) || (uVar1 - 0x100b < 2)) {
if (iVar5 == 1) {
uVar7 = 7;
local_38 = 8;
}
else if (iVar5 == 2) {
uVar7 = 4;
local_38 = 0xd;
}
else {
uVar7 = 1;
local_38 = 9;
}
}
else if (iVar5 == 1) {
uVar7 = 0x10;
local_38 = 0x11;
}
else if (iVar5 == 2) {
local_38 = 0xd;
uVar7 = 10;
}
else {
local_38 = 4;
uVar7 = 1;
}
if (*(char *)(param_1 + 0x88) == '\0') {
iVar5 = 0x3000;
}
else {
iVar5 = 0x1800;
}
iVar5 = FUN_8f66024c(iVar5 + iVar8,uVar4);
if (iVar5 == 5) {
FUN_8f63cbb4(s_ERROR___s__Out_of_SMP_s__cnt__d__8f668f7c,s_mdss_smp_setup_8f668f50,5);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,s_platform_msm_shared_mdp5_c_8f668fa0
,0x1c7,s_card_size_sec___0_8f663308 + 0x10);
}
*(int *)(param_2 + 0x50) = iVar5 << 6;
*(int *)(param_2 + 0x54) = iVar5 << 7;
*(int *)(param_2 + 0x58) = iVar5 * 0xc0;
if (*(char *)(param_1 + 0x88) != '\0') {
*(int *)(param_3 + 0x50) = iVar5 << 6;
*(int *)(param_3 + 0x54) = iVar5 << 7;
*(int *)(param_3 + 0x58) = iVar5 * 0xc0;
}
uVar3 = FUN_8f61f150(uVar7,iVar5,uVar6,uVar3);
if (*(char *)(param_1 + 0x88) == '\0') {
if (iVar2 == DAT_8f731d80) {
return;
}
}
else if (iVar2 == DAT_8f731d80) {
FUN_8f61f150(local_38,iVar5,uVar6,uVar3);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61f940(uint *param_1,int param_2)
{
int iVar1;
uint uVar2;
uint uVar3;
undefined4 uVar4;
uint uVar5;
uint uVar6;
iVar1 = DAT_8f731d80;
if (((param_1 != (uint *)0x0) && (0x1004ffff < _DAT_01a01000)) &&
(uVar5 = param_1[0x1c] + param_1[0x1a], uVar5 < 0x19)) {
uVar2 = *param_1;
if (*(char *)((int)param_1 + 0x89) != '\0') {
uVar2 = uVar2 >> 1;
}
if (param_1[8] == 1) {
uVar2 = param_1[0x50];
}
else if (((param_1[8] == 2) && (param_1[0x23] != 0)) && (param_1[0x24] != 0)) {
uVar2 = FUN_8f66024c();
}
uVar3 = param_1[0x1b];
uVar6 = 0x19 - uVar5;
if (uVar3 <= 0x19 - uVar5) {
uVar6 = uVar3;
}
uVar4 = 0x80800000;
if (param_1[0xbc] == 0) {
uVar4 = 0x80000000;
}
*(uint *)(param_2 + 0x170) =
((uVar3 + param_1[1] + uVar5) - uVar6) *
(param_1[0x17] + param_1[0x19] + param_1[0x18] + uVar2) + 1;
*(undefined4 *)(param_2 + 4) = uVar4;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61fa54(void)
{
uint uVar1;
uint uVar2;
int iVar3;
int iVar4;
iVar3 = DAT_8f731d80;
uVar2 = _DAT_01a01000;
uVar1 = _DAT_01a01000 >> 0x10;
if ((uVar1 != 0x1007) && (iVar4 = FUN_8f618c9c(1), iVar4 == 0)) {
if (uVar2 < 0x10030000) {
uRam01ac8004 = 1;
}
if (uVar1 == 0x1000) {
_DAT_01ac80d8 = 0x707;
_DAT_01ac80f0 = 0x30;
_DAT_01ac8124 = 1;
_DAT_01ac8178 = 0xfff;
_DAT_01ac817c = 0xfff0fff;
_DAT_01ac8160 = 0x22222222;
_DAT_01ac8164 = 0x2222;
}
else if (uVar1 == 0x1001) {
_DAT_01ac80d8 = 0x707;
_DAT_01ac8124 = 3;
}
}
if (iVar3 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61fb4c(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,
undefined4 *param_5)
{
int iVar1;
undefined4 uVar2;
iVar1 = DAT_8f731d80;
if (param_1 == 2) {
*param_2 = 0x10000;
*param_3 = 0x100;
if (((_DAT_01a01000 & 0xfffbffff) == 0x10080000 || _DAT_01a01000 == 0x10060000) ||
(_DAT_01a01000 == 0x100b0000)) {
uVar2 = 0x1a6c000;
}
else {
uVar2 = 0x1a21b00;
if (0x1001ffff < _DAT_01a01000) {
uVar2 = 0x1a12f00;
}
}
*param_4 = uVar2;
if (((_DAT_01a01000 & 0xfffbffff) == 0x10080000 || _DAT_01a01000 == 0x10060000) ||
(_DAT_01a01000 == 0x100b0000)) {
uVar2 = 0x1a6b800;
}
else {
uVar2 = 0x1a21300;
if (0x1001ffff < _DAT_01a01000) {
uVar2 = 0x1a12700;
}
}
}
else {
*param_2 = 0x100;
*param_3 = 0x10000;
if (((_DAT_01a01000 & 0xfffbffff) == 0x10080000 || _DAT_01a01000 == 0x10060000) ||
(_DAT_01a01000 == 0x100b0000)) {
uVar2 = 0x1a6b800;
}
else {
uVar2 = 0x1a21300;
if (0x1001ffff < _DAT_01a01000) {
uVar2 = 0x1a12700;
}
}
*param_4 = uVar2;
if (((_DAT_01a01000 & 0xfffbffff) == 0x10080000 || _DAT_01a01000 == 0x10060000) ||
(_DAT_01a01000 == 0x100b0000)) {
uVar2 = 0x1a6c000;
}
else {
uVar2 = 0x1a21b00;
if (0x1001ffff < _DAT_01a01000) {
uVar2 = 0x1a12f00;
}
}
}
*param_5 = uVar2;
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61fd64(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
_DAT_01a012ac = 0x40000000;
FUN_8f613d18(0x14);
_DAT_01a012ac = 0x40000040;
_DAT_01a012b4 = 0x40000000;
_DAT_01a013a8 = 0x400000;
FUN_8f613d18(0x14);
_DAT_01a013a8 = 0x404000;
_DAT_01a013b0 = 0x40000000;
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61fde0(uint *param_1)
{
int iVar1;
uint uVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar3 = param_1[0x24] - 2;
if (iVar3 != 0) {
iVar3 = 1;
}
uVar2 = *param_1;
if (iVar3 != 0) {
uVar2 = FUN_8f66024c();
}
if (*(char *)((int)param_1 + 0x287) != '\0') {
uVar2 = uVar2 >> 1;
}
_DAT_01a7103c =
param_1[0x2e] << 0x10 | param_1[0x34] << 0x1c | param_1[0x31] | param_1[0x2f] << 8 |
param_1[0x30] << 4;
_DAT_01a71038 = param_1[0x2c] << 8 | param_1[0x2b] << 0xc | param_1[0x2d];
_DAT_01a71034 =
param_1[0x33] << 10 | param_1[0x32] << 0xb | 1 | param_1[0x25] << 8 | param_1[0x26] << 7 |
param_1[0x27] << 4 | param_1[0x28] << 3 | param_1[0x29] << 2 | param_1[0x2a] << 1 |
iVar3 << 9 | uVar2 << 0x10;
if (*(char *)((int)param_1 + 0x287) != '\0') {
uRam01a71834 = _DAT_01a71034;
uRam01a71838 = _DAT_01a71038;
uRam01a7183c = _DAT_01a7103c;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f61ff30)
void FUN_8f61fef4(undefined4 param_1)
{
DAT_8f726218 = param_1;
return;
}
// WARNING: Removing unreachable block (ram,0x8f61ff70)
void FUN_8f61ff34(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6200b0)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f61ff74(int param_1,int param_2)
{
uint uVar1;
uint uVar2;
uint uVar3;
_DAT_01a45004 = *(uint *)(param_1 + 4);
if ((*(char *)(param_2 + 0x88) != '\0') && (*(char *)(param_2 + 0x8b) == '\0')) {
_DAT_01a45004 = _DAT_01a45004 >> 1;
}
_DAT_01a45004 = _DAT_01a45004 | *(int *)(param_1 + 8) << 0x10;
_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) {
uVar2 = 0x1000;
_DAT_01a02000 = 0x200;
}
else if (*(int *)(param_2 + 0x24) == 2) {
uVar2 = 0x200000;
_DAT_01a02000 = 0x40000;
}
else {
uVar2 = 8;
_DAT_01a02000 = 1;
}
if ((*(char *)(param_2 + 0x88) != '\0') && (*(char *)(param_2 + 0x8b) != '\0')) {
_DAT_01a02000 = _DAT_01a02000 | uVar2;
}
uVar1 = uRam01a02204;
if ((*(char *)(param_2 + 0x88) != '\0') && (uVar3 = (uint)*(byte *)(param_2 + 0x8b), uVar3 == 0))
{
_DAT_01a46020 = 0x100;
_DAT_01a46024 = 0xff;
_DAT_01a46050 = 0x100;
_DAT_01a46054 = 0xff;
_DAT_01a46080 = 0x100;
_DAT_01a46084 = 0xff;
_DAT_01a460b0 = 0x100;
_DAT_01a460b4 = 0xff;
uVar1 = uVar2;
_DAT_01a46000 = uVar3;
_DAT_01a46004 = _DAT_01a45004;
if (*(char *)(param_2 + 0x89) == '\0') {
uRam01a02004 = uVar2;
uVar1 = uRam01a02204;
}
}
uRam01a02204 = uVar1;
return;
}
// WARNING: Removing unreachable block (ram,0x8f620180)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f6200b4(void)
{
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_8f620184(int param_1)
{
char cVar1;
int iVar2;
uint uVar3;
int iVar4;
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_8f731d80;
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;
}
}
uVar3 = _DAT_01a01000 >> 0x10;
if ((uVar3 == 0x1008 || uVar3 == 0x1006) || (uVar3 - 0x100b < 2)) {
local_34 = 2;
iVar4 = 2;
local_30[0] = 2;
local_30[1] = 2;
local_30[2] = 2;
}
else {
uVar5 = uVar3 & 0xfffffffd;
bVar8 = 0x1004 < uVar5;
if (uVar5 != 0x1005) {
bVar8 = uVar3 != 0x1009;
}
if (bVar8 && (uVar5 != 0x1005 && uVar3 != 0x100a)) goto LAB_8f620220;
iVar4 = 1;
local_34 = 1;
local_30[0] = 2;
local_30[1] = 2;
local_30[2] = 2;
}
local_30[2] = 2;
local_30[1] = 2;
local_30[0] = 2;
if ((_DAT_01a01000 & 0xfffeffff) == 0x100a0000) {
iVar2 = 0x1ab0020;
}
else {
iVar2 = 0x1ac8020;
if (_DAT_01a01000 >> 0x10 == 0x1007) {
iVar2 = 0x1ab0000;
}
}
piVar6 = &local_34;
cVar1 = *(char *)(param_1 + 0x88);
iVar2 = iVar2 - (int)piVar6;
while( true ) {
uVar3 = *(uint *)(iVar2 + (int)piVar6) & ~(3 << (iVar7 << 1 & 0xffU)) |
iVar4 << (iVar7 << 1 & 0xffU);
if (cVar1 != '\0') {
uVar3 = uVar3 & ~(3 << (unaff_r9 << 1 & 0xffU)) | iVar4 << (unaff_r9 << 1 & 0xffU);
}
*(uint *)(iVar2 + (int)piVar6) = uVar3;
if (piVar6 == local_30 + 2) break;
piVar6 = piVar6 + 1;
iVar4 = *piVar6;
}
LAB_8f620220:
if (local_24 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f62030c(int param_1,undefined4 param_2)
{
uint uVar1;
undefined4 uVar2;
undefined4 uVar3;
uint local_2c;
uint local_28;
undefined4 local_24;
undefined4 local_20;
int local_1c;
local_1c = DAT_8f731d80;
FUN_8f61fb4c(*(undefined4 *)(param_1 + 0x1c),&local_2c,&local_28,&local_24,&local_20);
FUN_8f61f2d0(param_1,local_24);
FUN_8f61f940(param_1,local_24);
if (*(char *)(param_1 + 0x287) != '\0') {
FUN_8f61f2d0(param_1,local_20);
FUN_8f61f940(param_1,local_20);
}
if (_DAT_01a01000 >> 0x10 != 0x1007) {
FUN_8f61fd64();
}
if (*(int *)(param_1 + 0x24) == 1) {
uVar3 = 0x1a17000;
uVar2 = 0x1a15000;
}
else {
uVar2 = 0x1a25000;
uVar3 = 0x1a27000;
if (*(int *)(param_1 + 0x24) != 2) {
uVar2 = 0x1a05000;
uVar3 = 0x1a07000;
}
}
FUN_8f61fa54();
if (_DAT_01a01000 >> 0x10 != 0x1007) {
FUN_8f61f6a4(param_1,uVar2,uVar3);
}
FUN_8f6200b4();
FUN_8f620184(param_1);
FUN_8f61efe0(param_2,param_1,uVar2);
if (*(char *)(param_1 + 0x88) != '\0') {
FUN_8f61efe0(param_2,param_1,uVar3);
}
FUN_8f61ff74(param_2,param_1);
if (*(int *)(param_1 + 0x1c) == 2) {
_DAT_01a02014 = 0x1f30;
uVar1 = 0x30;
}
else {
_DAT_01a02014 = 0x1f30;
*(undefined4 *)(param_1 + 0x1c) = 1;
if (*(char *)(param_1 + 0x8a) == '\0') {
_DAT_01a02014 = 0x1f20;
uVar1 = 0x20;
}
else {
uVar1 = 0x30;
}
}
if (((*(char *)(param_1 + 0x88) != '\0') && (*(char *)(param_1 + 0x287) == '\0')) &&
(*(char *)(param_1 + 0x89) == '\0')) {
_DAT_01a02014 = uVar1 | 0x181f00;
}
if (*(int *)(param_1 + 0x20) == 1) {
if (*(code **)(param_1 + 0x230) != (code *)0x0) {
(**(code **)(param_1 + 0x230))(param_1);
}
}
else if ((*(int *)(param_1 + 0x20) == 2) && (*(int *)(param_1 + 0x8c) != 0)) {
FUN_8f61fde0(param_1);
}
if (*(char *)(param_1 + 0x287) != '\0') {
if (*(char *)(param_1 + 0x8b) == '\0') {
if (*(int *)(param_1 + 0x1c) == 2) {
_DAT_01a02214 = 0x1f20;
}
else {
_DAT_01a02214 = 0x1f20;
*(undefined4 *)(param_1 + 0x1c) = 1;
if (*(char *)(param_1 + 0x8a) == '\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_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f6205c0(int param_1,undefined4 param_2)
{
int iVar1;
undefined4 uVar2;
undefined4 uVar3;
iVar1 = DAT_8f731d80;
FUN_8f61f2d0(param_1,0x1a12500);
if (*(int *)(param_1 + 0x24) == 1) {
uVar3 = 0x1a17000;
uVar2 = 0x1a15000;
}
else {
uVar2 = 0x1a25000;
uVar3 = 0x1a27000;
if (*(int *)(param_1 + 0x24) != 2) {
uVar2 = 0x1a05000;
uVar3 = 0x1a07000;
}
}
if (_DAT_01a01000 >> 0x10 != 0x1007) {
FUN_8f61fd64();
}
FUN_8f61fa54();
FUN_8f61f6a4(param_1,uVar2,uVar3);
FUN_8f6200b4();
FUN_8f620184(param_1);
FUN_8f61efe0(param_2,param_1,uVar2);
if (*(char *)(param_1 + 0x88) != '\0') {
FUN_8f61efe0(param_2,param_1,uVar3);
}
FUN_8f61ff74(param_2,param_1);
_DAT_01a02014 = 0x1f10;
if (*(char *)(param_1 + 0x88) != '\0') {
_DAT_01a02014 = 0x181f10;
}
_DAT_01a01004 = 9;
_DAT_01a012e0 = 0x1111;
_DAT_01a011ec = 1;
_DAT_01a013f8 = 1;
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f620710(int param_1,undefined4 param_2)
{
int iVar1;
undefined *puVar2;
iVar1 = DAT_8f731d80;
if (((_DAT_01a01000 & 0xfffbffff) == 0x10080000 || _DAT_01a01000 == 0x10060000) ||
(_DAT_01a01000 == 0x100b0000)) {
puVar2 = &DAT_01a6bc00;
}
else {
puVar2 = (undefined *)0x1a21700;
if (0x1001ffff < _DAT_01a01000) {
puVar2 = (undefined *)0x1a12b00;
}
}
FUN_8f61f2d0(param_1,puVar2);
*(undefined4 *)(param_1 + 0x24) = 1;
if (_DAT_01a01000 >> 0x10 != 0x1007) {
FUN_8f61fd64();
}
FUN_8f61fa54();
FUN_8f61f6a4(param_1,0x1a15000,0x1a17000);
FUN_8f6200b4();
FUN_8f61efe0(param_2,param_1);
if (*(char *)(param_1 + 0x88) != '\0') {
FUN_8f61efe0(param_2,param_1);
}
FUN_8f61ff74(param_2,param_1);
if (*(char *)(param_1 + 0x88) == '\0') {
_DAT_01a02014 = 0x40;
}
else {
_DAT_01a02014 = 0x181f40;
}
_DAT_01a01004 = 0x3000000;
_DAT_01a012e0 = 0x1111;
_DAT_01a011ec = 1;
_DAT_01a013f8 = 1;
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f62088c(int param_1,undefined4 param_2)
{
char cVar1;
undefined4 uVar2;
int iVar3;
undefined4 uVar4;
uint uStack_2c;
uint uStack_28;
int local_24;
int local_20;
int local_1c;
local_1c = DAT_8f731d80;
if (param_1 == 0) {
uVar2 = 0xfffffff8;
}
else {
FUN_8f61fb4c(*(undefined4 *)(param_1 + 0x1c),&uStack_2c,&uStack_28,&local_24,&local_20);
if (*(char *)(param_1 + 0x89) == '\0') {
cVar1 = *(char *)(param_1 + 0x8b);
}
else {
if (*(char *)(param_1 + 0x8b) == '\0') {
_DAT_01a012f8 = 2;
}
else {
_DAT_01a012f8 = 6;
}
if (*(char *)(param_1 + 0x8a) == '\0') {
_DAT_01a012f8 = _DAT_01a012f8 | 0x100;
}
else {
_DAT_01a012f8 = _DAT_01a012f8 | 0x10;
}
_DAT_01a012f4 = 1;
cVar1 = *(char *)(param_1 + 0x8b);
_DAT_01a013f0 = _DAT_01a012f8;
}
if (cVar1 != '\0') {
iVar3 = FUN_8f61f240();
*(undefined4 *)(iVar3 + 0x1a00004) = 0x310000;
*(undefined4 *)(iVar3 + 0x1a00000) = 0x20;
}
if (_DAT_01a01000 >> 0x10 != 0x1007) {
FUN_8f61fd64();
}
if (*(char *)(param_1 + 0x287) != '\0') {
uStack_2c = uStack_28 | uStack_2c;
}
if (*(int *)(param_1 + 0x24) == 1) {
uVar4 = 0x1a17000;
uVar2 = 0x1a15000;
}
else {
uVar2 = 0x1a25000;
uVar4 = 0x1a27000;
if (*(int *)(param_1 + 0x24) != 2) {
uVar2 = 0x1a05000;
uVar4 = 0x1a07000;
}
}
_DAT_01a01004 = uStack_2c;
FUN_8f61fa54();
FUN_8f61f6a4(param_1,uVar2,uVar4);
FUN_8f6200b4();
FUN_8f620184(param_1);
FUN_8f61efe0(param_2,param_1,uVar2);
if (*(char *)(param_1 + 0x88) != '\0') {
FUN_8f61efe0(param_2,param_1,uVar4);
}
FUN_8f61ff74(param_2,param_1);
*(undefined4 *)(local_24 + 0x90) = 0x213f;
if (*(int *)(param_1 + 0x1c) == 2) {
_DAT_01a02014 = 0x21f30;
}
else {
*(undefined4 *)(param_1 + 0x1c) = 1;
_DAT_01a02014 = 0x21f30;
if (*(char *)(param_1 + 0x8a) == '\0') {
_DAT_01a02014 = 0x21f20;
}
}
if (*(int *)(param_1 + 0x20) == 1) {
if (*(code **)(param_1 + 0x230) != (code *)0x0) {
(**(code **)(param_1 + 0x230))(param_1);
}
}
else if ((*(int *)(param_1 + 0x20) == 2) && (*(int *)(param_1 + 0x8c) != 0)) {
FUN_8f61fde0(param_1);
}
if ((*(char *)(param_1 + 0x287) == '\0') ||
(*(undefined4 *)(local_20 + 0x90) = 0x213f, *(char *)(param_1 + 0x8b) != '\0')) {
uVar2 = 0;
}
else {
if (*(int *)(param_1 + 0x1c) == 2) {
_DAT_01a02214 = 0x21f20;
}
else {
*(undefined4 *)(param_1 + 0x1c) = 1;
_DAT_01a02214 = 0x21f20;
if (*(char *)(param_1 + 0x8a) == '\0') {
_DAT_01a02214 = 0x21f30;
}
}
uVar2 = 0;
}
}
if (local_1c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f620b64(int param_1)
{
int iVar1;
int iVar2;
undefined4 local_1c;
undefined4 uStack_18;
int local_14;
local_14 = DAT_8f731d80;
FUN_8f61ede4(param_1,&local_1c,&uStack_18);
_DAT_01a02018 = local_1c;
if ((*(char *)(param_1 + 0x88) != '\0') && (*(char *)(param_1 + 0x8b) == '\0')) {
uRam01a02218 = uStack_18;
}
iVar1 = 0x1a12700;
if (*(int *)(param_1 + 0x1c) != 1) {
iVar1 = 0x1a12f00;
}
if (((_DAT_01a01000 & 0xfffbffff) == 0x10080000 || _DAT_01a01000 == 0x10060000) ||
(_DAT_01a01000 == 0x100b0000)) {
iVar2 = 0x59100;
}
else if (_DAT_01a01000 < 0x10020000) {
iVar2 = 0xec00;
}
else {
iVar2 = 0;
}
*(undefined4 *)(iVar2 + iVar1) = 1;
if (local_14 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f620c58(int param_1)
{
int iVar1;
int iVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar3 = 0x1a12f00;
if (*(int *)(param_1 + 0x1c) == 1) {
iVar3 = 0x1a12700;
}
iVar2 = FUN_8f600b80();
if (iVar2 == 0) {
if (((_DAT_01a01000 & 0xfffbffff) == 0x10080000 || _DAT_01a01000 == 0x10060000) ||
(_DAT_01a01000 == 0x100b0000)) {
iVar2 = 0x59100;
}
else if (_DAT_01a01000 < 0x10020000) {
iVar2 = 0xec00;
}
else {
iVar2 = 0;
}
*(undefined4 *)(iVar2 + iVar3) = 0;
FUN_8f613cc4(0x3c);
_DAT_01a01018 = 0xff777713;
}
_DAT_01a01010 = 0;
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f620d48(void)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f600b80();
if (iVar2 == 0) {
_DAT_01a01018 = 0xff777713;
}
_DAT_01a01010 = 0;
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f620da8(int param_1)
{
undefined4 local_1c;
undefined4 uStack_18;
int local_14;
local_14 = DAT_8f731d80;
FUN_8f61ede4(param_1,&local_1c,&uStack_18);
_DAT_01a02018 = local_1c;
if ((*(char *)(param_1 + 0x88) != '\0') && (*(char *)(param_1 + 0x8b) == '\0')) {
uRam01a02218 = uStack_18;
}
_DAT_01a0201c = 1;
if (local_14 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f620e2c(undefined4 param_1)
{
undefined4 *puVar1;
undefined4 local_14;
undefined auStack_10 [4];
int local_c;
local_c = DAT_8f731d80;
FUN_8f61ede4(param_1,&local_14,auStack_10);
_DAT_01a02018 = local_14;
if (((_DAT_01a01000 & 0xfffbffff) == 0x10080000 || _DAT_01a01000 == 0x10060000) ||
(_DAT_01a01000 == 0x100b0000)) {
puVar1 = (undefined4 *)&DAT_01a6b600;
}
else {
puVar1 = (undefined4 *)0x1a21100;
if (0x1001ffff < _DAT_01a01000) {
puVar1 = (undefined4 *)0x1a12500;
}
}
*puVar1 = 1;
if (local_c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f620ef4(undefined4 param_1)
{
undefined4 *puVar1;
undefined4 local_14;
undefined auStack_10 [4];
int local_c;
local_c = DAT_8f731d80;
FUN_8f61ede4(param_1,&local_14,auStack_10);
_DAT_01a02018 = local_14;
if (((_DAT_01a01000 & 0xfffbffff) == 0x10080000 || _DAT_01a01000 == 0x10060000) ||
(_DAT_01a01000 == 0x100b0000)) {
puVar1 = (undefined4 *)&DAT_01a6bc00;
}
else {
puVar1 = (undefined4 *)0x1a21700;
if (0x1001ffff < _DAT_01a01000) {
puVar1 = (undefined4 *)0x1a12b00;
}
}
*puVar1 = 1;
if (local_c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f620fbc(void)
{
int iVar1;
int iVar2;
undefined4 *puVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f600b80();
if (iVar2 == 0) {
if (((_DAT_01a01000 & 0xfffbffff) == 0x10080000 || _DAT_01a01000 == 0x10060000) ||
(_DAT_01a01000 == 0x100b0000)) {
puVar3 = (undefined4 *)&DAT_01a6b600;
}
else {
puVar3 = (undefined4 *)0x1a21100;
if (0x1001ffff < _DAT_01a01000) {
puVar3 = (undefined4 *)0x1a12500;
}
}
*puVar3 = 0;
FUN_8f613cc4(0x3c);
_DAT_01a01018 = 0xff777713;
}
_DAT_01a01010 = 0;
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f621150(void)
{
int iVar1;
int iVar2;
uint uVar3;
code *pcVar4;
bool bVar5;
iVar2 = DAT_8f731d80;
iVar1 = DAT_8f726238;
if (DAT_8f726238 == 0) {
switchD_8f621190_caseD_4:
pcVar4 = (code *)0xfffffff8;
goto LAB_8f6211d8;
}
FUN_8f61fef4(*(undefined4 *)(DAT_8f726238 + 0x430));
switch(*(undefined4 *)(iVar1 + 0xc)) {
case 3:
case 0xb:
pcVar4 = (code *)FUN_8f626318(iVar1,DAT_8f726238 + 0x410);
break;
default:
goto switchD_8f621190_caseD_4;
case 6:
pcVar4 = (code *)FUN_8f620710(iVar1,DAT_8f726238 + 0x410);
goto joined_r0x8f6212cc;
case 8:
uVar3 = FUN_8f61ff34();
bVar5 = 0xc < uVar3;
if (uVar3 != 0xd) {
bVar5 = uVar3 != 5;
}
if (!bVar5 || (uVar3 == 0xd || uVar3 == 6)) {
pcVar4 = (code *)FUN_8f62237c(DAT_8f726238);
}
else {
pcVar4 = (code *)FUN_8f622878();
}
if (pcVar4 != (code *)0x0) goto LAB_8f6211d8;
if (*(code **)(iVar1 + 0x404) != (code *)0x0) {
(**(code **)(iVar1 + 0x404))(iVar1);
}
pcVar4 = (code *)FUN_8f62030c(iVar1,DAT_8f726238 + 0x410);
joined_r0x8f6212cc:
if (pcVar4 != (code *)0x0) goto LAB_8f6211d8;
goto LAB_8f621208;
case 9:
uVar3 = FUN_8f61ff34();
bVar5 = 0xc < uVar3;
if (uVar3 != 0xd) {
bVar5 = uVar3 != 5;
}
if (!bVar5 || (uVar3 == 0xd || uVar3 == 6)) {
pcVar4 = (code *)FUN_8f62237c(DAT_8f726238);
}
else {
pcVar4 = (code *)FUN_8f622878();
}
if (pcVar4 != (code *)0x0) goto LAB_8f6211d8;
pcVar4 = (code *)FUN_8f62088c(iVar1,DAT_8f726238 + 0x410);
break;
case 0xc:
pcVar4 = (code *)FUN_8f6205c0(iVar1,DAT_8f726238 + 0x410);
}
if (pcVar4 == (code *)0x0) {
LAB_8f621208:
pcVar4 = *(code **)(iVar1 + 0x408);
if (pcVar4 != (code *)0x0) {
pcVar4 = (code *)(*pcVar4)(iVar1);
}
}
LAB_8f6211d8:
if (iVar2 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(pcVar4);
}
return;
}
void FUN_8f6212f0(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f628064(&DAT_8f72621c);
if (iVar1 == DAT_8f731d80) {
FUN_8f6280c0(&DAT_8f72621c,0x28,&LAB_8f6210a0,0);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62134c(void)
{
int iVar1;
int iVar2;
code *pcVar3;
uint uVar4;
bool bVar5;
iVar2 = DAT_8f731d80;
if (DAT_8f726238 == 0) {
switchD_8f6213c0_caseD_4:
pcVar3 = (code *)0xfffffff8;
goto LAB_8f62139c;
}
FUN_8f609bb8(2);
iVar1 = DAT_8f726238;
if ((*(code **)(DAT_8f726238 + 0x3f8) != (code *)0x0) &&
(pcVar3 = (code *)(**(code **)(DAT_8f726238 + 0x3f8))(), pcVar3 != (code *)0x0))
goto LAB_8f62139c;
switch(*(undefined4 *)(iVar1 + 0xc)) {
case 3:
pcVar3 = (code *)FUN_8f626388(DAT_8f726238);
break;
default:
goto switchD_8f6213c0_caseD_4;
case 6:
pcVar3 = (code *)FUN_8f6265ec();
if (pcVar3 != (code *)0x0) goto LAB_8f62139c;
pcVar3 = (code *)FUN_8f620ef4(iVar1);
break;
case 8:
pcVar3 = (code *)FUN_8f620b64(iVar1);
if ((pcVar3 != (code *)0x0) ||
(pcVar3 = (code *)FUN_8f622504(DAT_8f726238), pcVar3 != (code *)0x0)) goto LAB_8f62139c;
pcVar3 = (code *)FUN_8f622720(iVar1);
break;
case 9:
pcVar3 = (code *)FUN_8f620da8(iVar1);
if (pcVar3 != (code *)0x0) goto LAB_8f62139c;
uVar4 = FUN_8f61ff34();
bVar5 = 0xc < uVar4;
if (uVar4 != 0xd) {
bVar5 = uVar4 != 5;
}
if (((bVar5 && (uVar4 != 0xd && uVar4 != 6)) &&
(pcVar3 = (code *)FUN_8f622840(), pcVar3 != (code *)0x0)) ||
(pcVar3 = (code *)FUN_8f622504(DAT_8f726238), pcVar3 != (code *)0x0)) goto LAB_8f62139c;
FUN_8f6212f0();
goto LAB_8f621400;
case 0xb:
pcVar3 = (code *)FUN_8f626388(DAT_8f726238);
if (pcVar3 != (code *)0x0) goto LAB_8f62139c;
pcVar3 = (code *)FUN_8f626350(DAT_8f726238);
break;
case 0xc:
pcVar3 = (code *)FUN_8f620e2c(iVar1);
}
if (pcVar3 == (code *)0x0) {
LAB_8f621400:
pcVar3 = *(code **)(iVar1 + 0x3f0);
if (pcVar3 != (code *)0x0) {
pcVar3 = (code *)(*pcVar3)();
}
}
LAB_8f62139c:
if (iVar2 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(pcVar3);
}
return;
}
void FUN_8f6214fc(undefined4 *param_1)
{
int iVar1;
code *pcVar2;
undefined4 *puVar3;
code *pcVar4;
int iVar5;
undefined4 uVar6;
undefined4 uVar7;
undefined4 *puVar8;
iVar1 = DAT_8f731d80;
DAT_8f726238 = param_1;
if (param_1 == (undefined4 *)0x0) {
pcVar2 = (code *)0xfffffff8;
goto LAB_8f62154c;
}
if (((code *)param_1[0x10e] != (code *)0x0) &&
(pcVar2 = (code *)(*(code *)param_1[0x10e])(1,param_1), pcVar2 != (code *)0x0))
goto LAB_8f62154c;
pcVar2 = (code *)param_1[0x112];
if (pcVar2 != (code *)0x0) {
pcVar2 = (code *)(*pcVar2)(DAT_8f726238);
}
if ((code *)param_1[0x10f] != (code *)0x0) {
pcVar2 = (code *)(*(code *)param_1[0x10f])(1,DAT_8f726238);
}
if (((pcVar2 != (code *)0x0) ||
(((code *)param_1[0x115] != (code *)0x0 &&
(pcVar2 = (code *)(*(code *)param_1[0x115])(), pcVar2 != (code *)0x0)))) ||
(((code *)param_1[0x111] != (code *)0x0 &&
(pcVar2 = (code *)(*(code *)param_1[0x111])(1,DAT_8f726238), pcVar2 != (code *)0x0))))
goto LAB_8f62154c;
puVar8 = DAT_8f726238;
if ((code *)param_1[0x100] != (code *)0x0) {
pcVar2 = (code *)(*(code *)param_1[0x100])();
puVar8 = DAT_8f726238;
uVar7 = *DAT_8f726238;
puVar3 = DAT_8f726238 + 1;
uVar6 = DAT_8f726238[2];
DAT_8f726238[0x105] = uVar7;
puVar8[0x106] = *puVar3;
puVar8[0x108] = uVar6;
puVar8[0x107] = uVar7;
if (pcVar2 != (code *)0x0) goto LAB_8f62154c;
}
puVar3 = puVar8 + 0x104;
if (puVar3 == (undefined4 *)0x0) {
LAB_8f6216f0:
pcVar2 = (code *)0xffffffff;
}
else {
if (puVar8[0x104] == 0) {
iVar5 = FUN_8f63e150(0x1000,((uint)puVar8[0x108] >> 3) * puVar8[0x105] * puVar8[0x106]);
puVar8[0x104] = iVar5;
if (iVar5 == 0) goto LAB_8f6216f0;
puVar3 = DAT_8f726238 + 0x104;
}
FUN_8f635ef8(puVar3);
FUN_8f63633c();
if ((((((code *)DAT_8f726238[0x116] == (code *)0x0) ||
(pcVar2 = (code *)(*(code *)DAT_8f726238[0x116])(), pcVar2 == (code *)0x0)) &&
(pcVar2 = (code *)FUN_8f621150(), pcVar2 == (code *)0x0)) &&
((pcVar4 = (code *)FUN_8f62134c(), pcVar2 = pcVar4, pcVar4 == (code *)0x0 &&
(((code *)param_1[0x113] == (code *)0x0 ||
(pcVar2 = (code *)(*(code *)param_1[0x113])(1), pcVar2 == (code *)0x0)))))) &&
(pcVar2 = pcVar4, (code *)param_1[0x110] != (code *)0x0)) {
pcVar2 = (code *)(*(code *)param_1[0x110])(1);
}
}
LAB_8f62154c:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(pcVar2);
}
void FUN_8f6216f8(void)
{
int iVar1;
int iVar2;
code *pcVar3;
int iVar4;
iVar2 = DAT_8f731d80;
iVar1 = DAT_8f726238;
if (DAT_8f726238 == 0) {
switchD_8f621760_caseD_4:
pcVar3 = (code *)0xfffffff8;
goto LAB_8f62173c;
}
if ((*(code **)(DAT_8f726238 + 0x3fc) != (code *)0x0) &&
(pcVar3 = (code *)(**(code **)(DAT_8f726238 + 0x3fc))(), pcVar3 != (code *)0x0))
goto LAB_8f62173c;
switch(*(undefined4 *)(iVar1 + 0xc)) {
case 3:
case 0xb:
FUN_8f6263c0();
goto LAB_8f621794;
default:
goto switchD_8f621760_caseD_4;
case 8:
pcVar3 = (code *)FUN_8f620c58(iVar1);
break;
case 9:
pcVar3 = (code *)FUN_8f620d48();
break;
case 0xc:
pcVar3 = (code *)FUN_8f620fbc();
goto joined_r0x8f621890;
}
if (pcVar3 == (code *)0x0) {
pcVar3 = (code *)FUN_8f6227b8(iVar1);
joined_r0x8f621890:
if (pcVar3 == (code *)0x0) {
LAB_8f621794:
iVar4 = FUN_8f600b80();
if (iVar4 == 0) {
if ((*(code **)(DAT_8f726238 + 0x44c) != (code *)0x0) &&
(pcVar3 = (code *)(**(code **)(DAT_8f726238 + 0x44c))(), pcVar3 != (code *)0x0))
goto LAB_8f62173c;
pcVar3 = *(code **)(DAT_8f726238 + 0x440);
if (pcVar3 != (code *)0x0) {
pcVar3 = (code *)(*pcVar3)(0);
}
if (*(code **)(iVar1 + 0x3f4) != (code *)0x0) {
pcVar3 = (code *)(**(code **)(iVar1 + 0x3f4))();
}
if (*(code **)(DAT_8f726238 + 0x43c) != (code *)0x0) {
pcVar3 = (code *)(**(code **)(DAT_8f726238 + 0x43c))(0,iVar1);
}
if (*(code **)(DAT_8f726238 + 0x444) != (code *)0x0) {
pcVar3 = (code *)(**(code **)(DAT_8f726238 + 0x444))(0,iVar1);
}
if (pcVar3 != (code *)0x0) goto LAB_8f62173c;
if (*(code **)(DAT_8f726238 + 0x438) != (code *)0x0) {
pcVar3 = (code *)(**(code **)(DAT_8f726238 + 0x438))(0,iVar1);
goto LAB_8f62173c;
}
}
pcVar3 = (code *)0x0;
}
}
LAB_8f62173c:
if (iVar2 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(pcVar3);
}
return;
}
void FUN_8f6218ac(int param_1,int param_2,int param_3,int param_4)
{
int iVar1;
uint uVar2;
undefined *puVar3;
int unaff_r6;
int iVar4;
uint *puVar5;
uint *puVar6;
undefined4 uVar7;
bool bVar8;
int local_244;
undefined auStack_22c [512];
int local_2c;
bVar8 = param_1 != 0;
if (bVar8) {
unaff_r6 = *(int *)(param_1 + 0x60);
param_1 = *(int *)(param_1 + 0x68);
}
if (!bVar8) {
unaff_r6 = 0x1a98000;
}
local_2c = DAT_8f731d80;
local_244 = param_1;
if (!bVar8) {
local_244 = 0x1a96000;
}
uVar2 = (uint)auStack_22c & 7;
if (uVar2 != 0) {
uVar2 = 8 - uVar2;
}
puVar3 = auStack_22c + uVar2;
if (param_3 < 1) {
uVar7 = 0;
}
else {
puVar5 = (uint *)(unaff_r6 + 0x110);
param_2 = param_2 + 0xc;
iVar4 = 0;
puVar6 = (uint *)(local_244 + 0x110);
if (param_4 == 0) {
puVar6 = puVar5;
}
do {
if ((*(uint *)(unaff_r6 + 4) & 2) != 0) {
*puVar5 = *puVar5 | 0x30000;
DataSynchronizationBarrier(0xf);
uVar2 = *puVar5;
iVar1 = 0xffff;
while ((uVar2 & 0x10000) == 0) {
uVar2 = *puVar5;
iVar1 = iVar1 + -1;
if (iVar1 == 0) {
FUN_8f63cbb4(s_Panel_CMD__Did_not_recieve_video_8f668fc8);
uVar7 = 1;
goto LAB_8f621ad4;
}
}
*puVar5 = *puVar5 | 0x1000001;
FUN_8f613cc4(4);
}
uVar2 = *(uint *)(param_2 + -0xc) & 3;
if (uVar2 != 0) {
uVar2 = 4 - uVar2;
}
iVar1 = uVar2 + *(uint *)(param_2 + -0xc);
FUN_8f63e304(puVar3,*(undefined4 *)(param_2 + -8),iVar1);
FUN_8f6254b4(puVar3,iVar1);
if (param_4 != 0) {
*(undefined **)(local_244 + 0x48) = puVar3;
*(int *)(local_244 + 0x4c) = iVar1;
DataSynchronizationBarrier(0xf);
}
*(undefined **)(unaff_r6 + 0x48) = puVar3;
*(int *)(unaff_r6 + 0x4c) = iVar1;
DataSynchronizationBarrier(0xf);
if (param_4 != 0) {
*(uint *)(local_244 + 0x110) = 0x3030303;
*(undefined4 *)(local_244 + 0x90) = 1;
DataSynchronizationBarrier(0xf);
}
*puVar5 = 0x3030303;
*(undefined4 *)(unaff_r6 + 0x90) = 1;
DataSynchronizationBarrier(0xf);
if ((*puVar6 & 1) == 0) {
uVar2 = *puVar6;
iVar1 = 0xffff;
do {
if ((uVar2 & 1) == 1) goto LAB_8f621a64;
uVar2 = *puVar6;
iVar1 = iVar1 + -1;
} while (iVar1 != 0);
FUN_8f63cbb4(s_Panel_CMD__command_mode_dma_test_8f669000);
uVar7 = 1;
}
else {
LAB_8f621a64:
uVar7 = 0;
*puVar6 = *puVar6 | 0x1000001;
}
if (*(int *)(param_2 + -4) == 0) {
FUN_8f613d18(0x50);
}
else {
FUN_8f613cc4();
}
iVar4 = iVar4 + 1;
param_2 = param_2 + 0xc;
} while (iVar4 != param_3);
}
LAB_8f621ad4:
if (local_2c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar7);
}
return;
}
void FUN_8f621b00(int param_1,uint **param_2,int param_3,int param_4)
{
int iVar1;
int iVar2;
int iVar3;
uint *puVar4;
int iVar5;
uint uVar6;
int iVar7;
uint *puVar8;
int iVar9;
uint *puVar10;
iVar1 = DAT_8f731d80;
if (param_1 == 0) {
iVar2 = 0x1a98000;
}
else {
iVar2 = *(int *)(param_1 + 0x60);
}
if (param_3 < param_4) {
param_4 = 0;
}
else {
puVar8 = *param_2;
iVar5 = 0;
if (param_4 < 3) {
iVar9 = 0x6c;
iVar7 = 1;
}
else {
iVar9 = 0x74;
iVar7 = 3;
}
puVar4 = puVar8;
puVar10 = (uint *)(iVar9 + iVar2);
if (param_4 < 3) {
iVar3 = 0;
}
else {
iVar3 = 2;
}
do {
iVar5 = iVar5 + 1;
uVar6 = *puVar10;
*puVar4 = uVar6 << 0x18 | (uVar6 >> 8 & 0xff) << 0x10 | (uVar6 >> 0x10 & 0xff) << 8 |
uVar6 >> 0x18;
puVar4 = puVar4 + 1;
puVar10 = puVar10 + -1;
} while (iVar5 < iVar7);
if (2 < param_4) {
puVar4 = puVar8 + -1;
iVar2 = param_4 + iVar3;
do {
iVar5 = iVar3 >> 2;
iVar3 = iVar3 + 1;
puVar4 = puVar4 + 1;
*puVar4 = puVar8[iVar5];
} while (iVar3 != iVar2);
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(param_4);
}
void FUN_8f621bc8(char *param_1,int param_2,int param_3)
{
char cVar1;
byte bVar2;
int iVar3;
char cVar4;
uint uVar5;
uint *puVar6;
uint uVar7;
uint uVar8;
uint uVar9;
iVar3 = DAT_8f731d80;
cVar4 = param_1[0x1b];
uVar9 = (byte)param_1[0xf] - 2 & 0xff;
cVar1 = param_1[0x1c];
if (uVar9 < 3) {
uVar8 = (uint)*(byte *)(uVar9 + 0x8f6690a4);
}
else {
uVar8 = 0x10;
}
uVar7 = 0x103;
if (uVar9 < 3) {
uVar8 = uVar8 << 4;
}
if (*param_1 == '\0') {
uVar7 = 0x105;
}
bVar2 = param_1[0x52];
if (param_2 == 0) {
uVar5 = param_3 << 0x1f | 0x14000000;
}
else {
*(undefined4 *)(*(int *)(param_1 + 0x68) + 0x118) = 1;
uVar5 = 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) = uVar7 | uVar8;
*(uint *)(*(int *)(param_1 + 0x68) + 0x3c) = uVar5;
uVar9 = (uint)bVar2;
if (**(int **)(param_1 + 0x60) == 0x10030001) {
uVar9 = 7;
}
*(uint *)(*(int *)(param_1 + 0x68) + 0xb0) = uVar9;
*(uint *)(*(int *)(param_1 + 0x68) + 0xc4) = (uint)CONCAT11(cVar4,cVar1);
if (param_1[0x51] != '\0') {
*(uint *)(*(int *)(param_1 + 0x68) + 0xac) =
*(uint *)(*(int *)(param_1 + 0x68) + 0xac) | 0x10000000;
}
if ((param_1[1] == '\x01') && (puVar6 = *(uint **)(param_1 + 0x68), 0x1002ffff < *puVar6)) {
puVar6[0x6e] = puVar6[0x6e] | 0x10000;
}
}
*(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) = uVar7 | uVar8;
*(uint *)(*(int *)(param_1 + 0x60) + 0x3c) = uVar5;
*(uint *)(*(int *)(param_1 + 0x60) + 0xb0) = (uint)bVar2;
*(uint *)(*(int *)(param_1 + 0x60) + 0xc4) = (uint)CONCAT11(cVar4,cVar1);
if (param_1[0x51] != '\0') {
*(uint *)(*(int *)(param_1 + 0x60) + 0xac) =
*(uint *)(*(int *)(param_1 + 0x60) + 0xac) | 0x10000000;
}
cVar4 = param_1[1];
if (cVar4 == '\x01') {
puVar6 = *(uint **)(param_1 + 0x60);
if (*puVar6 < 0x10030000) goto LAB_8f621ccc;
puVar6[0x6e] = puVar6[0x6e] | 0x10000;
cVar4 = param_1[1];
}
if ((cVar4 == '\0') && (param_1[0x1a] != '\0')) {
*(undefined4 *)(*(int *)(param_1 + 0x60) + 0xcc) = 1;
}
LAB_8f621ccc:
if (iVar3 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f621dd8(int param_1)
{
int iVar1;
int iVar2;
int iVar3;
uint uVar4;
iVar1 = DAT_8f731d80;
iVar3 = *(int *)(param_1 + 0x294);
iVar2 = *(int *)(param_1 + 0x29c);
if (*(int *)(param_1 + 0x268) == 0) {
return;
}
if (*(int *)(param_1 + 0xc) == 8) {
uVar4 = *(uint *)(iVar3 + 4);
*(uint *)(iVar3 + 4) = uVar4 & 0xfffffffe;
*(undefined4 *)(iVar3 + 0x118) = 1;
DataSynchronizationBarrier(0xf);
*(undefined4 *)(iVar3 + 0x118) = 0;
DataSynchronizationBarrier(0xf);
*(uint *)(iVar3 + 4) = uVar4 & 0xfffffff9 | 4;
}
if ((*(char *)(param_1 + 0x289) != '\0') && (*(int *)(param_1 + 0xc) == 8)) {
uVar4 = *(uint *)(iVar2 + 4);
*(uint *)(iVar2 + 4) = uVar4 & 0xfffffffe;
*(undefined4 *)(iVar2 + 0x118) = 1;
DataSynchronizationBarrier(0xf);
*(undefined4 *)(iVar2 + 0x118) = 0;
DataSynchronizationBarrier(0xf);
*(uint *)(iVar2 + 4) = uVar4 & 0xfffffff9 | 4;
}
FUN_8f600c10(0);
FUN_8f604f74(param_1 + 0x234);
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
FUN_8f6218ac(param_1 + 0x234,*(undefined4 *)(param_1 + 0x268),*(undefined4 *)(param_1 + 0x26c),
*(undefined *)(param_1 + 0x289));
return;
}
void FUN_8f621ef0(int param_1,uint param_2)
{
uint uVar1;
uint *puVar2;
int iVar3;
uint uVar4;
uint uVar5;
uint *local_2c;
uint uStack_28;
int local_24;
local_24 = DAT_8f731d80;
if (*(int *)(param_1 + 0x2c) != 0) {
iVar3 = *(int *)(param_1 + 0x60);
puVar2 = (uint *)(iVar3 + 4);
if (param_2 != 0) {
puVar2 = *(uint **)(param_1 + 0x68);
}
uVar4 = *(uint *)(iVar3 + 4);
uVar5 = *(uint *)(iVar3 + 0x3c);
if (param_2 != 0) {
puVar2[1] = uVar4 | 4;
puVar2 = (uint *)(*(int *)(param_1 + 0x60) + 4);
}
*puVar2 = uVar4 | 4;
FUN_8f613cc4(5);
FUN_8f604e70(param_1);
uVar1 = FUN_8f6218ac(param_1,*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30),
param_2 & 0xff);
*(uint *)(*(int *)(param_1 + 0x60) + 0x3c) = uVar5 & 0xfbffffff;
FUN_8f604f2c(param_1);
*(uint *)(*(int *)(param_1 + 0x60) + 0x3c) = uVar5;
if (param_2 != 0) {
*(uint *)(*(int *)(param_1 + 0x68) + 4) = uVar4;
}
*(uint *)(*(int *)(param_1 + 0x60) + 4) = uVar4;
if (uVar1 != 0) goto LAB_8f621fac;
iVar3 = FUN_8f600c50();
if (iVar3 != 0) {
uVar4 = *(uint *)(param_1 + 0x58);
local_2c = &uStack_28;
uVar1 = DAT_8f72623c;
if (((DAT_8f72623c == uVar4 || DAT_8f72623c == 0) &&
(uVar1 = FUN_8f6218ac(param_1,&DAT_8f717a30,1,*(undefined *)(param_1 + 0x55)), uVar1 == 0)
) && (iVar3 = FUN_8f621b00(param_1,&local_2c,1,1), iVar3 != 0)) {
uVar5 = *local_2c;
DAT_8f72623c = (uVar5 << 0x18 | (uVar5 >> 8 & 0xff) << 0x10 | (uVar5 >> 0x10 & 0xff) << 8)
>> 8;
uVar1 = DAT_8f72623c;
if (uVar4 == DAT_8f72623c) {
uVar1 = 0;
}
}
if (uVar4 == 0 || uVar4 == 0xffff) {
uVar1 = 0;
}
goto LAB_8f621fac;
}
}
uVar1 = 0;
LAB_8f621fac:
if (local_24 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar1);
}
return;
}
void FUN_8f622074(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 iVar1;
int iVar2;
uint uVar3;
int unaff_r5;
uint uVar4;
uint uVar5;
bool bVar6;
iVar1 = DAT_8f731d80;
bVar6 = *(int *)(param_1 + 0x20) == 1;
if (bVar6) {
unaff_r5 = param_1 + 0xd4;
}
if (!bVar6) {
unaff_r5 = 0;
}
param_19[0x47] = 0;
param_19[0x47] = 2;
param_19[0x47] = 6;
param_19[0x47] = 0xe;
uVar5 = (uint)param_7;
uVar4 = (uint)param_9;
uVar3 = (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_8f61ff34(), iVar2 != 6)) {
param_19[0x7a] = 1;
}
param_19[9] = uVar5 | (param_2 + uVar5) * 0x10000;
param_19[10] = uVar4 | (param_3 + uVar4) * 0x10000;
iVar2 = FUN_8f61ff34();
if (((iVar2 < 9) && (iVar2 = FUN_8f61ff34(), iVar2 != 5)) && (iVar2 = FUN_8f61ff34(), iVar2 != 6))
{
param_19[0xb] = uVar5 + param_2 + (uint)param_6 | (uVar4 + param_3 + (uint)param_8) * 0x10000;
}
else {
param_19[0xb] =
(uVar5 + param_2 + (uint)param_6) - 1 | (uVar4 + 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_8f61ff34(), iVar2 != 6)) {
param_19[0x79] = 1;
}
param_19[0x33] = 0;
param_19[0x29] = 0x100;
iVar2 = FUN_8f61ff34();
if ((iVar2 < 9) && (iVar2 = FUN_8f61ff34(), iVar2 != 6)) {
param_19[4] = (uint)param_12 << 4 | param_16 << 0x10 | 0x11100000 | (uint)param_13 << 8 |
uVar3 << 0xc;
}
else {
param_19[4] = param_16 << 0x10 | (uint)param_12 << 4 | (uint)param_13 << 8 | uVar3 << 0xc |
((uint)param_15 | uVar3 & 8) << 0x1c;
}
param_19[0x2f] = 0x3fd08;
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 + 0x158) != (code *)0x0)) {
(**(code **)(unaff_r5 + 0x158))(*(undefined4 *)(param_1 + 0x294),0,unaff_r5);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f62237c(int param_1)
{
code *pcVar1;
code *pcVar2;
int iVar3;
int iVar4;
undefined4 local_28;
int local_24;
undefined4 local_20;
int local_1c;
local_1c = DAT_8f731d80;
if (param_1 == 0) {
pcVar1 = (code *)0xfffffff8;
}
else {
iVar3 = param_1 + 0x234;
if (*(int *)(param_1 + 0x20) == 1) {
iVar4 = param_1 + 0xd4;
if (*(code **)(param_1 + 0x228) != (code *)0x0) {
(**(code **)(param_1 + 0x228))();
}
}
else {
iVar4 = 0;
}
FUN_8f623764(iVar3);
pcVar1 = (code *)FUN_8f621bc8(iVar3,*(undefined *)(param_1 + 0x287),
*(undefined *)(param_1 + 0x289));
if (pcVar1 == (code *)0x0) {
FUN_8f6236fc(iVar3,*(undefined4 *)(param_1 + 0x298));
if (*(char *)(param_1 + 0x287) != '\0') {
FUN_8f6236fc(iVar3,*(undefined4 *)(param_1 + 0x2a0));
}
if ((*(code **)(param_1 + 0x450) == (code *)0x0) ||
(pcVar1 = (code *)(**(code **)(param_1 + 0x450))(), pcVar1 == (code *)0x0)) {
if ((*(char *)(param_1 + 0x234) == '\0') &&
(pcVar1 = (code *)FUN_8f621ef0(iVar3,*(undefined *)(param_1 + 0x289)),
pcVar1 != (code *)0x0)) {
FUN_8f63cbb4(s_dsi_panel_init_error_8f66905c);
}
else {
if (iVar4 != 0) {
local_24 = iVar4 + 0xcc;
local_28 = 0x84;
local_20 = 0x10;
FUN_8f6218ac(iVar3,&local_28,1,*(undefined *)(param_1 + 0x289));
}
pcVar2 = *(code **)(param_1 + 0x40c);
pcVar1 = pcVar2;
if ((pcVar2 != (code *)0x0) &&
(pcVar1 = *(code **)(param_1 + 0x434), *(code **)(param_1 + 0x434) != (code *)0x0)) {
(*pcVar2)();
pcVar1 = (code *)0x0;
}
}
}
else {
FUN_8f63cbb4(s_pre_init_func_error_8f669044);
}
}
else {
FUN_8f63cbb4(s_dsi_host_init_error_8f66902c);
}
}
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(pcVar1);
}
void FUN_8f622504(int param_1)
{
int iVar1;
uint uVar2;
iVar1 = DAT_8f731d80;
uVar2 = (uint)*(byte *)(param_1 + 0x234);
if ((uVar2 != 0) &&
(uVar2 = FUN_8f621ef0(param_1 + 0x234,*(undefined *)(param_1 + 0x289)), uVar2 != 0)) {
FUN_8f63cbb4(s_dsi_panel_init_error_8f66905c);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f622574(int param_1,undefined4 param_2,undefined4 param_3,uint param_4,ushort param_5,
undefined2 param_6,byte param_7,byte param_8,byte param_9,int param_10)
{
int iVar1;
undefined4 uVar2;
uint uVar3;
int iVar4;
uint uVar5;
code *pcVar6;
iVar1 = DAT_8f731d80;
switch(param_6) {
case 0:
uVar2 = 6;
break;
case 1:
case 2:
uVar2 = 7;
break;
case 3:
uVar2 = 8;
break;
default:
FUN_8f63cbb4(s_unsupported_dst_format_8f669074);
uVar2 = 0xffffffff;
goto LAB_8f62268c;
}
*(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;
*(undefined4 *)(param_10 + 0x40) = uVar2;
if (*(int *)(param_1 + 0x20) == 1) {
iVar4 = *(int *)(param_1 + 0x138);
pcVar6 = *(code **)(param_1 + 0x22c);
if (*(char *)(param_1 + 0x279) != '\0') {
iVar4 = iVar4 + 1;
}
uVar3 = iVar4 << 0x10 | 0x39;
*(uint *)(param_10 + 0x58) = uVar3;
*(uint *)(param_10 + 0x60) = uVar3;
uVar3 = *(uint *)(param_1 + 0x140) | *(int *)(param_1 + 0x11c) << 0x10;
*(uint *)(param_10 + 0x5c) = uVar3;
*(uint *)(param_10 + 100) = uVar3;
if (pcVar6 != (code *)0x0) {
(*pcVar6)(*(undefined4 *)(param_1 + 0x294),0,param_1 + 0xd4);
}
}
else {
uVar3 = 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) = uVar3;
*(uint *)(param_10 + 100) = uVar3;
}
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;
*(undefined4 *)(param_10 + 0xcc) = 1;
LAB_8f62268c:
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
void FUN_8f622720(int param_1)
{
int iVar1;
undefined4 uVar2;
int iVar3;
uint uVar4;
iVar1 = DAT_8f731d80;
uVar4 = *(uint *)(*(int *)(param_1 + 0x294) + 0x110);
FUN_8f613cc4(10);
if ((uVar4 & 0x10000) == 0) {
iVar3 = 0xffff;
uVar4 = *(uint *)(*(int *)(param_1 + 0x294) + 0x110);
do {
if ((uVar4 & 0x10000) == 0x10000) goto LAB_8f622784;
uVar4 = *(uint *)(*(int *)(param_1 + 0x294) + 0x110);
iVar3 = iVar3 + -1;
} while (iVar3 != 0);
FUN_8f63cbb4(s_Video_lane_test_failed_8f66908c);
uVar2 = 0xffffffff;
}
else {
LAB_8f622784:
uVar2 = 0;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f6227b8(int param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f600b80();
if (iVar2 == 0) {
FUN_8f621dd8(param_1);
*(undefined4 *)(*(int *)(param_1 + 0x294) + 0x11c) = 0;
*(undefined4 *)(*(int *)(param_1 + 0x294) + 4) = 0x1f1;
}
*(undefined4 *)(*(int *)(param_1 + 0x294) + 0x110) = 0x1115501;
if (*(char *)(param_1 + 0x287) != '\0') {
*(undefined4 *)(*(int *)(param_1 + 0x29c) + 0x110) = 0x1115501;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f622874)
void FUN_8f622840(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6228ac)
void FUN_8f622878(void)
{
return;
}
void FUN_8f622b34(int *param_1)
{
int iVar1;
int iVar2;
int iVar3;
int extraout_r1;
uint uVar4;
int extraout_r1_00;
int iVar5;
uint uVar6;
int iVar7;
int iVar8;
int iVar9;
int iVar10;
int unaff_r10;
int iVar11;
bool bVar12;
int local_3c;
int local_38;
undefined4 local_34;
iVar1 = DAT_8f731d80;
iVar7 = param_1[0x3a];
iVar5 = *param_1;
param_1[0x5b] = 0x2000;
param_1[0x3c] = 9;
param_1[0x5f] = 6;
param_1[100] = (int)&DAT_8f717a50;
param_1[0x65] = (int)&DAT_8f717a60;
param_1[0x66] = (int)&DAT_8f717a70;
param_1[0x47] = param_1[1];
param_1[0x67] = (int)&DAT_8f717a40;
param_1[0x48] = iVar5;
param_1[0x56] = 0xc;
param_1[0x5d] = 0xc;
param_1[0x5e] = 3;
param_1[0x62] = 3;
param_1[99] = 3;
param_1[0x60] = 0xb;
param_1[0x61] = 0xb;
iVar9 = param_1[0x3b];
if (iVar7 == 8) {
param_1[0x59] = 0x1800;
local_34 = 0x18;
local_38 = 0x20;
local_3c = 0x800;
}
else {
local_3c = 0x1800;
local_34 = 2;
local_38 = 10;
param_1[0x59] = 0x800;
}
iVar8 = param_1[0x4a];
if (iVar9 != 8) {
unaff_r10 = 0x40;
}
if (iVar9 == 8) {
unaff_r10 = 0x30;
}
iVar2 = FUN_8f660314(iVar5 + iVar8 + -1,iVar8);
iVar11 = param_1[0x43];
FUN_8f6603f0(iVar2,iVar11);
if (extraout_r1 == 0) {
iVar3 = FUN_8f660314(iVar2,iVar11);
param_1[0x4c] = iVar3;
}
else {
param_1[0x4c] = 1;
}
iVar3 = FUN_8f660314(iVar5 + iVar2 + -1,iVar2);
param_1[0x5c] = iVar9 + -1;
iVar5 = iVar3 * iVar7 + 7;
if (iVar5 < 0) {
iVar5 = iVar3 * iVar7 + 0xe;
}
iVar5 = iVar5 >> 3;
param_1[0x4d] = iVar5;
param_1[0x4e] = iVar5 * iVar11;
iVar11 = (iVar2 * iVar5) % 3;
param_1[0x4f] = iVar11;
param_1[0x39] = 3 - iVar11;
param_1[0x50] = (iVar2 * iVar5 + 2) / 3;
iVar5 = FUN_8f660314(0x2000,iVar7 << 1);
iVar11 = 0x111;
if (iVar9 < 10) {
iVar11 = 0xf9;
}
iVar10 = unaff_r10 + iVar9 * 4 + 2;
iVar3 = 0x12f;
if (iVar9 < 10) {
iVar3 = 0x117;
}
iVar9 = iVar2;
if (1 < iVar2) {
iVar9 = iVar11;
}
if (iVar2 < 2) {
iVar9 = 0;
}
param_1[0x52] = iVar5;
iVar2 = FUN_8f660314(iVar8 + -1 + iVar5 + iVar3 + 6 + iVar9,iVar8);
uVar4 = iVar8 * iVar7;
iVar9 = (iVar8 + 2) / 3;
uVar6 = uVar4 + 7;
if (-1 < (int)uVar4) {
uVar6 = uVar4;
}
iVar8 = (int)uVar6 >> 3;
if ((uVar4 & 7) != 0) {
iVar8 = iVar8 + 1;
}
param_1[0x4b] = iVar8;
param_1[0x38] = iVar2;
iVar2 = FUN_8f660314(iVar7 + -1 + iVar5 * iVar7 + local_3c + iVar9 * 0xc,iVar7);
iVar11 = param_1[0x49];
param_1[0x53] = local_38;
param_1[0x51] = iVar2 - iVar5;
iVar2 = FUN_8f660314(iVar11 + 0x5ffe,iVar11 + -1);
iVar5 = ((iVar7 * 0x20 + 1) / 2) * iVar5;
param_1[0x57] = iVar2;
FUN_8f6603f0(iVar11 * iVar8 * 8 + iVar10 * -3,unaff_r10);
iVar8 = (extraout_r1_00 - unaff_r10) + iVar10 * 3;
iVar7 = FUN_8f660314(iVar11 * iVar9 + -1 + (iVar8 + local_3c) * 0x800,iVar11 * iVar9);
if (iVar5 < 0) {
iVar5 = iVar5 + 0xf;
}
iVar8 = (0x2000 - (iVar5 >> 4)) + iVar8;
param_1[0x5a] = iVar8;
param_1[0x58] = iVar7;
iVar5 = FUN_8f660314(0x10000,0x2000 - iVar8);
iVar5 = FUN_8f660314(iVar8 * 0x800,(iVar2 + iVar7) * (iVar5 + -9));
param_1[0x55] = iVar5;
iVar5 = FUN_8f660314(iVar9,local_34);
bVar12 = iVar1 == DAT_8f731d80;
param_1[0x54] = iVar5;
if (bVar12) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6231a8(undefined4 *param_1,uint *param_2,undefined4 *param_3)
{
int iVar1;
byte *pbVar2;
uint *puVar3;
uint *puVar4;
uint *puVar5;
int iVar6;
byte *pbVar7;
iVar1 = DAT_8f731d80;
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 (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f6232b8(int param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
*(undefined4 *)(param_1 + 300) = 1;
FUN_8f613d18(1000);
DataMemoryBarrier(0xf);
*(undefined4 *)(param_1 + 300) = 0;
FUN_8f613d18(100);
DataMemoryBarrier(0xf);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f623320(int param_1,int param_2)
{
undefined4 *puVar1;
int iVar2;
uint *puVar3;
byte *pbVar4;
undefined4 *puVar5;
undefined4 *puVar6;
int iVar7;
uint *puVar8;
uint *puVar9;
int iVar10;
byte *pbVar11;
iVar2 = DAT_8f731d80;
iVar10 = *(int *)(param_1 + 0x24);
iVar7 = 0;
*(undefined4 *)(param_2 + 0x480) = *(undefined4 *)(iVar10 + 0xcc);
*(undefined4 *)(param_2 + 0x488) = *(undefined4 *)(iVar10 + 0xd0);
*(undefined4 *)(param_2 + 0x47c) = 0x10;
*(undefined4 *)(param_2 + 0x470) = 0x5f;
*(undefined4 *)(param_2 + 0x4b0) = 0x25;
do {
*(undefined4 *)(iVar7 + param_2 + 0x500) = *(undefined4 *)(iVar10 + iVar7);
iVar7 = iVar7 + 4;
} while (iVar7 != 0x14);
*(undefined4 *)(param_2 + 0x518) = 1;
*(undefined4 *)(param_2 + 0x534) = 0;
*(undefined4 *)(param_2 + 0x53c) = 0x5a;
*(undefined4 *)(param_2 + 0x544) = 0x10;
*(undefined4 *)(param_2 + 0x548) = 1;
*(undefined4 *)(param_2 + 0x538) = 1;
*(undefined4 *)(param_2 + 0x528) = 1;
*(undefined4 *)(param_2 + 0x528) = 0;
if ((*(uint *)(param_2 + 0x550) & 0x10) != 0) {
iVar7 = 5000;
do {
if ((*(uint *)(param_2 + 0x550) & 0x10) == 0) goto LAB_8f6233e8;
iVar7 = iVar7 + -1;
} while (iVar7 != 0);
FUN_8f63cbb4(s_DSI1_PHY_REGULATOR_NOT_READY_exc_8f6690a8);
}
LAB_8f6233e8:
pbVar11 = (byte *)(iVar10 + 0xf9);
puVar3 = (uint *)(param_2 + 0x300);
iVar7 = 5;
do {
pbVar4 = pbVar11;
puVar8 = puVar3;
do {
pbVar4 = pbVar4 + 1;
puVar9 = puVar8 + 1;
*puVar8 = (uint)*pbVar4;
DataMemoryBarrier(0xf);
puVar8 = puVar9;
} while (puVar9 != puVar3 + 9);
iVar7 = iVar7 + -1;
pbVar11 = pbVar11 + 9;
puVar3 = puVar3 + 0x10;
} while (iVar7 != 0);
puVar5 = (undefined4 *)(param_2 + 0x440);
do {
puVar1 = (undefined4 *)(iVar10 + 0x1c);
iVar10 = iVar10 + 4;
puVar6 = puVar5 + 1;
*puVar5 = *puVar1;
puVar5 = puVar6;
} while ((undefined4 *)(param_2 + 0x470) != puVar6);
if (*(char *)(param_1 + 0xf) == '\x01') {
*(undefined4 *)(param_2 + 0x22c) = 8;
}
if (*(byte *)(param_1 + 0x52) != 0) {
*(uint *)(param_2 + 0xac) = (uint)*(byte *)(param_1 + 0x52);
}
*(undefined4 *)(param_2 + 0xc0) = 0x41b;
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f62349c(int param_1,int *param_2,uint *param_3,undefined4 *param_4)
{
char cVar1;
int iVar2;
int iVar3;
byte *pbVar4;
uint *puVar5;
uint *puVar6;
uint *puVar7;
undefined4 *puVar8;
undefined4 *puVar9;
byte *pbVar10;
iVar2 = DAT_8f731d80;
iVar3 = FUN_8f61ff34();
if (iVar3 == 5) {
if (iVar2 == DAT_8f731d80) {
FUN_8f623320(param_1,param_2);
return;
}
}
else {
puVar8 = *(undefined4 **)(param_1 + 0x24);
param_3[0x5c] = 0x5b;
cVar1 = *(char *)((int)puVar8 + 0x127);
param_3[0x61] = puVar8[0x33];
if (cVar1 == '\x01') {
*param_4 = 0;
param_4[6] = puVar8[6];
FUN_8f613d18(1000);
param_4[5] = puVar8[5];
param_4[3] = puVar8[3];
param_4[2] = puVar8[2];
param_4[1] = puVar8[1];
param_4[4] = puVar8[4];
if ((*param_2 == 0x10030001) || (*param_2 == 0x10040002)) {
param_3[0x77] = 5;
}
else {
param_3[0x77] = 0xd;
}
}
else {
*param_4 = 0;
param_4[6] = puVar8[6];
FUN_8f613d18(1000);
param_4[1] = puVar8[1];
param_4[2] = puVar8[2];
param_4[3] = puVar8[3];
param_4[4] = puVar8[4];
param_3[0x77] = 0;
*param_4 = *puVar8;
}
DataMemoryBarrier(0xf);
iVar3 = 0x140;
puVar9 = puVar8;
do {
*(undefined4 *)(iVar3 + (int)param_3) = puVar9[7];
DataMemoryBarrier(0xf);
iVar3 = iVar3 + 4;
puVar9 = puVar9 + 1;
} while (iVar3 != 0x170);
pbVar4 = (byte *)((int)puVar8 + 0xf9);
iVar3 = 0;
puVar5 = param_3;
do {
puVar6 = puVar5;
pbVar10 = pbVar4;
do {
pbVar10 = pbVar10 + 1;
puVar7 = puVar6 + 1;
*puVar6 = (uint)*pbVar10;
DataMemoryBarrier(0xf);
puVar6 = puVar7;
} while (puVar7 != puVar5 + 9);
iVar3 = iVar3 + 1;
pbVar4 = pbVar4 + 9;
puVar5 = puVar5 + 0x10;
} while (iVar3 != 5);
param_3[0x60] = 10;
DataMemoryBarrier(0xf);
if (((*(char *)(param_1 + 0x53) == '\0') ||
(iVar3 = FUN_8f601e90(0x1a98500), param_3 == (uint *)(iVar3 + 0x1a98500))) ||
(**(int **)(param_1 + 0x60) == 0x10030001)) {
param_3[0x75] = 1;
}
else {
param_3[0x75] = 0;
}
DataMemoryBarrier(0xf);
param_3[0x5c] = 0x5f;
DataMemoryBarrier(0xf);
iVar3 = 0x1b4;
do {
puVar9 = puVar8 + 0x3d;
puVar8 = (undefined4 *)((int)puVar8 + 1);
*(uint *)(iVar3 + (int)param_3) = (uint)*(byte *)puVar9;
iVar3 = iVar3 + 4;
} while (iVar3 != 0x1cc);
DataMemoryBarrier(0xf);
param_2[0x31] = 0x41b;
DataMemoryBarrier(0xf);
iVar3 = 0;
if (iVar2 == DAT_8f731d80) {
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar3);
}
void FUN_8f6236fc(int param_1,int param_2)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
if ((*(int *)(*(int *)(param_1 + 0x24) + 0x128) != 2) && (iVar2 = FUN_8f61ff34(), iVar2 != 5)) {
*(undefined4 *)(param_2 + 0x188) = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0xd0);
DataMemoryBarrier(0xf);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f623764(int param_1)
{
int iVar1;
undefined4 uVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar3 = *(int *)(*(int *)(param_1 + 0x24) + 0x128);
if (iVar3 == 1) {
uVar2 = FUN_8f6231a8(*(int *)(param_1 + 0x24),*(undefined4 *)(param_1 + 100),
*(undefined4 *)(param_1 + 0x70));
if (*(char *)(param_1 + 0x53) != '\0') {
if (iVar1 == DAT_8f731d80) {
FUN_8f6231a8(*(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x6c),
*(undefined4 *)(param_1 + 0x70));
return;
}
goto LAB_8f623840;
}
}
else if (iVar3 == 2) {
uVar2 = 0;
}
else {
uVar2 = FUN_8f62349c(param_1,*(undefined4 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 100),
*(undefined4 *)(param_1 + 0x70));
if (*(char *)(param_1 + 0x53) != '\0') {
if (iVar1 == DAT_8f731d80) {
FUN_8f62349c(param_1,*(undefined4 *)(param_1 + 0x68),*(undefined4 *)(param_1 + 0x6c),
*(undefined4 *)(param_1 + 0x70));
return;
}
goto LAB_8f623840;
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
LAB_8f623840:
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f623844(uint *param_1,undefined4 param_2,int param_3)
{
int iVar1;
undefined4 uVar2;
uint uVar3;
uint uVar4;
uint uVar5;
int iVar6;
uint uVar7;
uint uVar8;
uint uVar9;
longlong lVar10;
iVar1 = DAT_8f731d80;
iVar6 = 0;
do {
if (*(uint *)(param_3 + 0x14) <= (uint)(&DAT_8f6690e0)[iVar6 * 2]) {
FUN_8f6232b8(param_2);
param_1[0xb] = (uint)(byte)(&DAT_8f6690e4)[iVar6 * 8];
param_1[0xc] = 0x70;
param_1[0xd] = 0x15;
param_1[2] = 2;
param_1[1] = (uint)*(byte *)(param_3 + 0x29);
param_1[9] = 3;
param_1[10] = (uint)*(byte *)(param_3 + 0x2a);
param_1[0x1e] = 0x2b;
param_1[0x1f] = 0x66;
param_1[0x19] = 5;
uVar4 = *(uint *)(param_3 + 0x14);
uVar8 = uVar4 % 19200000;
if (uVar8 == 0) {
lVar10 = FUN_8f660e18((int)((ulonglong)uVar4 * 10000),
(int)((ulonglong)uVar4 * 10000 >> 0x20),19200000,0);
uVar3 = FUN_8f660e18((int)(lVar10 * 19200000),(int)((ulonglong)(lVar10 * 19200000) >> 0x20),
10000,0);
uVar7 = (uVar4 / 19200000 & 0x3f) - 1 | 0x20;
uVar5 = uVar8;
uVar9 = uVar8;
uVar4 = uVar8;
}
else {
lVar10 = FUN_8f660e18((int)((ulonglong)uVar4 * 10000),
(int)((ulonglong)uVar4 * 10000 >> 0x20),38400000,0);
uVar9 = 1;
uVar7 = 0;
uVar3 = FUN_8f660e18((int)(lVar10 * 38400000),(int)((ulonglong)(lVar10 * 38400000) >> 0x20),
10000,0);
iVar6 = 10000;
FUN_8f660e18((int)lVar10,(int)((ulonglong)lVar10 >> 0x20),10000,0);
uVar5 = ((uint)((int)((ulonglong)uVar4 * 0x6fd91d85 >> 0x20) << 2) >> 0x1a) - 1;
uVar8 = (uint)((int)((ulonglong)(uint)(iVar6 << 0x10) * 0xd1b71759 >> 0x20) << 0xb) >> 0x18;
uVar4 = (uint)(iVar6 << 0x10) / 0x271000;
}
param_1[0xf] = uVar5;
param_1[0x10] = uVar8;
param_1[0x11] = uVar4;
param_1[0x12] = 0;
iVar6 = *(int *)(param_3 + 0x18);
if (iVar6 == 0) {
iVar6 = 10;
}
FUN_8f613d18(iVar6,(uVar3 % 256000000) * 0x431bde83);
*param_1 = uVar9;
uVar2 = 0;
param_1[5] = 0;
param_1[3] = 0x71;
param_1[4] = (uint)*(byte *)(param_3 + 0x28);
param_1[0xe] = uVar7;
param_1[0x1b] = 10;
param_1[0x21] = 0x30;
param_1[0x22] = 0;
param_1[0x23] = 0x60;
param_1[0x24] = 0;
param_1[0x25] = (uVar3 % 256000000) / 1000000;
param_1[0x26] = uVar3 / 256000000;
param_1[0x27] = 0x20;
goto LAB_8f62389c;
}
iVar6 = iVar6 + 1;
} while (iVar6 != 10);
uVar2 = 0xff;
LAB_8f62389c:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
// WARNING: Removing unreachable block (ram,0x8f623c10)
void FUN_8f623ab0(char *param_1)
{
char cVar1;
cVar1 = *param_1;
while (cVar1 != '\0') {
switch(cVar1) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
break;
default:
goto code_r0x8f623bec;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
break;
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
}
param_1 = param_1 + 1;
cVar1 = *param_1;
}
code_r0x8f623bec:
return;
}
void FUN_8f623c14(int *param_1,undefined4 param_2,int param_3)
{
int iVar1;
undefined4 uVar2;
int iVar3;
int iVar4;
int iVar5;
int *local_68;
undefined auStack_64 [4];
undefined local_60;
undefined auStack_5c [8];
undefined local_54;
undefined auStack_44 [8];
undefined local_3c;
int local_24;
local_24 = DAT_8f731d80;
local_68 = param_1;
if (*param_1 == -0x70fb7dd0) {
if (param_1[1] == 0x77038230) goto LAB_8f623c6c;
}
else if ((*param_1 == -0x4bfb7dd0) && (param_1[1] == -0x63fc7dd0)) {
LAB_8f623c6c:
iVar1 = FUN_8f64be84(0,&local_68,param_2);
if (iVar1 == 0) {
FUN_8f63cbb4(s_ERROR__X509_Certificate_get_NULL_8f669154);
uVar2 = 0xffffffff;
}
else {
uVar2 = FUN_8f65b8f4();
iVar1 = FUN_8f65b99c(uVar2,0,0);
if (iVar1 == 0) {
FUN_8f63cbb4(s_ERROR__Parser_subject_fail_8f669178);
uVar2 = 0xffffffff;
}
else {
iVar1 = FUN_8f63ee2c(iVar1,&DAT_8f6684f4);
while (iVar1 != 0) {
iVar3 = FUN_8f63e9a0(iVar1);
iVar4 = FUN_8f63e6f4(iVar1 + iVar3 + -8,s_MODEL_ID_8f669194);
if (iVar4 == 0) {
FUN_8f63ea00(auStack_64,iVar1 + iVar3 + -0xd,4);
local_60 = 0;
uVar2 = FUN_8f623ab0(auStack_64);
*(undefined4 *)(param_3 + 0xa0) = uVar2;
}
iVar4 = FUN_8f63e6f4(iVar1 + iVar3 + -6,s_OEM_ID_8f6691a0);
if (iVar4 == 0) {
FUN_8f63ea00(auStack_64,iVar1 + iVar3 + -0xb,4);
local_60 = 0;
uVar2 = FUN_8f623ab0(auStack_64);
*(undefined4 *)(param_3 + 0x98) = uVar2;
}
iVar5 = iVar1 + iVar3 + -5;
iVar4 = FUN_8f63e6f4(iVar5,s_HW_ID_8f6691a8);
if (iVar4 == 0) {
FUN_8f63ea00(auStack_64,iVar1 + iVar3 + -0x16,0x10);
local_54 = 0;
FUN_8f63ea00(auStack_44,auStack_64,8);
local_3c = 0;
uVar2 = FUN_8f623ab0(auStack_44);
*(undefined4 *)(param_3 + 0x88) = uVar2;
FUN_8f63ea00(auStack_44,auStack_5c,8);
local_3c = 0;
uVar2 = FUN_8f623ab0(auStack_44);
*(undefined4 *)(param_3 + 0x8c) = uVar2;
}
iVar4 = FUN_8f63e6f4(iVar5,s_SW_ID_8f6691b0);
if (iVar4 == 0) {
FUN_8f63ea00(auStack_64,iVar1 + iVar3 + -0x16,0x10);
local_54 = 0;
FUN_8f63ea00(auStack_44,auStack_64,8);
local_3c = 0;
uVar2 = FUN_8f623ab0(auStack_44);
*(undefined4 *)(param_3 + 0x80) = uVar2;
FUN_8f63ea00(auStack_44,auStack_5c,8);
local_3c = 0;
uVar2 = FUN_8f623ab0(auStack_44);
*(undefined4 *)(param_3 + 0x84) = uVar2;
}
iVar1 = FUN_8f63ee2c(0,&DAT_8f6684f4);
}
uVar2 = 0;
}
}
goto LAB_8f623e54;
}
FUN_8f63cbb4(s_ERROR__X509_Certificate_Fail____8f669130);
uVar2 = 0xffffffff;
LAB_8f623e54:
if (local_24 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f623ec0(undefined4 param_1,int param_2,uint param_3,undefined4 param_4)
{
int iVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
uint uVar5;
int iVar6;
int iVar7;
iVar1 = DAT_8f731d80;
iVar7 = *(int *)(param_2 + 0x1c);
iVar2 = FUN_8f63e6f4(param_1,&DAT_8f662fd8);
iVar7 = param_2 + iVar7;
iVar6 = *(int *)(iVar7 + 0x24);
if ((iVar2 == 0) && (*(int *)(param_2 + iVar6) != 0x15)) {
FUN_8f63cbb4(s_ERROR__Read_sbl1_image_header_is_8f6691b8);
uVar4 = 0xffffffff;
}
else {
iVar2 = FUN_8f63e6f4(param_1,&DAT_8f662ff0);
if ((iVar2 == 0) && (*(int *)(param_2 + iVar6) != 0x17)) {
FUN_8f63cbb4(s_ERROR__Read_rpm_image_header_is_w_8f6691e4);
uVar4 = 0xffffffff;
}
else {
iVar2 = FUN_8f63e6f4(param_1,s_aboot_8f662ff8);
if ((iVar2 == 0) && (*(int *)(param_2 + iVar6) != 0)) {
FUN_8f63cbb4(s_ERROR__read_aboot_image_header_i_8f66920c);
uVar4 = 0xffffffff;
}
else {
iVar2 = FUN_8f63e6f4(param_1,s_cmnlib_8f667f00);
if ((iVar2 == 0) && (*(int *)(param_2 + iVar6) != 4)) {
FUN_8f63cbb4(s_ERROR__Read_cmnlib_image_header_i_8f669238);
uVar4 = 0xffffffff;
}
else {
iVar3 = FUN_8f63e6f4(param_1,s_keymaster_8f663d40);
if ((iVar3 == 0) && (*(int *)(param_2 + iVar6) != 4)) {
FUN_8f63cbb4(s_ERROR__Read_keymaster_image_head_8f669264);
uVar4 = 0xffffffff;
}
else {
uVar5 = *(uint *)(param_2 + iVar6 + 0x24);
iVar6 = param_2 + iVar6 + (*(int *)(iVar7 + 0x30) - uVar5);
if ((uVar5 == 0) || (param_3 <= uVar5)) {
uVar4 = 0xffffffff;
}
else {
if ((iVar2 == 0) || (iVar3 == 0)) {
iVar2 = FUN_8f623c14(iVar6,0x4b8,param_4);
}
else {
iVar2 = FUN_8f623c14(iVar6,0x493,param_4);
}
if (iVar2 == 0) {
uVar4 = 0;
}
else {
FUN_8f63cbb4(s_Get_certificate_info_fail_8f669294);
uVar4 = 0xffffffff;
}
}
}
}
}
}
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar4);
}
return;
}
void FUN_8f6240a4(undefined4 param_1,int param_2,uint param_3,undefined4 param_4)
{
int iVar1;
int iVar2;
uint uVar3;
int iVar4;
int iVar5;
iVar1 = DAT_8f731d80;
iVar5 = *(int *)(param_2 + 0x20);
iVar2 = FUN_8f63e6f4(param_1,&DAT_8f662ff4);
iVar5 = param_2 + iVar5;
iVar4 = *(int *)(iVar5 + 0x40);
if ((iVar2 == 0) && (*(int *)(param_2 + iVar4) != 0x19)) {
FUN_8f63cbb4(s_ERROR__Read_tz_image_header_is_w_8f6692b0);
iVar2 = -1;
}
else {
iVar2 = FUN_8f63e6f4(param_1,&DAT_8f6692d8);
if ((iVar2 == 0) && (*(int *)(param_2 + iVar4) != 4)) {
FUN_8f63cbb4(s_ERROR__Read_rpm_image_header_is_w_8f6691e4);
iVar2 = -1;
}
else {
uVar3 = *(uint *)(param_2 + iVar4 + 0x24);
if ((uVar3 == 0) || (param_3 <= uVar3)) {
iVar2 = -1;
}
else {
iVar2 = FUN_8f623c14(param_2 + iVar4 + (*(int *)(iVar5 + 0x58) - uVar3),0x493,param_4);
if (iVar2 != 0) {
FUN_8f63cbb4(s_Get_certificate_info_fail_8f669294);
iVar2 = -1;
}
}
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f6241b4(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int iVar1;
int iVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f63e114(0xa4);
FUN_8f63e410(iVar2,0,0xa4);
iVar3 = FUN_8f63e6f4(param_1,&DAT_8f662ff0);
if ((((iVar3 == 0) || (iVar3 = FUN_8f63e6f4(param_1,&DAT_8f662fd8), iVar3 == 0)) ||
(iVar3 = FUN_8f63e6f4(param_1,s_keymaster_8f663d40), iVar3 == 0)) ||
((iVar3 = FUN_8f63e6f4(param_1,s_cmnlib_8f667f00), iVar3 == 0 ||
(iVar3 = FUN_8f63e6f4(param_1,s_aboot_8f662ff8), iVar3 == 0)))) {
iVar3 = FUN_8f623ec0(param_1,param_2,param_3,iVar2);
if (iVar3 != 0) {
iVar3 = -1;
}
}
else {
iVar3 = FUN_8f63e6f4(param_1,&DAT_8f662ff4);
if ((iVar3 != 0) && (iVar3 = FUN_8f63e6f4(param_1,&DAT_8f6692d8), iVar3 != 0)) {
iVar3 = 1;
goto LAB_8f624264;
}
iVar3 = FUN_8f6240a4(param_1,param_2,param_3,iVar2);
if (iVar3 != 0) {
iVar3 = -1;
}
}
if (((*(int *)(iVar2 + 0x88) == *(int *)(DAT_8f732644 + 4)) &&
(*(int *)(iVar2 + 0x98) == *(int *)(DAT_8f732644 + 8))) &&
(*(int *)(iVar2 + 0xa0) == *(int *)(DAT_8f732644 + 0xc))) {
iVar3 = 1;
}
FUN_8f63e200(iVar2);
LAB_8f624264:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar3);
}
// WARNING: Removing unreachable block (ram,0x8f624378)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f624340(void)
{
return;
}
void FUN_8f62437c(void)
{
undefined4 *puVar1;
uint uVar2;
bool bVar3;
undefined4 local_2c;
uint local_28;
undefined4 local_24;
uint local_20;
int local_1c;
local_2c = 0;
local_24 = 0;
local_1c = DAT_8f731d80;
local_28 = 0;
FUN_8f63e304(&local_2c,&DAT_000a01d0,4);
FUN_8f63e304(&local_28,0xa0158,4);
FUN_8f63e304(&local_24,&DAT_000a4128,4);
FUN_8f63e304(&local_20,0xa607c,4);
uVar2 = local_28;
local_20 = local_20 & 0xfffffff;
DAT_8f732644 = (undefined4 *)FUN_8f63e114(0x14);
FUN_8f63e410(DAT_8f732644,0,0x14);
puVar1 = DAT_8f732644;
bVar3 = local_1c == DAT_8f731d80;
DAT_8f732644[2] = uVar2 & 0xffff;
puVar1[3] = uVar2 >> 0x10;
*puVar1 = local_2c;
puVar1[1] = local_20;
puVar1[4] = local_24;
if (bVar3) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f62446c(int param_1)
{
int iVar1;
int iVar2;
undefined4 uVar3;
int iVar4;
int iVar5;
int iVar6;
int *piVar7;
undefined *puVar8;
int iVar9;
int *piVar10;
int iVar11;
undefined4 in_lr;
int local_34;
uint local_30;
int local_2c;
local_34 = 0;
local_2c = DAT_8f731d80;
iVar1 = FUN_8f603bcc();
if (iVar1 != 0) {
local_30 = *(uint *)(param_1 + 4);
iVar2 = FUN_8f640888(param_1,param_1,
((local_30 << 0x10) >> 0x18) << 0x10 | local_30 << 0x18 | local_30 >> 0x18
| ((local_30 << 8) >> 0x18) << 8);
if (iVar2 != 0) {
FUN_8f63cbb4(s_Failed_to_move_resize_dtb_buffer_8f668918);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_partial_good_8f6692ec,0x3a,
s_card_size_sec___0_8f663308 + 0x10);
}
puVar8 = (undefined *)0x0;
iVar2 = 0;
iVar9 = 0;
piVar10 = (int *)PTR_DAT_8f624840;
do {
uVar3 = FUN_8f603c30(iVar9,iVar1);
FUN_8f63cbb4(s_Partial_Goods_i__d_reg__d_8f669310,iVar9,uVar3);
iVar4 = FUN_8f603c30(iVar9,iVar1);
if (iVar4 != 0) {
iVar4 = FUN_8f63fb78(param_1,piVar10[-3]);
if (iVar4 < 0) {
FUN_8f63cbb4(s_Failed_to_get_parent_node___s_er_8f66932c,piVar10[-3],iVar4);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_partial_good_8f6692ec,0x47,
s_card_size_sec___0_8f663308 + 0x10);
}
iVar6 = piVar10[-2];
piVar7 = piVar10;
joined_r0x8f624584:
if (iVar6 != 0) {
do {
iVar6 = FUN_8f63f754(param_1,iVar4);
if (iVar6 < 0) {
FUN_8f63cbb4(s_Failed_to_get_subnode___s_errno__8f669354,piVar7[-2],iVar6);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_partial_good_8f6692ec,0x54,
s_card_size_sec___0_8f663308 + 0x10);
}
iVar5 = FUN_8f63fa28(param_1,iVar6,piVar7[-1],&local_34);
if (iVar5 == 0) {
FUN_8f63cbb4(s_Failed_to_get_property___s_errno_8f669378,piVar7[-1],local_34);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_partial_good_8f6692ec,0x5d,
s_card_size_sec___0_8f663308 + 0x10);
}
iVar11 = piVar7[-1];
iVar5 = FUN_8f63ea58(iVar11,s_device_type_8f6693a0,4);
if (iVar5 == 0) {
LAB_8f6245a0:
puVar8 = &DAT_8f6692dc;
iVar2 = 1;
}
else {
iVar5 = FUN_8f63ea58(iVar11,s_oem_frp_status_8f66c230 + 8,4);
if (iVar5 == 0) {
LAB_8f624648:
if (local_34 == 3) {
iVar2 = 2;
puVar8 = &DAT_8f6692e8;
}
else {
if (local_34 != 5) {
iVar2 = 2;
FUN_8f63cbb4(s_Property_value_length___u_is_inv_8f6693d0,local_34,iVar11);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_partial_good_8f6692ec,0x7b,
s_card_size_sec___0_8f663308 + 0x10);
goto LAB_8f624690;
}
iVar2 = 2;
puVar8 = &DAT_8f6692e0;
}
}
else {
FUN_8f63cbb4(s__s__Property_type_is_not_support_8f6693ac,iVar11);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_partial_good_8f6692ec,0x6b,
s_card_size_sec___0_8f663308 + 0x10);
if (iVar2 == 1) {
iVar11 = piVar7[-1];
goto LAB_8f6245a0;
}
if (iVar2 == 2) {
iVar11 = piVar7[-1];
goto LAB_8f624648;
}
LAB_8f624690:
iVar11 = piVar7[-1];
}
}
iVar6 = FUN_8f63fca0(param_1,iVar6,iVar11,puVar8,local_34);
if (iVar6 != 0) goto LAB_8f62469c;
iVar6 = *piVar7;
piVar7 = piVar7 + 2;
if (iVar6 == 0) break;
} while( true );
}
}
iVar9 = iVar9 + 1;
piVar10 = piVar10 + 0x102;
} while (iVar9 != 4);
FUN_8f640be4(param_1);
}
if (local_2c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
LAB_8f62469c:
FUN_8f63cbb4(s_Failed_to_update_property___s__e_8f669408,piVar7[-1]);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_platform_msm_shared_partial_good_8f6692ec,0x8a,s_card_size_sec___0_8f663308 + 0x10)
;
iVar6 = *piVar7;
piVar7 = piVar7 + 2;
goto joined_r0x8f624584;
}
void FUN_8f624844(void)
{
int iVar1;
int iVar2;
uint uVar3;
iVar1 = DAT_8f731d80;
DAT_8f726240 = FUN_8f600314();
iVar2 = FUN_8f625d48();
if (iVar2 != 0) {
DAT_8f732648 = *(uint *)(DAT_8f726240 + 0x74) >> 9;
if (*(byte *)(*(int *)(DAT_8f726240 + 0x58) + 0xc0) < 8) {
DAT_8f73264c = 1;
}
else if (*(char *)(*(int *)(DAT_8f726240 + 0x58) + 0xa6) == '\0') {
DAT_8f73264c = 2;
}
else {
DAT_8f73264c = 0x20;
}
uVar3 = FUN_8f61b98c();
if (uVar3 < 0x1000000) {
DAT_8f73264c = 1;
}
DAT_8f732650 = 3;
}
iVar2 = FUN_8f624db8();
if (iVar2 < 0) {
FUN_8f63cbb4(s_Error_registering_the_handler_8f669460);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
// WARNING: Removing unreachable block (ram,0x8f62494c)
void FUN_8f624914(void)
{
return;
}
void FUN_8f624950(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f625d48();
if (iVar2 != 0) {
FUN_8f625080(DAT_8f726240,param_1,param_2,param_3,param_4);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6249c0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
undefined4 param_5)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f625d48();
if (iVar2 != 0) {
FUN_8f624e8c(DAT_8f726240,param_1,param_2,param_3,param_4,param_5);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f624a38(undefined4 param_1,undefined4 param_2)
{
undefined4 uVar1;
int iVar2;
undefined4 local_34;
undefined4 local_30;
undefined4 local_2c;
undefined4 local_28;
undefined4 local_24;
int local_20;
int local_1c;
local_34 = 0x202;
local_1c = DAT_8f731d80;
local_28 = 0;
local_24 = 0;
local_20 = 0;
local_30 = param_1;
local_2c = param_2;
FUN_8f6254b4();
uVar1 = FUN_8f60a278();
iVar2 = FUN_8f61b1dc(uVar1,&local_34,0xc,&local_28,0xc);
FUN_8f6254dc(param_1,param_2);
if ((iVar2 < 0) || (local_20 < 0)) {
FUN_8f63cbb4(s_Reading_device_info_failed__Erro_8f669480);
iVar2 = local_20;
}
else {
iVar2 = 0;
}
if (local_1c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
return;
}
void FUN_8f624af0(undefined4 param_1,undefined4 param_2)
{
undefined4 uVar1;
int iVar2;
undefined4 local_34;
undefined4 local_30;
undefined4 local_2c;
undefined4 local_28;
undefined4 local_24;
int local_20;
int local_1c;
local_1c = DAT_8f731d80;
local_34 = 0x203;
local_28 = 3;
local_24 = 0;
local_20 = 0;
local_30 = param_1;
local_2c = param_2;
FUN_8f6254b4();
uVar1 = FUN_8f60a278();
iVar2 = FUN_8f61b1dc(uVar1,&local_34,0xc,&local_28,0xc);
FUN_8f6254dc(param_1,param_2);
if ((iVar2 < 0) || (local_20 < 0)) {
FUN_8f63cbb4(s_Writing_device_info_failed__Erro_8f6694a8);
}
else {
iVar2 = 0;
}
if (local_1c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
return;
}
void FUN_8f624bac(void)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f624e38(0x2000);
if (iVar2 < 0) {
FUN_8f63cbb4(s_Failed_to_stop_Qseecom_Listener_8f6694d0);
}
else {
iVar2 = FUN_8f61b9cc();
if (iVar2 < 0) {
FUN_8f63cbb4(s_Failed_to_exit_qseecom_8f6694f4);
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f624c28(int *param_1)
{
int iVar1;
int *piVar2;
undefined4 uVar3;
int iVar4;
undefined uVar5;
int iVar6;
int iVar7;
iVar1 = DAT_8f731d80;
if (param_1 == (int *)0x0) {
FUN_8f63cce8();
}
iVar6 = *param_1 + -0x101;
switch(iVar6) {
case 0:
piVar2 = (int *)FUN_8f624914();
uVar5 = (undefined)iVar6;
iVar6 = *piVar2;
if (piVar2 != (int *)0x0) {
uVar5 = 0;
}
iVar7 = piVar2[1];
iVar4 = piVar2[2];
if (piVar2 != (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;
}
uVar3 = 0;
param_1[3] = iVar6;
param_1[4] = iVar7;
param_1[5] = iVar4;
*(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 (*param_1 == 0x103) {
iVar6 = FUN_8f6249c0((int)param_1 + param_1[3],param_1[1],param_1[5],param_1 + 5,param_1 + 2);
param_1[1] = iVar6;
}
else {
iVar6 = FUN_8f624950((int)param_1 + param_1[3],param_1[1],param_1 + 5,param_1 + 2);
param_1[1] = iVar6;
}
uVar3 = 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:
uVar3 = 0xffffffff;
break;
default:
FUN_8f63cbb4(s_Unsupported_Request_from_qseecom_8f66953c);
FUN_8f63cce8();
uVar3 = 0;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
void FUN_8f624db8(void)
{
int iVar1;
char *local_24;
undefined4 local_20;
undefined4 local_1c;
code *local_18;
int local_14;
local_24 = s_RPMB_system_services_8f669564;
local_14 = DAT_8f731d80;
local_18 = FUN_8f624c28;
local_20 = 0x2000;
local_1c = 0x6400;
iVar1 = FUN_8f61b3bc(&local_24);
if (iVar1 < 0) {
FUN_8f63cbb4(s_Failed_to_register_rpmb_listener_8f66957c);
}
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
void FUN_8f624e38(void)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f61b634();
if (iVar2 < 0) {
FUN_8f63cbb4(s_Failed_to_unregister_rpmb_listen_8f6695a0);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f624e8c(undefined4 param_1,int param_2,uint param_3,int param_4,int param_5,
undefined4 *param_6)
{
int iVar1;
uint uVar2;
bool bVar3;
uint local_11c;
undefined2 local_108 [2];
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;
local_2c = DAT_8f731d80;
FUN_8f63e410(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_8f624eec;
local_11c = param_3 >> 5;
}
}
if (local_11c != 0) {
uVar2 = 0;
do {
local_d8 = 1;
local_108[0] = 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_8f718aa0;
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;
iVar1 = FUN_8f60f224(param_1,local_108);
if (iVar1 != 0) {
FUN_8f63cbb4(s_Failed_to_Send_the_RPMB_write_se_8f6695e4);
break;
}
if (*(char *)(param_5 + 0x1fc) == -0x80) {
FUN_8f63cbb4(s_Max_write_counter_reached__8f669618);
break;
}
if (*(byte *)(param_5 + 0x1fd) != 0) {
FUN_8f63cbb4(s_SERIAL_NUMBER____s_8f666a6c + 0x10,
(&PTR_s_Operation_Ok_8f6695c4)[*(byte *)(param_5 + 0x1fd)]);
break;
}
uVar2 = uVar2 + 1;
param_2 = param_2 + param_4 * 0x200;
} while (uVar2 != local_11c);
}
LAB_8f624eec:
bVar3 = local_2c == DAT_8f731d80;
*param_6 = 0x200;
if (bVar3) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f625080(undefined4 param_1,undefined4 param_2,int param_3,int param_4,int *param_5)
{
int iVar1;
undefined4 uVar2;
undefined2 local_100 [4];
undefined local_f8;
undefined2 local_f6;
undefined4 local_cc;
undefined4 local_c4;
undefined2 local_b8;
undefined local_b0;
undefined2 local_ae;
undefined4 local_9c;
undefined4 local_94;
int local_84;
int local_7c;
int local_24;
local_24 = DAT_8f731d80;
FUN_8f63e410(local_100,0,0xd8);
local_100[0] = 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;
iVar1 = FUN_8f60f224(param_1,local_100);
if (iVar1 == 0) {
if (*(byte *)(param_4 + 0x1fd) != 0) {
FUN_8f63cbb4(s_SERIAL_NUMBER____s_8f666a6c + 0x10,
(&PTR_s_Operation_Ok_8f6695c4)[*(byte *)(param_4 + 0x1fd)]);
}
uVar2 = 0;
*param_5 = param_3 << 9;
}
else {
FUN_8f63cbb4(s_Failed_to_Send_the_RPMB_read_seq_8f669638);
uVar2 = 0xffffffff;
}
if (local_24 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f625170(void)
{
int iVar1;
uint uVar2;
undefined4 in_cr0;
undefined4 in_cr8;
undefined4 in_cr9;
undefined4 in_cr12;
iVar1 = DAT_8f731d80;
FUN_8f6252ac(3);
coprocessor_moveto(0xf,0,0,0x8f600000,in_cr12,in_cr0);
FUN_8f625bec();
FUN_8f625314(3);
uVar2 = coproc_movefrom_Coprocessor_Access_Control();
coproc_moveto_Coprocessor_Access_Control(uVar2 | 0xf00000);
InstructionSynchronizationBarrier(0xf);
uVar2 = coprocessor_movefromRt(10,7,0,in_cr8,in_cr0);
coprocessor_moveto(10,7,0,uVar2 | 0x40000000,in_cr8,in_cr0);
uVar2 = coprocessor_movefromRt(0xf,0,0,in_cr9,in_cr12);
coprocessor_moveto(0xf,0,0,uVar2 & 0xfffffff7 | 1,in_cr9,in_cr12);
coprocessor_moveto(0xf,0,1,0x80000000,in_cr9,in_cr12);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f625230)
void FUN_8f625200(void)
{
return;
}
void FUN_8f625234(int *param_1)
{
*param_1 = (int)&stack0xffffffd4;
ClearExclusiveLocal();
return;
}
undefined8 FUN_8f625258(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_8f6252ac(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_8f62536c(uVar1 & 0xfffffffb);
}
FUN_8f625400();
}
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_8f625314(uint param_1)
{
uint uVar1;
disableFIQinterrupts();
disableIRQinterrupts();
disableDataAbortInterrupts();
uVar1 = param_1;
if (((param_1 & 2) != 0) && (uVar1 = coproc_movefrom_Control(), (uVar1 & 4) == 0)) {
FUN_8f625400();
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_8f62536c(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_8f625514 & uVar3 >> 3;
uVar5 = count_leading_zeroes(uVar4);
do {
uVar6 = DAT_8f625518 & 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_8f625400(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_8f625514 & uVar3 >> 3;
uVar5 = count_leading_zeroes(uVar4);
do {
uVar6 = DAT_8f625518 & 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_8f6254b4(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_8f6254dc(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_8f62551c(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_8f62552c(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;
}
uint FUN_8f625588(uint *param_1,uint param_2)
{
bool bVar1;
uint uVar2;
do {
uVar2 = *param_1;
bVar1 = (bool)hasExclusiveAccess(param_1);
} while (!bVar1);
*param_1 = uVar2 & param_2;
return uVar2;
}
uint FUN_8f6255a4(uint *param_1,uint param_2)
{
bool bVar1;
uint uVar2;
do {
uVar2 = *param_1;
bVar1 = (bool)hasExclusiveAccess(param_1);
} while (!bVar1);
*param_1 = uVar2 | param_2;
return uVar2;
}
void FUN_8f6255c0(void)
{
WaitForInterrupt();
return;
}
undefined4 FUN_8f6255c8(void)
{
undefined4 uVar1;
uVar1 = coproc_movefrom_Control();
return uVar1;
}
void FUN_8f6255d0(undefined4 param_1)
{
coproc_moveto_Control(param_1);
InstructionSynchronizationBarrier(0xf);
return;
}
void FUN_8f6255ec(undefined4 param_1)
{
coproc_moveto_Translation_table_base_0(param_1);
return;
}
void FUN_8f6255f4(undefined4 param_1)
{
coproc_moveto_Domain_Access_Control(param_1);
return;
}
undefined4 FUN_8f6255fc(void)
{
DataSynchronizationBarrier(0xf);
InstructionSynchronizationBarrier(0xf);
coproc_moveto_Invalidate_unified_TLB_unlocked(0);
DataSynchronizationBarrier(0xf);
InstructionSynchronizationBarrier(0xf);
return 0;
}
void FUN_8f625730(uint *param_1)
{
undefined4 uVar1;
int local_44;
undefined4 local_40;
int local_3c;
undefined4 local_38;
int local_34;
undefined4 local_30;
int local_24;
undefined4 local_20;
int local_1c;
undefined4 local_18;
int local_14;
local_14 = DAT_8f731d80;
FUN_8f63cbb4(s_r0_0x_08x_r1_0x_08x_r2_0x_08x_r3_8f6697f8,param_1[3],param_1[4],param_1[5],
param_1[6]);
FUN_8f63cbb4(s_r4_0x_08x_r5_0x_08x_r6_0x_08x_r7_8f669828,param_1[7],param_1[8],param_1[9],
param_1[10]);
FUN_8f63cbb4(s_r8_0x_08x_r9_0x_08x_r10_0x_08x_r_8f669858,param_1[0xb],param_1[0xc],param_1[0xd],
param_1[0xe]);
FUN_8f63cbb4(s_r12_0x_08x_usp_0x_08x_ulr_0x_08x_8f669888,param_1[0xf],param_1[1],param_1[2],
param_1[0x10]);
FUN_8f63cbb4(s_spsr_0x_08x_8f6698b8,*param_1);
FUN_8f625258(&local_44);
if ((*param_1 & 0x1f) == 0x11) {
uVar1 = 0x2a;
}
else {
uVar1 = 0x20;
}
FUN_8f63cbb4(s__c_s_r13_0x_08x_r14_0x_08x_8f6698c8,uVar1,&DAT_8f6698e4,local_44,local_40);
if ((*param_1 & 0x1f) == 0x12) {
uVar1 = 0x2a;
}
else {
uVar1 = 0x20;
}
FUN_8f63cbb4(s__c_s_r13_0x_08x_r14_0x_08x_8f6698c8,uVar1,&DAT_8f6698e8,local_3c,local_38);
if ((*param_1 & 0x1f) == 0x13) {
uVar1 = 0x2a;
}
else {
uVar1 = 0x20;
}
FUN_8f63cbb4(s__c_s_r13_0x_08x_r14_0x_08x_8f6698c8,uVar1,&DAT_8f6698ec,local_34,local_30);
if ((*param_1 & 0x1f) == 0x1b) {
uVar1 = 0x2a;
}
else {
uVar1 = 0x20;
}
FUN_8f63cbb4(s__c_s_r13_0x_08x_r14_0x_08x_8f6698c8,uVar1,&DAT_8f6698f0,local_24,local_20);
if ((*param_1 & 0x1f) == 0x1f) {
uVar1 = 0x2a;
}
else {
uVar1 = 0x20;
}
FUN_8f63cbb4(s__c_s_r13_0x_08x_r14_0x_08x_8f6698c8,uVar1,&DAT_8f6698f4,local_1c,local_18);
switch(*param_1 & 0x1f) {
case 0x11:
local_1c = local_44;
break;
case 0x12:
local_1c = local_3c;
break;
case 0x13:
local_1c = local_34;
break;
default:
goto switchD_8f6258f8_caseD_14;
case 0x1b:
local_1c = local_24;
break;
case 0x1f:
}
if (local_1c != 0) {
FUN_8f63cbb4(s_bottom_of_stack_at_0x_08x__8f6698f8,local_1c);
FUN_8f63cd9c(local_1c,0x80);
}
switchD_8f6258f8_caseD_14:
if (local_14 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f6259a0(int param_1,int param_2,undefined4 param_3)
{
*(int *)(param_1 + 0x40) = *(int *)(param_1 + 0x40) + param_2;
DAT_8f718ca8 = DAT_8f718ca8 + 1;
FUN_8f63cbb4(param_3);
FUN_8f625730(param_1);
FUN_8f63cacc();
do {
// WARNING: Do nothing block with infinite loop
} while( true );
}
void FUN_8f625aec(int param_1)
{
int iVar1;
int iVar2;
int iVar3;
uint uVar4;
iVar1 = DAT_8f731d80;
uVar4 = *(int *)(param_1 + 0x30) + *(int *)(param_1 + 0x34) & 0xfffffff8;
iVar3 = uVar4 - 0x2c;
FUN_8f63e410(iVar3,0,0x2c);
iVar2 = DAT_8f731d80;
*(undefined **)(uVar4 - 0xc) = &LAB_8f625a94;
*(int *)(param_1 + 0x2c) = iVar3;
if (iVar1 == iVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f625b94)
void FUN_8f625b58(int param_1,int param_2)
{
FUN_8f625234(param_1 + 0x2c,*(undefined4 *)(param_2 + 0x2c));
return;
}
// WARNING: Removing unreachable block (ram,0x8f625be8)
void FUN_8f625b98(uint param_1,uint param_2,uint param_3)
{
(&DAT_8f728000)[param_2 >> 0x14] = param_3 | 2 | param_1 & 0xfff00000;
FUN_8f6255fc();
return;
}
void FUN_8f625bec(void)
{
int iVar1;
uint uVar2;
int iVar3;
uint uVar4;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f6255c8();
FUN_8f6255d0(uVar2 & 0xcffffffe);
iVar3 = FUN_8f603924();
if (iVar3 != 0) {
uVar2 = 0;
do {
uVar4 = uVar2 + 1;
(&DAT_8f728000)[uVar2 & 0xfff] = uVar2 << 0x14 | 0xc02;
FUN_8f6255fc();
uVar2 = uVar4;
} while (uVar4 != 0x1000);
}
FUN_8f60395c();
FUN_8f6255ec(&DAT_8f728000);
FUN_8f6255f4(1);
uVar2 = FUN_8f6255c8();
if (iVar1 == DAT_8f731d80) {
FUN_8f6255d0(uVar2 | 1);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f625c8c(void)
{
int iVar1;
uint uVar2;
iVar1 = DAT_8f731d80;
DataSynchronizationBarrier(0xf);
uVar2 = FUN_8f6255c8();
FUN_8f6255d0(uVar2 & 0xfffffffe);
if (iVar1 == DAT_8f731d80) {
FUN_8f6255fc();
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f625d0c)
void FUN_8f625cdc(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f625d44)
void FUN_8f625d10(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f625d7c)
void FUN_8f625d48(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f625db4)
void FUN_8f625d80(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f625dec)
void FUN_8f625db8(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f625e24)
void FUN_8f625df0(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f625e5c)
void FUN_8f625e28(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f625e94)
void FUN_8f625e60(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f625ecc)
void FUN_8f625e98(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f625f04)
void FUN_8f625ed0(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f625f3c)
void FUN_8f625f08(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f625f74)
void FUN_8f625f40(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f625fb0)
void FUN_8f625f78(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f625fe8)
void FUN_8f625fb4(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626020)
void FUN_8f625fec(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f62605c)
void FUN_8f626024(void)
{
return;
}
void FUN_8f626060(void)
{
int iVar1;
int iVar2;
undefined4 uVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f614f3c();
uVar3 = FUN_8f614e7c();
if (iVar2 == 8) {
switch(uVar3) {
case 0x108:
goto switchD_8f6260cc_caseD_108;
case 0x10a:
case 0x112:
case 0x116:
uVar3 = 0;
goto LAB_8f6260a4;
}
}
else if (iVar2 == 0xb) {
switchD_8f6260cc_caseD_108:
uVar3 = 1;
goto LAB_8f6260a4;
}
FUN_8f63cbb4(s_Unsupported_platform_id_8f66998c);
uVar3 = 1;
LAB_8f6260a4:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
// WARNING: Removing unreachable block (ram,0x8f626150)
void FUN_8f62611c(void)
{
return;
}
void FUN_8f626154(void)
{
int iVar1;
int iVar2;
uint uVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f601254();
if (iVar2 - 1U < 0x13) {
uVar3 = 1 << (iVar2 - 1U & 0xff);
if ((uVar3 & 0x50200) != 0) {
iVar2 = FUN_8f6397a8(0x21208);
uVar3 = (uint)(iVar2 << 0x11) >> 0x18;
goto LAB_8f6261b8;
}
if ((uVar3 & 0x1401) != 0) {
iVar2 = FUN_8f6397a8(0x1208);
uVar3 = (uint)(iVar2 << 0x11) >> 0x18;
goto LAB_8f6261b8;
}
}
FUN_8f63cbb4(s_ERROR__Couldn_t_get_the_pmic_typ_8f6699a8);
uVar3 = 0;
LAB_8f6261b8:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
void FUN_8f6261f8(void)
{
uint uVar1;
int iVar2;
int local_10;
int local_c;
local_10 = 0;
local_c = DAT_8f731d80;
iVar2 = FUN_8f601254();
if (iVar2 - 1U < 0x13) {
uVar1 = 1 << (iVar2 - 1U & 0xff);
if ((uVar1 & 0x50200) != 0) {
iVar2 = FUN_8f63b288(1,&local_10);
if (iVar2 == 0) {
iVar2 = local_10 * 1000;
}
else {
FUN_8f63cbb4(s_ERROR__Get_battery_voltage_faile_8f6699cc);
iVar2 = local_10;
}
goto LAB_8f626264;
}
if ((uVar1 & 0x1401) != 0) {
iVar2 = FUN_8f639f20();
goto LAB_8f626264;
}
}
FUN_8f63cbb4(s_ERROR__Couldn_t_get_the_pmic_typ_8f6699a8);
iVar2 = local_10;
LAB_8f626264:
if (local_c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f6262bc(void)
{
int iVar1;
int iVar2;
undefined4 uVar3;
uint uVar4;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f626154();
if (iVar2 == 0) {
uVar3 = 1;
}
else {
uVar4 = FUN_8f6261f8(iVar2);
if (uVar4 < 3200000) {
uVar3 = 0;
}
else {
uVar3 = 1;
}
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f62634c)
void FUN_8f626318(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626384)
void FUN_8f626350(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6263bc)
void FUN_8f626388(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6263f4)
void FUN_8f6263c0(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f62642c)
void FUN_8f6263f8(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626464)
void FUN_8f626430(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f62649c)
void FUN_8f626468(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6264d4)
void FUN_8f6264a0(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626508)
void FUN_8f6264d8(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626540)
void FUN_8f62650c(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626578)
void FUN_8f626544(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6265b0)
void FUN_8f62657c(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6265e8)
void FUN_8f6265b4(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626620)
void FUN_8f6265ec(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f626658)
void FUN_8f626624(void)
{
return;
}
void FUN_8f62672c(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f626860(&DAT_8f72c000,0,0);
FUN_8f627048(&DAT_8f6699f4,&LAB_8f62665c,0,0x1e,0x2000);
if (iVar1 == DAT_8f731d80) {
FUN_8f6272f8();
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62679c(undefined4 param_1,undefined4 param_2,uint param_3)
{
undefined *puVar1;
int iVar2;
undefined4 *puVar3;
undefined4 *puVar4;
bool bVar5;
iVar2 = DAT_8f731d80;
puVar4 = (undefined4 *)FUN_8f63e114(0x10);
DAT_8f718ca8 = DAT_8f718ca8 + 1;
bVar5 = DAT_8f718ca8 == 1;
puVar4[2] = param_1;
puVar4[3] = param_2;
if (bVar5) {
FUN_8f62552c();
}
puVar4[1] = &PTR_LOOP_8f718ca0;
puVar1 = PTR_LOOP_8f718ca0;
puVar3 = puVar4;
*puVar4 = PTR_LOOP_8f718ca0;
PTR_LOOP_8f718ca0 = (undefined *)puVar3;
*(undefined4 **)(puVar1 + 4) = puVar4;
FUN_8f626998(&DAT_8f72c000,param_3 & 1 ^ 1);
DAT_8f718ca8 = DAT_8f718ca8 + -1;
if (DAT_8f718ca8 == 0) {
FUN_8f62551c();
}
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f626860(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
param_1[1] = param_2;
param_1[2] = param_3;
iVar2 = DAT_8f731d80;
*param_1 = 0x65766e74;
if (iVar1 == iVar2) {
FUN_8f627810(param_1 + 3);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6268ac(int param_1,undefined4 param_2)
{
int iVar1;
uint uVar2;
iVar1 = DAT_8f731d80;
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
if (*(int *)(param_1 + 4) == 0) {
uVar2 = FUN_8f627864(param_1 + 0xc,param_2);
}
else {
uVar2 = *(uint *)(param_1 + 8) & 1;
if (uVar2 != 0) {
uVar2 = 0;
*(undefined4 *)(param_1 + 4) = 0;
}
}
DAT_8f718ca8 = DAT_8f718ca8 + -1;
if (DAT_8f718ca8 == 0) {
FUN_8f62551c();
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f626994)
void FUN_8f62695c(undefined4 param_1)
{
FUN_8f6268ac(param_1,0xffffffff);
return;
}
void FUN_8f626998(int param_1,undefined4 param_2)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
if (*(int *)(param_1 + 4) == 0) {
if ((*(uint *)(param_1 + 8) & 1) == 0) {
*(undefined4 *)(param_1 + 4) = 1;
FUN_8f627a94(param_1 + 0xc,param_2);
}
else {
iVar2 = FUN_8f627938(param_1 + 0xc,param_2,0);
if (iVar2 < 1) {
*(undefined4 *)(param_1 + 4) = 1;
}
}
}
DAT_8f718ca8 = DAT_8f718ca8 + -1;
if (DAT_8f718ca8 == 0) {
FUN_8f62551c();
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
return;
}
void FUN_8f626a5c(int param_1)
{
int iVar1;
bool bVar2;
iVar1 = DAT_8f731d80;
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
DAT_8f718ca8 = DAT_8f718ca8 + -1;
bVar2 = DAT_8f718ca8 == 0;
*(undefined4 *)(param_1 + 4) = 0;
if (bVar2) {
FUN_8f62551c();
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f626ae0(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f625200();
FUN_8f60383c();
FUN_8f600f34();
FUN_8f628270();
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
// WARNING: Removing unreachable block (ram,0x8f626b70)
void FUN_8f626b28(void)
{
FUN_8f6276ac();
FUN_8f625170();
FUN_8f6037f4();
FUN_8f600140();
FUN_8f609bb8(0);
FUN_8f63d2d8();
DAT_8f731d80 = FUN_8f619e44();
FUN_8f627784();
FUN_8f62672c();
FUN_8f6281d4();
FUN_8f627048(s_bootstrap2_8f6699f8,FUN_8f626ae0,0,0x10,0x2000);
FUN_8f6272f8();
DAT_8f718ca8 = DAT_8f718ca8 + -1;
if (DAT_8f718ca8 == 0) goto LAB_8f626be0;
do {
FUN_8f6277b8();
LAB_8f626be0:
FUN_8f62551c();
} while( true );
}
void FUN_8f626be8(undefined4 *param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
*param_1 = 0x6d757478;
param_1[1] = 0;
iVar2 = DAT_8f731d80;
param_1[2] = 0;
if (iVar1 == iVar2) {
FUN_8f627810(param_1 + 3);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f626c38(int param_1)
{
int iVar1;
int iVar2;
int iVar3;
int unaff_r8;
iVar1 = DAT_8f731d80;
if (*(int *)(param_1 + 8) == DAT_8f732658) {
FUN_8f63cce8();
}
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
iVar2 = *(int *)(param_1 + 4);
iVar3 = iVar2 + 1;
*(int *)(param_1 + 4) = iVar3;
if (iVar3 < 2) {
unaff_r8 = 0;
}
if ((iVar3 == 1 || iVar2 < 0 != SBORROW4(iVar3,1)) ||
(unaff_r8 = FUN_8f627864(param_1 + 0xc,0xffffffff), -1 < unaff_r8)) {
*(int *)(param_1 + 8) = DAT_8f732658;
}
DAT_8f718ca8 = DAT_8f718ca8 + -1;
if (DAT_8f718ca8 == 0) {
FUN_8f62551c();
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(unaff_r8);
}
return;
}
void FUN_8f626d1c(int param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
if (*(int *)(param_1 + 8) != DAT_8f732658) {
FUN_8f63cce8();
}
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
*(undefined4 *)(param_1 + 8) = 0;
iVar2 = *(int *)(param_1 + 4) + -1;
*(int *)(param_1 + 4) = iVar2;
if (0 < iVar2) {
FUN_8f627938(param_1 + 0xc,1);
}
DAT_8f718ca8 = DAT_8f718ca8 + -1;
if (DAT_8f718ca8 == 0) {
FUN_8f62551c();
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
// WARNING: Removing unreachable block (ram,0x8f626e80)
void FUN_8f626e04(undefined4 param_1,undefined4 param_2,int param_3)
{
uint uVar1;
int *piVar2;
uVar1 = *(uint *)(param_3 + 0x14);
*(undefined4 *)(param_3 + 0x10) = (&DAT_8f72c024)[uVar1 * 2];
piVar2 = (int *)(&DAT_8f72c024)[uVar1 * 2];
*(undefined4 **)(param_3 + 0xc) = &DAT_8f72c020 + uVar1 * 2;
*(undefined *)(param_3 + 0x18) = 1;
DAT_8f72c01c = DAT_8f72c01c | 1 << (uVar1 & 0xff);
*piVar2 = param_3 + 0xc;
(&DAT_8f72c024)[uVar1 * 2] = param_3 + 0xc;
return;
}
void FUN_8f626e84(int param_1)
{
int iVar1;
undefined4 *puVar2;
bool bVar3;
iVar1 = DAT_8f731d80;
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
DAT_8f718ca8 = DAT_8f718ca8 + -1;
puVar2 = *(undefined4 **)(param_1 + 8);
bVar3 = DAT_8f718ca8 == 0;
*puVar2 = *(undefined4 *)(param_1 + 4);
*(undefined4 **)(*(int *)(param_1 + 4) + 4) = puVar2;
*(undefined4 *)(param_1 + 8) = 0;
*(undefined4 *)(param_1 + 4) = 0;
if (bVar3) {
FUN_8f62551c();
}
if (*(int *)(param_1 + 0x30) != 0) {
FUN_8f63e200();
}
if (iVar1 == DAT_8f731d80) {
FUN_8f63e200(param_1);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f626f34(void)
{
uint uVar1;
int iVar2;
int *piVar3;
int *piVar4;
int *piVar5;
int *piVar6;
int iVar7;
uint uVar8;
piVar3 = DAT_8f732658;
iVar2 = DAT_8f731d80;
uVar1 = DAT_8f72c01c;
iVar7 = count_leading_zeroes(DAT_8f72c01c);
uVar8 = 0x1f - iVar7;
piVar4 = (int *)(&DAT_8f72c024)[uVar8 * 2];
if (&DAT_8f72c020 + uVar8 * 2 == piVar4) {
piVar6 = (int *)0x0;
}
else {
piVar6 = (int *)piVar4[1];
*piVar6 = *piVar4;
*(int **)(*piVar4 + 4) = piVar6;
piVar4[1] = 0;
piVar5 = (int *)(&DAT_8f72c024)[uVar8 * 2];
piVar6 = piVar4 + -3;
*piVar4 = 0;
if (&DAT_8f72c020 + uVar8 * 2 != piVar5) {
*(undefined *)(piVar4 + 3) = 2;
iVar7 = DAT_8f731d80;
goto joined_r0x8f627028;
}
}
DAT_8f72c01c = uVar1 & ~(1 << (uVar8 & 0xff));
*(undefined *)(piVar6 + 6) = 2;
iVar7 = DAT_8f731d80;
joined_r0x8f627028:
DAT_8f731d80 = iVar7;
if (piVar6 == piVar3) {
if (iVar2 == iVar7) {
return;
}
}
else {
DAT_8f732658 = piVar6;
if (piVar6[8] < 1) {
piVar6[8] = 5;
}
piVar3[7] = DAT_8f718ca8;
DAT_8f718ca8 = piVar6[7];
if (iVar2 == iVar7) {
FUN_8f625b58();
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f627048(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
undefined4 param_5)
{
int iVar1;
undefined4 *puVar2;
undefined4 *puVar3;
iVar1 = DAT_8f731d80;
puVar2 = (undefined4 *)FUN_8f63e114(100);
if (puVar2 != (undefined4 *)0x0) {
FUN_8f63e410(puVar2,0,100);
*puVar2 = 0x74687264;
FUN_8f63e8d8(puVar2 + 0x11,param_1,0x20);
puVar2[5] = param_4;
puVar2[0xe] = param_2;
puVar2[0xf] = param_3;
puVar2[7] = 1;
*(undefined *)(puVar2 + 6) = 0;
puVar2[9] = 0;
puVar2[10] = 0;
puVar3 = (undefined4 *)FUN_8f63e114(param_5);
puVar2[0xc] = puVar3;
if (puVar3 == (undefined4 *)0x0) {
FUN_8f63e200(puVar2);
puVar2 = puVar3;
}
else {
puVar2[0xd] = param_5;
FUN_8f625aec(puVar2);
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
DAT_8f718ca8 = DAT_8f718ca8 + -1;
puVar3 = puVar2 + 1;
puVar2[1] = &DAT_8f72c120;
puVar2[2] = DAT_8f72c124;
*DAT_8f72c124 = puVar3;
DAT_8f72c124 = puVar3;
if (DAT_8f718ca8 == 0) {
FUN_8f62551c();
}
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(puVar2);
}
void FUN_8f627190(undefined4 param_1)
{
int iVar1;
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
iVar1 = DAT_8f732658;
*(undefined4 *)(DAT_8f732658 + 0x40) = param_1;
*(undefined *)(iVar1 + 0x18) = 5;
FUN_8f62679c(FUN_8f626e84,iVar1,1);
FUN_8f626f34();
FUN_8f63cce8();
do {
// WARNING: Do nothing block with infinite loop
} while( true );
}
void FUN_8f627218(void)
{
int iVar1;
int iVar2;
uint uVar3;
undefined4 uVar4;
int iVar5;
iVar1 = DAT_8f731d80;
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
iVar2 = DAT_8f732658;
iVar5 = DAT_8f732658 + 0xc;
uVar3 = *(uint *)(DAT_8f732658 + 0x14);
*(undefined4 *)(DAT_8f732658 + 0x20) = 0;
uVar4 = (&DAT_8f72c020)[uVar3 * 2];
*(undefined *)(iVar2 + 0x18) = 1;
DAT_8f72c01c = DAT_8f72c01c | 1 << (uVar3 & 0xff);
*(undefined4 **)(iVar2 + 0x10) = &DAT_8f72c020 + uVar3 * 2;
*(undefined4 *)(iVar2 + 0xc) = uVar4;
*(int *)((&DAT_8f72c020)[uVar3 * 2] + 4) = iVar5;
(&DAT_8f72c020)[uVar3 * 2] = iVar5;
FUN_8f626f34();
DAT_8f718ca8 = DAT_8f718ca8 + -1;
if (DAT_8f718ca8 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f62551c();
return;
}
}
else if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6272f8(int param_1)
{
int iVar1;
undefined4 uVar2;
int iVar3;
uint uVar4;
iVar1 = DAT_8f731d80;
if ((byte)(*(char *)(param_1 + 0x18) - 1U) < 2) {
iVar3 = -10;
}
else {
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
uVar4 = *(uint *)(param_1 + 0x14);
*(undefined *)(param_1 + 0x18) = 1;
uVar2 = (&DAT_8f72c024)[uVar4 * 2];
DAT_8f72c01c = DAT_8f72c01c | 1 << (uVar4 & 0xff);
*(undefined4 **)(param_1 + 0xc) = &DAT_8f72c020 + uVar4 * 2;
*(undefined4 *)(param_1 + 0x10) = uVar2;
*(int *)(&DAT_8f72c024)[uVar4 * 2] = param_1 + 0xc;
(&DAT_8f72c024)[uVar4 * 2] = param_1 + 0xc;
uVar2 = FUN_8f627218();
iVar3 = DAT_8f718ca8 + -1;
DAT_8f718ca8 = iVar3;
if (iVar3 == 0) {
FUN_8f62551c(uVar2);
}
else {
iVar3 = 0;
}
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar3);
}
return;
}
void FUN_8f6273e0(void)
{
int *piVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
uint uVar5;
iVar2 = DAT_8f731d80;
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
iVar3 = DAT_8f732658;
piVar1 = (int *)(DAT_8f732658 + 0x20);
*(undefined *)(DAT_8f732658 + 0x18) = 1;
if (*piVar1 < 1) {
uVar5 = *(uint *)(iVar3 + 0x14);
uVar4 = (&DAT_8f72c020)[uVar5 * 2];
*(undefined4 **)(iVar3 + 0x10) = &DAT_8f72c020 + uVar5 * 2;
*(undefined4 *)(iVar3 + 0xc) = uVar4;
DAT_8f72c01c = DAT_8f72c01c | 1 << (uVar5 & 0xff);
*(int *)((&DAT_8f72c020)[uVar5 * 2] + 4) = iVar3 + 0xc;
(&DAT_8f72c020)[uVar5 * 2] = iVar3 + 0xc;
}
else {
uVar5 = *(uint *)(iVar3 + 0x14);
uVar4 = (&DAT_8f72c024)[uVar5 * 2];
*(undefined4 **)(iVar3 + 0xc) = &DAT_8f72c020 + uVar5 * 2;
DAT_8f72c01c = DAT_8f72c01c | 1 << (uVar5 & 0xff);
*(undefined4 *)(iVar3 + 0x10) = uVar4;
*(int *)(&DAT_8f72c024)[uVar5 * 2] = iVar3 + 0xc;
(&DAT_8f72c024)[uVar5 * 2] = iVar3 + 0xc;
}
FUN_8f626f34();
DAT_8f718ca8 = DAT_8f718ca8 + -1;
if (DAT_8f718ca8 == 0) {
if (iVar2 == DAT_8f731d80) {
FUN_8f62551c();
return;
}
}
else if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f627508(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
FUN_8f626f34();
DAT_8f718ca8 = DAT_8f718ca8 + -1;
if (DAT_8f718ca8 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f62551c();
return;
}
}
else if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62758c(void)
{
int iVar1;
int iVar2;
undefined4 uVar3;
iVar1 = DAT_8f731d80;
if (DAT_8f732658 == DAT_8f732654) {
uVar3 = 0;
}
else {
iVar2 = *(int *)(DAT_8f732658 + 0x20) + -1;
*(int *)(DAT_8f732658 + 0x20) = iVar2;
if (iVar2 < 1) {
uVar3 = 1;
}
else {
uVar3 = 0;
}
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
return;
}
void FUN_8f627600(undefined4 param_1)
{
undefined auStack_38 [28];
int local_1c;
local_1c = DAT_8f731d80;
FUN_8f628064(auStack_38);
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
FUN_8f6280c0(auStack_38,param_1,FUN_8f626e04,DAT_8f732658);
*(undefined *)(DAT_8f732658 + 0x18) = 4;
FUN_8f626f34();
DAT_8f718ca8 = DAT_8f718ca8 + -1;
if (DAT_8f718ca8 == 0) {
FUN_8f62551c();
}
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6276ac(void)
{
int iVar1;
undefined4 *puVar2;
bool bVar3;
iVar1 = DAT_8f731d80;
puVar2 = &DAT_8f72c020;
do {
puVar2[1] = puVar2;
*puVar2 = puVar2;
puVar2 = puVar2 + 2;
} while ((undefined4 **)puVar2 != &DAT_8f72c120);
DAT_8f72c124 = &DAT_8f72c120;
DAT_8f72c120 = &DAT_8f72c120;
FUN_8f63e410(&DAT_8f72c128,0,100);
DAT_8f72c128 = 0x74687264;
FUN_8f63e8d8(&DAT_8f72c16c,s_bootstrap_8f669b24,0x20);
bVar3 = iVar1 == DAT_8f731d80;
DAT_8f72c12c = &DAT_8f72c120;
DAT_8f72c13c = 0x1f;
DAT_8f72c140 = 2;
DAT_8f72c144 = 1;
DAT_8f72c130 = DAT_8f72c124;
*DAT_8f72c124 = &DAT_8f72c12c;
DAT_8f72c124 = &DAT_8f72c12c;
DAT_8f732658 = &DAT_8f72c128;
if (bVar3) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f6277b4)
void FUN_8f627784(void)
{
return;
}
void FUN_8f6277b8(void)
{
FUN_8f63e8d8(DAT_8f732658 + 0x44,&DAT_8f669b30,0x20);
DAT_8f732654 = DAT_8f732658;
*(undefined4 *)(DAT_8f732658 + 0x14) = 0;
do {
FUN_8f6255c0();
} while( true );
}
void FUN_8f627810(undefined4 *param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
*param_1 = 0x77616974;
iVar2 = DAT_8f731d80;
param_1[2] = param_1 + 1;
param_1[1] = param_1 + 1;
param_1[3] = 0;
if (iVar1 == iVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f627864(int param_1,int param_2)
{
int iVar1;
undefined4 uVar2;
int iVar3;
int iVar4;
int iVar5;
undefined auStack_38 [28];
int local_1c;
iVar1 = DAT_8f732658;
local_1c = DAT_8f731d80;
if (param_2 == 0) {
uVar2 = 0xfffffff3;
}
else {
iVar3 = *(int *)(param_1 + 0xc);
iVar5 = DAT_8f732658 + 0xc;
*(undefined4 *)(DAT_8f732658 + 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_8f627508();
}
else {
FUN_8f628064(auStack_38);
FUN_8f6280c0(auStack_38,param_2,FUN_8f627d8c,DAT_8f732658);
FUN_8f627508();
FUN_8f62810c(auStack_38);
}
uVar2 = *(undefined4 *)(DAT_8f732658 + 0x28);
}
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f627938(int param_1,int param_2,int param_3)
{
int iVar1;
int *piVar2;
undefined4 uVar3;
uint uVar4;
int iVar5;
int iVar6;
uint uVar7;
undefined4 uVar8;
int *piVar9;
iVar1 = DAT_8f731d80;
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_8f732658;
if (param_2 == 0) {
uVar4 = piVar9[2];
uVar3 = 1;
iVar6 = (&DAT_8f72c024)[uVar4 * 2];
*piVar9 = (int)(&DAT_8f72c020 + uVar4 * 2);
DAT_8f72c01c = DAT_8f72c01c | 1 << (uVar4 & 0xff);
piVar9[1] = iVar6;
*(int **)(&DAT_8f72c024)[uVar4 * 2] = piVar9;
(&DAT_8f72c024)[uVar4 * 2] = piVar9;
}
else {
uVar4 = piVar9[2];
uVar7 = *(uint *)(DAT_8f732658 + 0x14);
iVar5 = DAT_8f732658 + 0xc;
*(undefined *)(DAT_8f732658 + 0x18) = 1;
DAT_8f72c01c = DAT_8f72c01c | 1 << (uVar7 & 0xff) | 1 << (uVar4 & 0xff);
uVar8 = (&DAT_8f72c024)[uVar7 * 2];
*(undefined4 **)(iVar6 + 0xc) = &DAT_8f72c020 + uVar7 * 2;
*(undefined4 *)(iVar6 + 0x10) = uVar8;
*(int *)(&DAT_8f72c024)[uVar7 * 2] = iVar5;
(&DAT_8f72c024)[uVar7 * 2] = iVar5;
iVar6 = (&DAT_8f72c024)[uVar4 * 2];
*piVar9 = (int)(&DAT_8f72c020 + uVar4 * 2);
piVar9[1] = iVar6;
*(int **)(&DAT_8f72c024)[uVar4 * 2] = piVar9;
(&DAT_8f72c024)[uVar4 * 2] = piVar9;
FUN_8f626f34();
}
goto LAB_8f6279f0;
}
}
uVar3 = 0;
LAB_8f6279f0:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f627a94(int param_1,int param_2,int param_3)
{
int iVar1;
undefined4 uVar2;
int *piVar3;
uint uVar4;
int iVar5;
int iVar6;
int iVar7;
int *piVar8;
iVar5 = DAT_8f732658;
iVar1 = DAT_8f731d80;
if ((param_2 != 0) && (0 < *(int *)(param_1 + 0xc))) {
iVar7 = DAT_8f732658 + 0xc;
uVar4 = *(uint *)(DAT_8f732658 + 0x14);
*(undefined *)(DAT_8f732658 + 0x18) = 1;
DAT_8f72c01c = DAT_8f72c01c | 1 << (uVar4 & 0xff);
uVar2 = (&DAT_8f72c024)[uVar4 * 2];
*(undefined4 **)(iVar5 + 0xc) = &DAT_8f72c020 + uVar4 * 2;
*(undefined4 *)(iVar5 + 0x10) = uVar2;
*(int *)(&DAT_8f72c024)[uVar4 * 2] = iVar7;
(&DAT_8f72c024)[uVar4 * 2] = iVar7;
}
piVar3 = *(int **)(param_1 + 8);
if ((int *)(param_1 + 4) != piVar3) {
piVar8 = (int *)piVar3[1];
iVar5 = 0;
*piVar8 = *piVar3;
*(int **)(*piVar3 + 4) = piVar8;
piVar3[1] = 0;
piVar8 = piVar3 + -3;
*piVar3 = 0;
if (piVar8 != (int *)0x0) {
iVar7 = *(int *)(param_1 + 0xc);
do {
uVar4 = piVar8[5];
DAT_8f72c01c = DAT_8f72c01c | 1 << (uVar4 & 0xff);
*(undefined *)(piVar8 + 6) = 1;
piVar8[9] = 0;
piVar8[10] = param_3;
iVar6 = (&DAT_8f72c024)[uVar4 * 2];
piVar8[3] = (int)(&DAT_8f72c020 + uVar4 * 2);
piVar8[4] = iVar6;
iVar6 = (iVar7 + -1) - iVar5;
iVar5 = iVar5 + 1;
*(int **)(&DAT_8f72c024)[uVar4 * 2] = piVar8 + 3;
(&DAT_8f72c024)[uVar4 * 2] = piVar8 + 3;
piVar3 = *(int **)(param_1 + 8);
if (piVar3 == (int *)(param_1 + 4)) {
*(int *)(param_1 + 0xc) = iVar6;
goto LAB_8f627c08;
}
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) = iVar6;
LAB_8f627c08:
iVar7 = param_2;
if (param_2 != 0) {
iVar7 = iVar5;
}
if ((param_2 != 0 && iVar5 != 0) && -1 < iVar7) {
FUN_8f626f34();
}
goto LAB_8f627c18;
}
}
iVar5 = 0;
LAB_8f627c18:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar5);
}
void FUN_8f627c5c(int param_1,int param_2,undefined4 param_3)
{
int iVar1;
int iVar2;
int *piVar3;
uint uVar4;
undefined4 *puVar5;
undefined4 uVar6;
int iVar7;
iVar1 = DAT_8f731d80;
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
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);
*(undefined4 **)(*(int *)(param_1 + 0xc) + 4) = puVar5;
*(undefined4 *)(param_1 + 0x10) = 0;
uVar6 = (&DAT_8f72c024)[uVar4 * 2];
DAT_8f72c01c = DAT_8f72c01c | 1 << (uVar4 & 0xff);
*(int *)(iVar2 + 0xc) = iVar7 + -1;
*(undefined4 **)(param_1 + 0xc) = &DAT_8f72c020 + uVar4 * 2;
*(undefined4 *)(param_1 + 0x10) = uVar6;
piVar3 = (int *)(&DAT_8f72c024)[uVar4 * 2];
*(undefined4 *)(param_1 + 0x24) = 0;
*(undefined4 *)(param_1 + 0x28) = param_3;
*(undefined *)(param_1 + 0x18) = 1;
*piVar3 = param_1 + 0xc;
(&DAT_8f72c024)[uVar4 * 2] = param_1 + 0xc;
if (param_2 != 0) {
param_1 = FUN_8f626f34();
}
iVar2 = DAT_8f718ca8 + -1;
DAT_8f718ca8 = iVar2;
if (iVar2 == 0) {
FUN_8f62551c(param_1);
}
else {
iVar2 = 0;
}
}
else {
iVar2 = -0xc;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
return;
}
void FUN_8f627d8c(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int iVar1;
uint uVar2;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f627c5c(param_3,0,0xfffffff3);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(~uVar2 >> 0x1f);
}
void FUN_8f627dd8(int param_1)
{
int iVar1;
int iVar2;
int iVar3;
undefined4 *puVar4;
undefined4 *puVar5;
undefined4 uVar6;
iVar2 = DAT_8f731d80;
iVar1 = DAT_8f72c18c;
puVar5 = DAT_8f72c190 + -1;
if (DAT_8f72c190 == &DAT_8f72c18c) {
LAB_8f627e40:
*(int **)(param_1 + 8) = &DAT_8f72c18c;
iVar3 = param_1 + 4;
*(int *)(param_1 + 4) = DAT_8f72c18c;
DAT_8f72c18c = iVar3;
*(int *)(iVar1 + 4) = param_1 + 4;
}
else {
iVar3 = DAT_8f72c190[2] - *(int *)(param_1 + 0xc);
puVar4 = DAT_8f72c190;
while (iVar3 < 1) {
puVar4 = (undefined4 *)puVar5[2];
puVar5 = puVar4 + -1;
if (puVar4 == &DAT_8f72c18c) goto LAB_8f627e40;
iVar3 = puVar4[2] - *(int *)(param_1 + 0xc);
}
uVar6 = puVar5[1];
*(undefined4 **)(param_1 + 8) = puVar4;
*(undefined4 *)(param_1 + 4) = uVar6;
*(int *)(puVar5[1] + 4) = param_1 + 4;
puVar5[1] = param_1 + 4;
}
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f627e94(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)
{
int iVar1;
int iVar2;
bool bVar3;
iVar1 = DAT_8f731d80;
if ((*(int *)(param_1 + 4) != 0) || (*(int *)(param_1 + 8) != 0)) {
FUN_8f63cce8();
}
iVar2 = FUN_8f613c54();
*(undefined4 *)(param_1 + 0x10) = param_3;
*(undefined4 *)(param_1 + 0x14) = param_4;
*(undefined4 *)(param_1 + 0x18) = param_5;
DAT_8f718ca8 = DAT_8f718ca8 + 1;
bVar3 = DAT_8f718ca8 == 1;
*(int *)(param_1 + 0xc) = iVar2 + param_2;
if (bVar3) {
FUN_8f62552c();
}
FUN_8f627dd8(param_1);
DAT_8f718ca8 = DAT_8f718ca8 + -1;
if (DAT_8f718ca8 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f62551c();
return;
}
}
else if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f627f78(undefined4 param_1,int param_2)
{
int *piVar1;
int iVar2;
int iVar3;
int iVar4;
code *pcVar5;
int *piVar6;
int *piVar7;
iVar2 = DAT_8f731d80;
while ((((piVar1 = DAT_8f72c190, DAT_8f72c190 != &DAT_8f72c18c && (DAT_8f72c190 != (int *)0x0)) &&
(piVar6 = DAT_8f72c190 + -1, piVar6 != (int *)0x0)) && (-1 < param_2 - DAT_8f72c190[2])))
{
piVar7 = (int *)DAT_8f72c190[1];
iVar4 = DAT_8f72c190[3];
pcVar5 = (code *)DAT_8f72c190[4];
*piVar7 = *DAT_8f72c190;
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_8f627dd8(piVar6);
}
}
FUN_8f62758c();
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(1);
}
void FUN_8f628064(undefined4 *param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
*param_1 = 0x74696d72;
param_1[2] = 0;
iVar2 = DAT_8f731d80;
param_1[1] = 0;
param_1[3] = 0;
param_1[4] = 0;
param_1[5] = 0;
param_1[6] = 0;
if (iVar1 == iVar2) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6280c0(undefined4 param_1,int param_2,undefined4 param_3,undefined4 param_4)
{
int iVar1;
iVar1 = DAT_8f731d80;
if (param_2 == 0) {
param_2 = 1;
}
FUN_8f627e94(param_1,param_2,0,param_3,param_4);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62810c(int param_1)
{
int iVar1;
int *piVar2;
bool bVar3;
iVar1 = DAT_8f731d80;
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
piVar2 = *(int **)(param_1 + 8);
if ((*(int *)(param_1 + 4) != 0) || (piVar2 != (int *)0x0)) {
*piVar2 = *(int *)(param_1 + 4);
*(int **)(*(int *)(param_1 + 4) + 4) = piVar2;
*(undefined4 *)(param_1 + 8) = 0;
*(undefined4 *)(param_1 + 4) = 0;
}
DAT_8f718ca8 = DAT_8f718ca8 + -1;
bVar3 = DAT_8f718ca8 == 0;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 *)(param_1 + 0x14) = 0;
*(undefined4 *)(param_1 + 0x18) = 0;
if (bVar3) {
if (iVar1 == DAT_8f731d80) {
FUN_8f62551c();
return;
}
}
else if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f628228)
void FUN_8f6281d4(void)
{
DAT_8f72c190 = &DAT_8f72c18c;
DAT_8f72c18c = &DAT_8f72c18c;
FUN_8f613bc0(FUN_8f627f78,0,10);
return;
}
void FUN_8f62822c(int param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
(**(code **)(param_1 + 8))(param_1,0);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0);
}
void FUN_8f628270(void)
{
int iVar1;
int iVar2;
undefined **ppuVar3;
undefined *puVar4;
undefined4 *puVar5;
iVar1 = DAT_8f731d80;
ppuVar3 = &PTR_s_aboot_8f70f654;
do {
if ((code *)ppuVar3[1] != (code *)0x0) {
(*(code *)ppuVar3[1])(ppuVar3);
}
ppuVar3 = ppuVar3 + 4;
} while (ppuVar3 != (undefined **)&DAT_8f70f664);
puVar5 = (undefined4 *)(PTR_DAT_8f62835c + -0x10);
puVar4 = PTR_DAT_8f62835c;
do {
while ((*(int *)(puVar4 + -8) == 0 || ((*(uint *)(puVar4 + -4) & 1) != 0))) {
LAB_8f6282d0:
puVar5 = puVar5 + 4;
puVar4 = puVar4 + 0x10;
if (puVar5 == &DAT_8f70f664) goto LAB_8f628340;
}
FUN_8f63d918(s_starting_app__s_8f669b54,*(undefined4 *)(puVar4 + -0x10));
iVar2 = FUN_8f627048(*(undefined4 *)(puVar4 + -0x10),FUN_8f62822c,puVar5,0x10,0x2000);
if (iVar2 == 0) goto LAB_8f6282d0;
puVar5 = puVar5 + 4;
FUN_8f6272f8();
puVar4 = puVar4 + 0x10;
} while (puVar5 != &DAT_8f70f664);
LAB_8f628340:
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f628360(void)
{
int iVar1;
int iVar2;
int *piVar3;
uint uVar4;
longlong lVar5;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f607810(s_bootselect_8f669cd0);
if (iVar2 != -1) {
lVar5 = FUN_8f60793c();
if (lVar5 != 0) {
piVar3 = (int *)FUN_8f63e150(0x40,DAT_8f72d220 + 0x3fU & 0xffffffc0);
if (piVar3 == (int *)0x0) {
FUN_8f63cce8();
}
uVar4 = FUN_8f60f940((int)lVar5,(int)((ulonglong)lVar5 >> 0x20),piVar3,DAT_8f72d220);
if (uVar4 == 0) {
if ((*piVar3 == 0x6c655342) && (piVar3[1] == 0x10001)) {
if (piVar3[3] < 0) {
uVar4 = ((piVar3[3] ^ 0x40000000U) << 1) >> 0x1f;
}
}
else {
FUN_8f63cbb4(s_Signature__0x_08x_or_version__0x_8f669cf0);
FUN_8f63cce8();
uVar4 = 0;
}
FUN_8f63e200(piVar3);
}
else {
uVar4 = 0;
FUN_8f63e200(piVar3);
}
goto LAB_8f6283a8;
}
}
uVar4 = 0;
LAB_8f6283a8:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar4);
}
void FUN_8f6284c8(undefined4 param_1,undefined4 param_2)
{
int iVar1;
char *pcVar2;
undefined local_30;
undefined local_2f;
undefined4 local_2c;
undefined4 local_28;
undefined4 local_24;
undefined4 local_20;
int local_1c;
DAT_8f718cc0 = 1;
if (DAT_8f72f5f4 == 0) {
pcVar2 = s__boot_8f6663fc;
}
else {
pcVar2 = s__recovery_8f666404;
}
local_1c = DAT_8f731d80;
iVar1 = FUN_8f6112b4(param_1,param_2,pcVar2);
FUN_8f611718();
if (iVar1 == 0) {
iVar1 = DAT_8f72f5f4;
if (DAT_8f72f5f4 != 0) {
iVar1 = 1;
}
local_30 = (undefined)iVar1;
if (DAT_8f718cc0 == 0) {
local_2f = 1;
}
else {
local_2f = 2;
}
}
else {
local_2f = 1;
DAT_8f72d494 = 1;
iVar1 = DAT_8f72f5f4;
if (DAT_8f72f5f4 != 0) {
iVar1 = 1;
}
DAT_8f718cc0 = 0;
local_30 = (undefined)iVar1;
}
local_2c = 0;
local_28 = 0;
local_24 = 0;
local_20 = 0;
FUN_8f633400(&local_30);
iVar1 = FUN_8f6116d8();
if (iVar1 == 2) {
FUN_8f612ee4(0);
FUN_8f6125e0();
}
else if (iVar1 == 3) {
FUN_8f612ee4(2);
FUN_8f613cc4(30000);
FUN_8f60047c();
}
if (local_1c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f6285ec(int param_1,int param_2)
{
int iVar1;
int iVar2;
bool bVar3;
iVar1 = DAT_8f731d80;
if (param_2 == 0) {
iVar2 = FUN_8f605790();
*(int *)(param_1 + 0xc) = iVar2 + 0x8000;
}
else {
iVar2 = FUN_8f605790();
*(int *)(param_1 + 0xc) = iVar2 + 0x80000;
}
iVar2 = FUN_8f605790();
*(int *)(param_1 + 0x14) = iVar2 + 0x2000000;
iVar2 = FUN_8f605790();
bVar3 = iVar1 == DAT_8f731d80;
*(int *)(param_1 + 0x20) = iVar2 + 0x1e00000;
if (bVar3) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6286a0(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f63cbb4(s_flash_all_end_____8f669d30);
DAT_8f72d204 = 0;
DAT_8f72d200 = 0;
if (iVar1 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f628708(int param_1)
{
int iVar1;
int iVar2;
undefined4 uVar3;
undefined4 *puVar4;
undefined4 *puVar5;
iVar1 = DAT_8f731d80;
if (param_1 != 0) {
puVar5 = (undefined4 *)(PTR_PTR_FUN_8f628774 + 0x30);
puVar4 = (undefined4 *)PTR_PTR_FUN_8f628774;
do {
puVar4 = puVar4 + 1;
iVar2 = FUN_8f63e6f4(param_1,*puVar4);
if (iVar2 == 0) {
uVar3 = 1;
goto LAB_8f628750;
}
} while (puVar4 != puVar5);
}
uVar3 = 0;
LAB_8f628750:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
void FUN_8f628778(int param_1)
{
int iVar1;
undefined4 uVar2;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f63d4b0(param_1 + 1);
FUN_8f6329f4(uVar2,10);
if (iVar1 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6287c8(int param_1)
{
int iVar1;
undefined4 uVar2;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f63d4b0(param_1 + 1);
FUN_8f6329f4(uVar2,0x14);
if (iVar1 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f628818(void)
{
char *pcVar1;
char *pcVar2;
char *pcVar3;
undefined auStack_5c [64];
int local_1c;
pcVar3 = s_false_8f669d4c;
pcVar2 = (char *)0x8f669d44;
pcVar1 = pcVar3;
if (DAT_8f718cc0 != 0) {
pcVar1 = pcVar2;
}
local_1c = DAT_8f731d80;
FUN_8f63e068(auStack_5c,0x40,s__Device_tampered___s_8f669d68,pcVar1);
FUN_8f631570(auStack_5c);
pcVar1 = pcVar3;
if (DAT_8f718cbc != 0) {
pcVar1 = pcVar2;
}
FUN_8f63e068(auStack_5c,0x40,s__Device_unlocked___s_8f669d80,pcVar1);
FUN_8f631570(auStack_5c);
pcVar1 = pcVar3;
if (DAT_8f718cc4 != 0) {
pcVar1 = pcVar2;
}
FUN_8f63e068(auStack_5c,0x40,s__Device_critical_unlocked___s_8f669d98,pcVar1);
FUN_8f631570(auStack_5c);
pcVar1 = s_logging_8f669d60;
if (DAT_8f718d8c != 0) {
pcVar1 = s_enforcing_8f669d54;
}
FUN_8f63e068(auStack_5c,0x40,s__Device_verity_mode___s_8f669db8,pcVar1);
FUN_8f631570(auStack_5c);
if (DAT_8f718cc8 != 0) {
pcVar3 = pcVar2;
}
FUN_8f63e068(auStack_5c,0x40,s__Charger_screen_enabled___s_8f669dd0,pcVar3);
FUN_8f631570(auStack_5c);
FUN_8f63e068(auStack_5c,0x40,s__Display_panel___s_8f669dec,&DAT_8f718ccc);
FUN_8f631570(auStack_5c);
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f628978(undefined4 param_1,undefined4 param_2)
{
int iVar1;
int iVar2;
longlong lVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f607810();
if (iVar2 == -1) {
if (iVar1 == DAT_8f731d80) {
FUN_8f63cbb4(s_Invalid_partition_index_8f669e00);
return;
}
}
else {
lVar3 = FUN_8f60793c();
if (lVar3 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f63cbb4(s_Invalid_partition_name__s_8f669e1c,param_1);
return;
}
}
else {
FUN_8f6078c4(iVar2);
FUN_8f63e6f4(param_1,s_userdata_8f663458);
FUN_8f63e068(param_2,0x40,s__0x_llx_8f669e38);
if (iVar1 == DAT_8f731d80) {
return;
}
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f628a64(void)
{
undefined auStack_4c [64];
int local_c;
local_c = DAT_8f731d80;
FUN_8f63e068(auStack_4c,0x40,s__s__s__s__s_8f669e44,&DAT_8f71c540,s_Z581KL_8f71c624,
s_V5_7_3_8f71c5e4,s_20180110_8f71c664);
FUN_8f631570(auStack_4c);
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
if (local_c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f628aec(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
DAT_8f72c1dc = 0;
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
if (iVar1 == DAT_8f731d80) {
FUN_8f600804(0x77665500);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f628b48(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
if (iVar1 == DAT_8f731d80) {
FUN_8f600804(0x77665502);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f628b94(char *param_1)
{
char cVar1;
int iVar2;
undefined uVar3;
int iVar4;
iVar2 = DAT_8f731d80;
if ((byte)(*param_1 - 0x30U) < 10) {
LAB_8f628bf0:
uVar3 = FUN_8f63d5cc(param_1);
iVar4 = FUN_8f61054c(uVar3);
if (iVar4 == 0) {
if (iVar2 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
}
else if (iVar2 == DAT_8f731d80) goto LAB_8f628c40;
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar4);
}
if (*param_1 != '\0') {
param_1 = param_1 + 1;
do {
cVar1 = *param_1;
if ((byte)(cVar1 - 0x30U) < 10) goto LAB_8f628bf0;
param_1 = param_1 + 1;
} while (cVar1 != '\0');
}
LAB_8f628c40:
FUN_8f631758();
return;
}
void FUN_8f628c60(void)
{
undefined4 uVar1;
int iVar2;
undefined auStack_94 [128];
int local_14;
local_14 = DAT_8f731d80;
uVar1 = FUN_8f6105f4();
FUN_8f63e0bc(auStack_94,s_MID___8x_8f669e64,uVar1);
iVar2 = FUN_8f63e9a0(auStack_94);
uVar1 = FUN_8f610638();
FUN_8f63e0bc(auStack_94 + iVar2,s___PRV___8x_8f669e70,uVar1);
iVar2 = FUN_8f63e9a0(auStack_94);
uVar1 = FUN_8f61067c();
FUN_8f63e0bc(auStack_94 + iVar2,s___FW_VER___8x_8f669e7c,uVar1);
FUN_8f631570(auStack_94);
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f628d10(void)
{
undefined auStack_cc [64];
undefined auStack_8c [128];
int local_c;
local_c = DAT_8f731d80;
FUN_8f632ddc(auStack_cc);
FUN_8f63e068(auStack_8c,0x80,s__Display_panel___s_8f669dec + 0x10,auStack_cc);
FUN_8f631570(auStack_8c);
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
if (local_c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f628d78(void)
{
undefined auStack_10c [128];
undefined auStack_8c [128];
int local_c;
local_c = DAT_8f731d80;
FUN_8f632e54(auStack_8c);
FUN_8f63e068(auStack_10c,0x80,s__Display_panel___s_8f669dec + 0x10,auStack_8c);
FUN_8f631570(auStack_10c);
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
if (local_c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f628de0(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f63ad9c(2,0x85a,4,0);
FUN_8f63ad9c(2,0x12d0,0xa5,0);
FUN_8f613cc4(1000);
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
if (iVar1 == DAT_8f731d80) {
FUN_8f63ad9c(2,0x1240,0,0);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f628e64(undefined4 param_1)
{
longlong lVar1;
longlong lVar2;
ulonglong uVar3;
undefined4 uVar4;
int iVar5;
uint uVar6;
uint uVar7;
uint uVar8;
int iVar9;
uint uVar10;
uint uVar11;
uint uVar12;
undefined4 uVar13;
int iVar14;
int iVar15;
longlong lVar16;
longlong lVar17;
undefined4 local_c0;
undefined4 local_bc;
undefined uStack_ac;
undefined auStack_ab [127];
int local_2c;
local_2c = DAT_8f731d80;
FUN_8f63e758(&uStack_ac,param_1);
FUN_8f63ee2c(auStack_ab,s_ERROR___s__Out_of_SMP_s__cnt__d__8f668f7c + 0x20);
uVar4 = FUN_8f63e7a0();
iVar5 = FUN_8f607810();
if (iVar5 == -1) {
FUN_8f631758(s_This_partition_doesn_t_exist_8f669e8c);
}
else {
lVar16 = FUN_8f60793c();
iVar9 = (int)((ulonglong)lVar16 >> 0x20);
uVar6 = (uint)lVar16;
lVar17 = FUN_8f6078c4(iVar5);
iVar5 = (int)((ulonglong)lVar17 >> 0x20);
uVar7 = (uint)lVar17;
lVar1 = lVar16 + (ulonglong)(iVar9 >> 0x1f & 0x1ff);
iVar14 = (int)((ulonglong)lVar1 >> 0x20);
lVar2 = lVar17 + (ulonglong)(iVar5 >> 0x1f & 0x1ff);
iVar15 = (int)((ulonglong)lVar2 >> 0x20);
FUN_8f63cbb4(s_Partition_Name__s_Size__lld_Star_8f669eac,uVar4,
(uint)lVar2 >> 9 | iVar15 * 0x800000,iVar15 >> 9,
(uint)lVar1 >> 9 | iVar14 * 0x800000,iVar14 >> 9);
uVar4 = FUN_8f63e150(0x40,0x10000);
if ((int)(iVar5 - (uint)(uVar7 < 0x10000)) < 0 ==
(SBORROW4(iVar5,(uint)(uVar7 < 0x10000)) != false)) {
uVar11 = uVar7 - 0x10000;
uVar12 = iVar5 - (uint)(uVar7 < 0x10000);
uVar10 = uVar11 >> 0x10 | uVar12 * 0x10000;
lVar1 = lVar16 + (CONCAT44(uVar12,uVar11) & 0xffffffffffff0000) + 0x10000;
do {
uVar3 = (ulonglong)lVar16 >> 0x20;
uVar13 = (undefined4)lVar16;
lVar17 = lVar16 + 0x10000;
lVar16 = lVar16 + 0x10000;
FUN_8f60f940(uVar13,(int)uVar3,uVar4,0x10000);
FUN_8f631afc(uVar4,0x10000);
} while ((int)((ulonglong)lVar17 >> 0x20) != (int)((ulonglong)lVar1 >> 0x20) ||
(int)lVar17 != (int)lVar1);
uVar8 = uVar6 + 0x10000;
lVar16 = CONCAT44(uVar12 + iVar9 + (uint)(0xfffeffff < uVar6) +
(uint)CARRY4(uVar11 & 0xffff0000,uVar8),(uVar11 & 0xffff0000) + uVar8);
uVar6 = (uVar11 >> 0x10) * -0x10000;
lVar17 = CONCAT44((iVar5 - (uint)(uVar7 < 0x10000)) +
(((uVar12 >> 0x10) + (uint)(uVar10 != 0)) * -0x10000 | -uVar10 >> 0x10) +
(uint)CARRY4(uVar7 - 0x10000,uVar6),(uVar7 - 0x10000) + uVar6);
}
local_bc = (undefined4)((ulonglong)lVar16 >> 0x20);
local_c0 = (undefined4)lVar16;
if (lVar17 != 0) {
FUN_8f60f940(local_c0,local_bc,uVar4,(int)lVar17);
FUN_8f631afc(uVar4,(int)lVar17);
}
FUN_8f63e200(uVar4);
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
}
if (local_2c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f629084(void)
{
longlong lVar1;
int iVar2;
int iVar3;
int iVar4;
uint uVar5;
undefined4 uVar6;
uint uVar7;
char *pcVar8;
int iVar9;
uint uVar10;
uint uVar11;
int iVar12;
uint uVar13;
undefined4 uVar14;
uint uVar15;
longlong lVar16;
longlong lVar17;
longlong lVar18;
ulonglong uVar19;
ulonglong uVar20;
undefined4 local_48;
undefined4 local_44;
iVar2 = DAT_8f731d80;
iVar3 = FUN_8f607810(s_modemst1_8f669edc);
if (iVar3 == -1) {
if (iVar2 == DAT_8f731d80) {
pcVar8 = s_This_partition_of_modemst1_doesn_8f669ee8;
LAB_8f629340:
FUN_8f631758(pcVar8);
return;
}
}
else {
iVar4 = FUN_8f607810(s_modemst2_8f669f14);
if (iVar4 == -1) {
if (iVar2 == DAT_8f731d80) {
pcVar8 = s_This_partition_of_modemst2_doesn_8f669f20;
goto LAB_8f629340;
}
}
else {
lVar16 = FUN_8f60793c(iVar3);
iVar9 = (int)((ulonglong)lVar16 >> 0x20);
uVar5 = (uint)lVar16;
lVar17 = FUN_8f6078c4(iVar3);
lVar18 = FUN_8f6078c4(iVar4);
lVar17 = lVar17 + lVar18;
uVar11 = (uint)lVar17;
iVar12 = (int)((ulonglong)lVar17 >> 0x20);
uVar19 = FUN_8f6078c4(iVar3);
uVar20 = FUN_8f60793c(iVar3);
uVar10 = (uint)(uVar20 >> 0x20);
FUN_8f63cbb4(s_Partition_Name_modemst1_Size__ll_8f669f4c,uVar10,(int)(uVar19 >> 9),
(uint)(uVar19 >> 0x29),(int)(uVar20 >> 9),uVar10 >> 9);
uVar19 = FUN_8f6078c4(iVar4);
uVar20 = FUN_8f60793c(iVar4);
uVar10 = (uint)(uVar20 >> 0x20);
FUN_8f63cbb4(s_Partition_Name_modemst2_Size__ll_8f669f84,uVar10,(int)(uVar19 >> 9),
(uint)(uVar19 >> 0x29),(int)(uVar20 >> 9),uVar10 >> 9);
lVar1 = lVar17 + (ulonglong)(iVar12 >> 0x1f & 0x1ff);
iVar4 = (int)((ulonglong)lVar1 >> 0x20);
lVar18 = lVar16 + (ulonglong)(iVar9 >> 0x1f & 0x1ff);
iVar3 = (int)((ulonglong)lVar18 >> 0x20);
uVar10 = (uint)lVar18 >> 9 | iVar3 * 0x800000;
FUN_8f63cbb4(s_Total_of_modemst_Size__lld_Start_8f669fbc,uVar10,
(uint)lVar1 >> 9 | iVar4 * 0x800000,iVar4 >> 9,uVar10,iVar3 >> 9);
uVar6 = FUN_8f63e150(0x40,0x10000);
if ((int)(iVar12 - (uint)(uVar11 < 0x10000)) < 0 ==
(SBORROW4(iVar12,(uint)(uVar11 < 0x10000)) != false)) {
uVar10 = uVar11 - 0x10000;
uVar13 = iVar12 - (uint)(uVar11 < 0x10000);
uVar15 = uVar10 >> 0x10 | uVar13 * 0x10000;
lVar18 = lVar16 + (CONCAT44(uVar13,uVar10) & 0xffffffffffff0000) + 0x10000;
do {
uVar19 = (ulonglong)lVar16 >> 0x20;
uVar14 = (undefined4)lVar16;
lVar17 = lVar16 + 0x10000;
lVar16 = lVar16 + 0x10000;
FUN_8f60f940(uVar14,(int)uVar19,uVar6,0x10000);
FUN_8f631afc(uVar6,0x10000);
} while ((int)((ulonglong)lVar17 >> 0x20) != (int)((ulonglong)lVar18 >> 0x20) ||
(int)lVar17 != (int)lVar18);
uVar7 = uVar5 + 0x10000;
lVar16 = CONCAT44(uVar13 + iVar9 + (uint)(0xfffeffff < uVar5) +
(uint)CARRY4(uVar10 & 0xffff0000,uVar7),(uVar10 & 0xffff0000) + uVar7);
uVar5 = (uVar10 >> 0x10) * -0x10000;
lVar17 = CONCAT44((((uVar13 >> 0x10) + (uint)(uVar15 != 0)) * -0x10000 | -uVar15 >> 0x10) +
(iVar12 - (uint)(uVar11 < 0x10000)) + (uint)CARRY4(uVar5,uVar11 - 0x10000)
,uVar5 + (uVar11 - 0x10000));
}
local_44 = (undefined4)((ulonglong)lVar16 >> 0x20);
local_48 = (undefined4)lVar16;
if (lVar17 != 0) {
FUN_8f60f940(local_48,local_44,uVar6,(int)lVar17);
FUN_8f631afc(uVar6,(int)lVar17);
}
FUN_8f63e200(uVar6);
if (iVar2 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f629368(undefined4 param_1)
{
byte bVar1;
ulonglong uVar2;
byte *pbVar3;
byte *pbVar4;
undefined4 uVar5;
uint uVar6;
uint uVar7;
uint uVar8;
uint uVar9;
int iVar10;
uint uVar11;
int iVar12;
bool bVar13;
uint local_b8;
undefined uStack_ac;
undefined auStack_ab [127];
int local_2c;
local_2c = DAT_8f731d80;
FUN_8f63e758(&uStack_ac,param_1);
FUN_8f63ee2c(auStack_ab,s_ERROR___s__Out_of_SMP_s__cnt__d__8f668f7c + 0x20);
pbVar3 = (byte *)FUN_8f63e7a0();
FUN_8f63ee2c(0,s_ERROR___s__Out_of_SMP_s__cnt__d__8f668f7c + 0x20);
pbVar4 = (byte *)FUN_8f63e7a0();
if ((*pbVar3 - 0x30 & 0xff) < 10) {
uVar8 = 0;
iVar10 = 0;
uVar11 = (uint)*pbVar3;
do {
uVar2 = (ulonglong)uVar8;
uVar6 = (uint)(uVar2 * 10);
pbVar3 = pbVar3 + 1;
uVar9 = uVar6 + uVar11;
uVar8 = uVar9 - 0x30;
iVar10 = (iVar10 * 10 + (int)(uVar2 * 10 >> 0x20) + (uint)CARRY4(uVar6,uVar11)) -
(uint)(uVar9 < 0x30);
uVar11 = (uint)*pbVar3;
} while ((*pbVar3 - 0x30 & 0xff) < 10);
local_b8 = uVar8 & 0xfffff;
}
else {
uVar8 = 0;
iVar10 = 0;
local_b8 = 0;
}
uVar11 = 0;
iVar12 = 0;
bVar1 = *pbVar4;
while (uVar6 = (uint)bVar1, (uVar6 - 0x30 & 0xff) < 10) {
uVar2 = (ulonglong)uVar11;
uVar9 = (uint)(uVar2 * 10);
pbVar4 = pbVar4 + 1;
uVar7 = uVar9 + uVar6;
uVar11 = uVar7 - 0x30;
iVar12 = (iVar12 * 10 + (int)(uVar2 * 10 >> 0x20) + (uint)CARRY4(uVar9,uVar6)) -
(uint)(uVar7 < 0x30);
bVar1 = *pbVar4;
}
uVar5 = FUN_8f63e150(0x40,0x10000);
uVar6 = uVar11 - uVar8;
uVar9 = iVar12 - (iVar10 + (uint)(uVar11 < uVar8));
if ((local_b8 == 0) && (((uVar11 | uVar6) & 0xfffff) == 0)) {
uVar11 = uVar6 | uVar9;
while (uVar11 != 0) {
bVar13 = uVar6 < 0x10000;
uVar6 = uVar6 - 0x10000;
uVar9 = uVar9 - bVar13;
FUN_8f60f940(uVar8,iVar10,uVar5,0x10000);
bVar13 = 0xfffeffff < uVar8;
uVar8 = uVar8 + 0x10000;
iVar10 = iVar10 + (uint)bVar13;
FUN_8f631afc(uVar5,0x10000);
uVar11 = uVar6 | uVar9;
}
FUN_8f63e200(uVar5);
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
}
else {
FUN_8f631758(s_INVALID_COMMAND_8f669fec);
}
if (local_2c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f629564(int param_1)
{
ulonglong uVar1;
uint uVar2;
int iVar3;
uint uVar4;
uint uVar5;
undefined4 *puVar6;
uint uVar7;
undefined4 local_bc;
undefined4 local_b8;
undefined4 local_b4;
undefined4 local_b0;
undefined4 local_ac;
undefined4 local_a8;
undefined4 local_a4;
undefined4 local_a0;
undefined auStack_9c [128];
int local_1c;
local_1c = DAT_8f731d80;
FUN_8f63e410(auStack_9c,0,0x80);
local_bc = 0;
local_b8 = 0;
local_b4 = 0;
local_b0 = 0;
local_ac = 0;
local_a8 = 0;
local_a4 = 0;
local_a0 = 0;
FUN_8f63e758(&local_bc,param_1 + 1);
if (((local_bc & 0xff) - 0x30 & 0xff) < 10) {
puVar6 = &local_bc;
uVar2 = 0;
iVar3 = 0;
uVar7 = local_bc & 0xff;
do {
uVar1 = (ulonglong)uVar2;
uVar4 = (uint)(uVar1 * 10);
puVar6 = (undefined4 *)((int)puVar6 + 1);
uVar5 = uVar4 + uVar7;
uVar2 = uVar5 - 0x30;
iVar3 = (iVar3 * 10 + (int)(uVar1 * 10 >> 0x20) + (uint)CARRY4(uVar4,uVar7)) -
(uint)(uVar5 < 0x30);
uVar7 = (uint)*(byte *)puVar6;
} while ((*(byte *)puVar6 - 0x30 & 0xff) < 10);
FUN_8f63e0bc(auStack_9c,s_We_get_resize_size____lld_8f669ffc,uVar2,iVar3);
FUN_8f631570(auStack_9c);
if ((uVar2 & 0x1ff) != 0) {
FUN_8f631758(s_FAIL_Resize_invalid_8f66a018);
goto LAB_8f629678;
}
}
else {
uVar2 = 0;
FUN_8f63e0bc(auStack_9c,s_We_get_resize_size____lld_8f669ffc,0,0);
FUN_8f631570(auStack_9c);
iVar3 = 0;
}
iVar3 = FUN_8f6084c0(uVar2,iVar3);
if (iVar3 == 0) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
}
else {
FUN_8f631758(s_FAIL_Resize_fail_8f66a02c);
}
LAB_8f629678:
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6296e0(undefined4 param_1)
{
longlong lVar1;
longlong lVar2;
ulonglong uVar3;
undefined4 uVar4;
int iVar5;
uint uVar6;
uint uVar7;
uint uVar8;
uint uVar9;
int iVar10;
int iVar11;
uint uVar12;
uint uVar13;
undefined4 uVar14;
int iVar15;
int iVar16;
undefined4 uVar17;
longlong lVar18;
longlong lVar19;
undefined4 local_108;
undefined4 local_104;
undefined auStack_ec [64];
undefined auStack_ac [128];
int local_2c;
local_2c = DAT_8f731d80;
FUN_8f63e758(auStack_ac,param_1);
FUN_8f63ee2c(auStack_ac,s_ERROR___s__Out_of_SMP_s__cnt__d__8f668f7c + 0x20);
uVar4 = FUN_8f63e7a0();
FUN_8f63cbb4(s_partition_name__s_8f66a040,uVar4);
iVar5 = FUN_8f607810(uVar4);
if (iVar5 == -1) {
FUN_8f631758(s_This_partition_doesn_t_exist_8f669e8c);
}
else {
lVar18 = FUN_8f60793c();
iVar10 = (int)((ulonglong)lVar18 >> 0x20);
uVar6 = (uint)lVar18;
lVar19 = FUN_8f6078c4(iVar5);
iVar11 = (int)((ulonglong)lVar19 >> 0x20);
uVar7 = (uint)lVar19;
lVar1 = lVar18 + (ulonglong)(iVar10 >> 0x1f & 0x1ff);
iVar16 = (int)((ulonglong)lVar1 >> 0x20);
lVar2 = lVar19 + (ulonglong)(iVar11 >> 0x1f & 0x1ff);
iVar15 = (int)((ulonglong)lVar2 >> 0x20);
iVar5 = iVar16 >> 9;
FUN_8f63cbb4(s_Size__lld_Start_Sector__lld_8f66a054,iVar5,(uint)lVar2 >> 9 | iVar15 * 0x800000,
iVar15 >> 9,(uint)lVar1 >> 9 | iVar16 * 0x800000,iVar5);
uVar4 = FUN_8f63e150(0x40,0x10000);
if ((int)(iVar11 - (uint)(uVar7 < 0x10000)) < 0 ==
(SBORROW4(iVar11,(uint)(uVar7 < 0x10000)) != false)) {
uVar12 = uVar7 - 0x10000;
uVar13 = iVar11 - (uint)(uVar7 < 0x10000);
uVar17 = 0xffffffff;
uVar8 = uVar12 >> 0x10 | uVar13 * 0x10000;
lVar1 = lVar18 + (CONCAT44(uVar13,uVar12) & 0xffffffffffff0000) + 0x10000;
do {
uVar3 = (ulonglong)lVar18 >> 0x20;
uVar14 = (undefined4)lVar18;
lVar19 = lVar18 + 0x10000;
lVar18 = lVar18 + 0x10000;
FUN_8f60f940(uVar14,(int)uVar3,uVar4,0x10000);
uVar17 = FUN_8f609fe8(uVar17,uVar4,0x10000);
} while ((int)((ulonglong)lVar19 >> 0x20) != (int)((ulonglong)lVar1 >> 0x20) ||
(int)lVar19 != (int)lVar1);
uVar9 = uVar6 + 0x10000;
lVar18 = CONCAT44(uVar13 + iVar10 + (uint)(0xfffeffff < uVar6) +
(uint)CARRY4(uVar12 & 0xffff0000,uVar9),(uVar12 & 0xffff0000) + uVar9);
uVar6 = (uVar12 >> 0x10) * -0x10000;
lVar19 = CONCAT44((iVar11 - (uint)(uVar7 < 0x10000)) +
(((uVar13 >> 0x10) + (uint)(uVar8 != 0)) * -0x10000 | -uVar8 >> 0x10) +
(uint)CARRY4(uVar7 - 0x10000,uVar6),(uVar7 - 0x10000) + uVar6);
}
else {
uVar17 = 0xffffffff;
}
local_104 = (undefined4)((ulonglong)lVar18 >> 0x20);
local_108 = (undefined4)lVar18;
if (lVar19 != 0) {
FUN_8f60f940(local_108,local_104,uVar4,(int)lVar19);
uVar17 = FUN_8f609fe8(uVar17,uVar4,(int)lVar19);
}
FUN_8f63e200(uVar4);
FUN_8f63cbb4(s_CRC____08X_8f66a074,uVar17);
FUN_8f63e068(auStack_ec,0x40,&DAT_8f66a084,uVar17);
FUN_8f631570(auStack_ec);
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
}
if (local_2c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62995c(void)
{
int iVar1;
int iVar2;
undefined auStack_54 [64];
int local_14;
local_14 = DAT_8f731d80;
FUN_8f63e068(auStack_54,0x40,s_index_name_size_type_LBA_start_L_8f66a08c);
FUN_8f631570(auStack_54);
iVar2 = 0;
while( true ) {
iVar1 = FUN_8f607a00(iVar2,auStack_54,0x40);
if (iVar1 != 0) break;
FUN_8f631570(auStack_54);
iVar2 = iVar2 + 1;
}
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6299e8(int param_1)
{
undefined4 uVar1;
int iVar2;
undefined4 local_a4;
undefined4 local_a0;
undefined4 local_9c;
undefined4 local_98;
undefined auStack_94 [128];
int local_14;
local_14 = DAT_8f731d80;
FUN_8f63e410(auStack_94,0,0x80);
local_a4 = 0;
local_a0 = 0;
local_9c = 0;
local_98 = 0;
FUN_8f63cbb4(s_flash_all_start_____8f66a0b4);
DAT_8f72d204 = 1;
DAT_8f72d200 = 1;
FUN_8f63e758(&local_a4,param_1 + 1);
FUN_8f63e0bc(auStack_94,s_We_get_fastboot_version__s_8f66a0cc,&local_a4);
FUN_8f631570(auStack_94);
uVar1 = FUN_8f63e9a0(&DAT_8f66a0e8);
iVar2 = FUN_8f63e524(&local_a4,&DAT_8f66a0e8,uVar1);
if (iVar2 < 1) {
FUN_8f631570(s_Please_use_fastboot_which_versio_8f66a0ec);
FUN_8f631758(s_INVALID_FASTBOOT_8f66a124);
}
else {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
}
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f629ae4(void)
{
int iVar1;
undefined4 uVar2;
char *pcVar3;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f60128c(s_proj_id_8f661aac);
switch(uVar2) {
case 0:
pcVar3 = s_FAIL_Invalid_project_for_device_Z_8f66baec + 0x20;
break;
case 1:
pcVar3 = s_FAIL_Invalid_project_for_device_Z_8f66bb54 + 0x20;
break;
case 2:
pcVar3 = s_FAIL_Invalid_project_for_device_Z_8f66bbb8 + 0x20;
break;
case 3:
pcVar3 = s_FAIL_Invalid_project_for_device_Z_8f66bc1c + 0x20;
break;
case 0xbad1abe1:
if (iVar1 == DAT_8f731d80) {
pcVar3 = s_Unknown_device_8f66a15c;
LAB_8f629b98:
FUN_8f631758(pcVar3);
return;
}
goto LAB_8f629bbc;
default:
if (iVar1 == DAT_8f731d80) {
pcVar3 = s_FAIL_to_get_pcb_id_value_by_name_8f66a138;
goto LAB_8f629b98;
}
goto LAB_8f629bbc;
}
FUN_8f631570(pcVar3);
if (iVar1 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
LAB_8f629bbc:
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f629bc0(void)
{
int iVar1;
undefined4 uVar2;
char *pcVar3;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f60128c(s_proj_id_8f661aac);
switch(uVar2) {
case 0:
pcVar3 = &DAT_8f66a16c;
break;
case 1:
pcVar3 = &DAT_8f66a174;
break;
case 2:
pcVar3 = &DAT_8f66a17c;
break;
case 3:
pcVar3 = s_ASUS_P00I_8f66a184;
break;
case 0xbad1abe1:
if (iVar1 == DAT_8f731d80) {
pcVar3 = s_Unknown_device_8f66a15c;
LAB_8f629c74:
FUN_8f631758(pcVar3);
return;
}
goto LAB_8f629c98;
default:
if (iVar1 == DAT_8f731d80) {
pcVar3 = s_FAIL_to_get_pcb_id_value_by_name_8f66a138;
goto LAB_8f629c74;
}
goto LAB_8f629c98;
}
FUN_8f631570(pcVar3);
if (iVar1 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
LAB_8f629c98:
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f629c9c(void)
{
int iVar1;
int iVar2;
undefined *puVar3;
char *pcVar4;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f60128c(s_proj_id_8f661aac);
if (iVar2 == -1) {
if (iVar1 == DAT_8f731d80) {
pcVar4 = s_FAIL_to_get_pcb_id_value_by_name_8f66a138;
LAB_8f629d20:
FUN_8f631758(pcVar4);
return;
}
}
else {
if (iVar2 == 0) {
puVar3 = &DAT_8f66a190;
}
else {
if (iVar2 != 1) {
if (iVar1 == DAT_8f731d80) {
pcVar4 = s_Unknown_device_8f66a15c;
goto LAB_8f629d20;
}
goto LAB_8f629d50;
}
puVar3 = &DAT_8f66a194;
}
FUN_8f631570(puVar3);
if (iVar1 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
}
LAB_8f629d50:
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f629db8(undefined4 param_1,int *param_2)
{
undefined4 uVar1;
int iVar2;
char *pcVar3;
longlong lVar4;
undefined auStack_11c [128];
undefined auStack_9c [128];
int local_1c;
local_1c = DAT_8f731d80;
uVar1 = FUN_8f607810(s_config_8f66a1d4);
lVar4 = FUN_8f60793c();
if (lVar4 == 0) {
FUN_8f631758(s__s__partition_table_doesn_t_exis_8f66cbec + 4);
}
else {
uVar1 = FUN_8f6078c4(uVar1);
iVar2 = FUN_8f60f940((int)lVar4,(int)((ulonglong)lVar4 >> 0x20),param_2,uVar1);
if (iVar2 == 0) {
if (param_2[8] == 0x73189019) {
if (*param_2 == -0x26375693) {
pcVar3 = s_Enable_8f66a1cc;
if (param_2[7] == -0x1aa9ab58) {
pcVar3 = s_Disable_8f66a1c4;
}
}
else {
pcVar3 = s_Enable_8f66a1cc;
}
FUN_8f63e758(auStack_9c,pcVar3);
}
else {
FUN_8f63e758(auStack_9c,s_Disable_8f66a1c4);
}
if ((DAT_8f72d234 != 0) && (iVar2 = FUN_8f63e6f4(auStack_9c,s_Enable_8f66a1cc), iVar2 == 0)) {
FUN_8f63e758(auStack_9c,s_Triggered_8f66a204);
}
FUN_8f63e068(auStack_11c,0x80,s__Display_panel___s_8f669dec + 0x10,auStack_9c);
FUN_8f631570(auStack_11c);
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
}
else {
FUN_8f631758(s_ERROR__Cannot_read__config__part_8f66a1dc);
}
}
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Type propagation algorithm not settling
void FUN_8f629f40(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
DAT_8f72c1dc = 0;
if (DAT_8f72d240 == 0) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
if (iVar1 == DAT_8f731d80) {
FUN_8f600804(0);
return;
}
}
else {
FUN_8f631570(s_Due_to_partition_table_has_been_c_8f66a210);
FUN_8f631570(s_Format_following_partitions_are_n_8f66a238);
if ((DAT_8f72d240 & 1) != 0) {
FUN_8f631570(s_userdata_8f663458);
}
if ((DAT_8f72d240 & 2) != 0) {
FUN_8f631570(s_cache_8f663464);
}
if ((DAT_8f72d240 & 4) != 0) {
FUN_8f631570(&DAT_8f66346c);
}
if ((DAT_8f72d240 & 8) != 0) {
FUN_8f631570(&DAT_8f663470);
}
if ((DAT_8f72d240 & 0x10) != 0) {
FUN_8f631570(s_system_8f663474);
}
if ((DAT_8f72d240 & 0x20) != 0) {
FUN_8f631570(s_persist_8f66347c);
}
FUN_8f631570(s_Reboot_fail_8f66a264);
if (iVar1 == DAT_8f731d80) {
FUN_8f631758(s_Reboot_fail_8f66a264);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62a0b4(byte *param_1)
{
byte bVar1;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
int iVar6;
char *pcVar7;
int iVar8;
int iVar9;
int iVar10;
int iVar11;
undefined4 uVar12;
byte *pbVar13;
byte *pbVar14;
byte *pbVar15;
byte *pbVar16;
byte *pbVar17;
undefined4 in_lr;
int local_78;
byte *local_6c;
int local_60;
undefined auStack_5c [15];
byte bStack_4d;
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_40;
undefined4 local_3c;
undefined4 local_38;
undefined4 local_34;
undefined4 local_30;
int local_2c;
local_2c = DAT_8f731d80;
iVar2 = FUN_8f607ae0();
local_60 = 0;
iVar3 = FUN_8f6116d8();
FUN_8f63428c(&local_60);
pbVar17 = param_1;
local_6c = param_1;
if ((param_1 != (byte *)0x0) &&
(pbVar17 = (byte *)(uint)*param_1, local_6c = pbVar17, pbVar17 != (byte *)0x0)) {
local_6c = (byte *)0x1;
pbVar17 = (byte *)FUN_8f63e9a0(param_1);
}
iVar4 = FUN_8f625e60();
if (iVar4 != 0) {
iVar4 = FUN_8f63e9a0(s__androidboot_emmc_true_8f66a27c);
pbVar17 = pbVar17 + iVar4;
}
iVar4 = FUN_8f63e9a0(s__androidboot_serialno__8f66a294);
iVar5 = FUN_8f63e9a0(&DAT_8f7327dc);
iVar6 = FUN_8f63e9a0(&DAT_8f73265c);
pbVar17 = pbVar17 + iVar5 + iVar4 + iVar6;
if (DAT_8f72d224 != 0) {
iVar4 = FUN_8f63e9a0(s__lk_factory_adbon_1_8f66a2ac);
pbVar17 = pbVar17 + iVar4;
}
if (DAT_8f72e4c0 != 0) {
iVar4 = FUN_8f63e9a0(s__lk_CTS_Auto_adbon_1_8f66a2c0);
pbVar17 = pbVar17 + iVar4;
}
if (DAT_8f72d230 != 0) {
iVar4 = FUN_8f63e9a0(s__lk_factory_safemode_1_8f66a2d8);
pbVar17 = pbVar17 + iVar4;
}
if (DAT_8f72c1d8 == 0) {
pcVar7 = s__lk_ro_factory_secboot_0_8f66a30c;
}
else {
pcVar7 = s__lk_ro_factory_secboot_1_8f66a2f0;
}
iVar4 = FUN_8f63e9a0(pcVar7);
local_4c = 0;
local_48 = 0;
local_44 = 0;
local_40 = 0;
local_3c = 0;
local_38 = 0;
local_34 = 0;
local_30 = 0;
FUN_8f600528(auStack_5c);
FUN_8f63e0bc(&local_4c,s__lk_ro_emmc_id__s_8f66a328,auStack_5c);
iVar5 = FUN_8f63e9a0(&local_4c);
iVar6 = FUN_8f63e9a0(s__androidboot_verifiedbootstate__8f66a33c);
iVar8 = FUN_8f63e9a0((&PTR_s_green_8f71c5c8)[iVar3 * 2]);
iVar9 = FUN_8f63e9a0(s__androidboot_veritymode__8f66a35c);
iVar10 = FUN_8f63e9a0(*(undefined4 *)(DAT_8f718d8c * 8 + -0x708e3958));
iVar11 = FUN_8f63e9a0(s__androidboot_keymaster_1_8f66a378);
pbVar17 = pbVar17 + iVar6 + iVar5 + iVar8 + iVar9 + iVar10 + iVar11 + iVar4;
if ((DAT_8f72f5f4 != 0) && (iVar2 != 0)) {
iVar4 = FUN_8f63e9a0(&DAT_8f66a394);
pbVar17 = pbVar17 + iVar4;
}
if (local_60 != 0) {
iVar4 = FUN_8f63e9a0(&DAT_8f66a39c);
pbVar17 = pbVar17 + iVar4;
}
if (DAT_8f72d49c == 0) {
if (DAT_8f72d228 != 0) {
iVar4 = FUN_8f63e9a0(s__androidboot_alarmboot_true_8f66a3c0);
pbVar17 = pbVar17 + iVar4;
}
}
else {
iVar4 = FUN_8f63e9a0(s__androidboot_mode__8f66a3a4);
iVar5 = FUN_8f63e9a0(&DAT_8f72d208);
iVar6 = FUN_8f63e9a0(&DAT_8f66a3b8);
pbVar17 = pbVar17 + iVar6 + iVar4 + iVar5;
}
iVar4 = FUN_8f625ed0();
if ((iVar4 != 0) && (DAT_8f72d494 != 0)) {
iVar4 = FUN_8f63e9a0(s__androidboot_authorized_kernel_t_8f66a3dc);
pbVar17 = pbVar17 + iVar4;
}
pcVar7 = s_system_8f663474;
if (DAT_8f72f5f4 != 0) {
pcVar7 = s_recoveryfs_8f66a270;
}
iVar4 = FUN_8f625d10(param_1,pcVar7,&DAT_8f72d350,0x40);
if (iVar4 == 0) {
iVar5 = FUN_8f63e9a0(&DAT_8f72d350);
pbVar17 = pbVar17 + iVar5;
}
uVar12 = FUN_8f6006bc();
switch(uVar12) {
case 0:
iVar5 = FUN_8f63e9a0(s__androidboot_baseband_msm_8f66a41c);
pbVar17 = pbVar17 + iVar5;
break;
case 1:
iVar5 = FUN_8f63e9a0(s__androidboot_baseband_apq_8f66a400);
pbVar17 = pbVar17 + iVar5;
break;
case 2:
iVar5 = FUN_8f63e9a0(s__androidboot_baseband_csfb_8f66a438);
pbVar17 = pbVar17 + iVar5;
break;
case 4:
iVar5 = FUN_8f63e9a0(s__androidboot_baseband_svlte2a_8f66a454);
pbVar17 = pbVar17 + iVar5;
break;
case 5:
iVar5 = FUN_8f63e9a0(s__androidboot_baseband_mdm_8f66a474);
pbVar17 = pbVar17 + iVar5;
break;
case 6:
iVar5 = FUN_8f63e9a0(s__androidboot_baseband_sglte_8f66a4ac);
pbVar17 = pbVar17 + iVar5;
break;
case 7:
iVar5 = FUN_8f63e9a0(s__androidboot_baseband_dsda_8f66a4e8);
pbVar17 = pbVar17 + iVar5;
break;
case 8:
iVar5 = FUN_8f63e9a0(s__androidboot_baseband_dsda2_8f66a504);
pbVar17 = pbVar17 + iVar5;
break;
case 9:
iVar5 = FUN_8f63e9a0(s__androidboot_baseband_sglte2_8f66a4c8);
pbVar17 = pbVar17 + iVar5;
break;
case 10:
iVar5 = FUN_8f63e9a0(s__androidboot_baseband_mdm2_8f66a490);
pbVar17 = pbVar17 + iVar5;
}
if ((((param_1 != (byte *)0x0) && (iVar5 = FUN_8f63eccc(param_1,s_mdss_mdp_8f66a520), iVar5 == 0))
&& (iVar5 = FUN_8f6021f0(&DAT_8f73289c,0x80), iVar5 != 0)) &&
(iVar5 = FUN_8f63e9a0(&DAT_8f73289c), iVar5 != 0)) {
pbVar17 = pbVar17 + iVar5;
}
local_78 = FUN_8f625fb4();
if (local_78 != 0) {
iVar5 = FUN_8f63e9a0(s__qpnp_power_on_warm_boot_1_8f66a52c);
local_78 = 1;
pbVar17 = pbVar17 + iVar5;
}
if ((int)pbVar17 < 1) {
pbVar17 = (byte *)0x0;
goto LAB_8f62a990;
}
pbVar17 = (byte *)FUN_8f63e114((uint)(pbVar17 + 4) & 0xfffffffc);
if (pbVar17 == (byte *)0x0) {
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,s_app_aboot_aboot_c_8f669cdc,0x269,
s_cmdline_final____NULL_8f66a548);
}
FUN_8f63e410(pbVar17,0);
pbVar13 = pbVar17;
if (local_6c == (byte *)0x0) {
iVar5 = FUN_8f625e60();
pbVar13 = PTR_DAT_8f62ac18;
pbVar15 = pbVar17;
if (iVar5 != 0) {
pbVar15 = pbVar17 + 1;
pbVar13 = PTR_DAT_8f62ac14;
goto LAB_8f62a510;
}
}
else {
do {
bVar1 = *param_1;
pbVar15 = pbVar13 + 1;
*pbVar13 = bVar1;
pbVar13 = pbVar15;
param_1 = param_1 + 1;
} while (bVar1 != 0);
iVar5 = FUN_8f625e60();
pbVar13 = PTR_DAT_8f62ac14;
if (iVar5 != 0) {
LAB_8f62a510:
while( true ) {
bVar1 = pbVar13[1];
pbVar15[-1] = bVar1;
if (bVar1 == 0) break;
pbVar15 = pbVar15 + 1;
pbVar13 = pbVar13 + 1;
}
}
pbVar13 = PTR_DAT_8f62ac18;
pbVar15 = pbVar15 + -1;
}
do {
pbVar16 = pbVar15;
pbVar13 = pbVar13 + 1;
bVar1 = *pbVar13;
*pbVar16 = bVar1;
pbVar15 = pbVar16 + 1;
} while (bVar1 != 0);
pbVar13 = (&PTR_s_green_8f71c5c8)[iVar3 * 2];
while( true ) {
bVar1 = *pbVar13;
pbVar15[-1] = bVar1;
pbVar14 = DAT_8f62ac1c;
if (bVar1 == 0) break;
pbVar13 = pbVar13 + 1;
pbVar16 = pbVar15;
pbVar15 = pbVar15 + 1;
}
while( true ) {
bVar1 = pbVar14[1];
pbVar15[-1] = bVar1;
if (bVar1 == 0) break;
pbVar14 = pbVar14 + 1;
pbVar16 = pbVar15;
pbVar15 = pbVar15 + 1;
}
pbVar13 = *(byte **)(DAT_8f718d8c * 8 + -0x708e3958);
while( true ) {
bVar1 = *pbVar13;
pbVar15[-1] = bVar1;
pbVar14 = PTR_s__8f62ac20;
if (bVar1 == 0) break;
pbVar13 = pbVar13 + 1;
pbVar16 = pbVar15;
pbVar15 = pbVar15 + 1;
}
while( true ) {
bVar1 = pbVar14[1];
pbVar15[-1] = bVar1;
pbVar13 = PTR_s__8f62ac24;
if (bVar1 == 0) break;
pbVar14 = pbVar14 + 1;
pbVar16 = pbVar15;
pbVar15 = pbVar15 + 1;
}
while( true ) {
bVar1 = pbVar13[1];
pbVar15[-1] = bVar1;
pbVar14 = PTR_DAT_8f62ac28;
if (bVar1 == 0) break;
pbVar13 = pbVar13 + 1;
pbVar16 = pbVar15;
pbVar15 = pbVar15 + 1;
}
while( true ) {
bVar1 = pbVar14[1];
pbVar15[-1] = bVar1;
pbVar13 = DAT_8f62ac2c;
if (bVar1 == 0) break;
pbVar14 = pbVar14 + 1;
pbVar16 = pbVar15;
pbVar15 = pbVar15 + 1;
}
while( true ) {
bVar1 = pbVar13[1];
pbVar15[-1] = bVar1;
if (bVar1 == 0) break;
pbVar16 = pbVar15;
pbVar15 = pbVar15 + 1;
pbVar13 = pbVar13 + 1;
}
pbVar13 = PTR_s__8f62ac30;
if (DAT_8f72d224 != 0) {
do {
bVar1 = pbVar13[1];
pbVar15 = pbVar16 + 1;
*pbVar16 = bVar1;
pbVar13 = pbVar13 + 1;
pbVar16 = pbVar15;
} while (bVar1 != 0);
}
if (DAT_8f72e4c0 != 0) {
pbVar13 = pbVar15 + -1;
pbVar16 = DAT_8f62ac34;
do {
pbVar16 = pbVar16 + 1;
bVar1 = *pbVar16;
pbVar15 = pbVar13 + 1;
*pbVar13 = bVar1;
pbVar13 = pbVar15;
} while (bVar1 != 0);
}
if (DAT_8f72d230 != 0) {
pbVar13 = pbVar15 + -1;
pbVar16 = PTR_s__8f62ac38;
do {
pbVar16 = pbVar16 + 1;
bVar1 = *pbVar16;
pbVar15 = pbVar13 + 1;
*pbVar13 = bVar1;
pbVar13 = pbVar15;
} while (bVar1 != 0);
}
if (DAT_8f72c1d8 == 0) {
pbVar13 = PTR_s__8f62ac8c;
pbVar15 = pbVar15 + -1;
do {
pbVar13 = pbVar13 + 1;
bVar1 = *pbVar13;
pbVar16 = pbVar15 + 1;
*pbVar15 = bVar1;
pbVar15 = pbVar16;
} while (bVar1 != 0);
iVar3 = FUN_8f632988(0xd);
if (iVar3 != 0) goto LAB_8f62ab88;
LAB_8f62a6e4:
iVar3 = FUN_8f632988(0x13);
}
else {
pbVar13 = PTR_s__8f62ac3c;
pbVar15 = pbVar15 + -1;
do {
pbVar13 = pbVar13 + 1;
bVar1 = *pbVar13;
pbVar16 = pbVar15 + 1;
*pbVar15 = bVar1;
pbVar15 = pbVar16;
} while (bVar1 != 0);
iVar3 = FUN_8f632988(0xd);
if (iVar3 == 0) goto LAB_8f62a6e4;
LAB_8f62ab88:
FUN_8f63286c(0,0xd);
iVar3 = FUN_8f632988(0x13);
}
if (iVar3 != 0) {
FUN_8f63286c(0,0x13);
}
pbVar15 = &bStack_4d;
pbVar13 = pbVar16 + -1;
do {
pbVar16 = pbVar13;
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
pbVar13 = pbVar16 + 1;
*pbVar16 = bVar1;
} while (bVar1 != 0);
pbVar15 = PTR_DAT_8f62ac40;
if (local_78 != 0) {
do {
bVar1 = pbVar15[1];
pbVar13 = pbVar16 + 1;
*pbVar16 = bVar1;
pbVar15 = pbVar15 + 1;
pbVar16 = pbVar13;
} while (bVar1 != 0);
}
if ((DAT_8f72f5f4 != 0) && (iVar2 != 0)) {
pbVar15 = PTR_s__8f62ac44;
pbVar16 = pbVar13 + -1;
do {
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
pbVar13 = pbVar16 + 1;
*pbVar16 = bVar1;
pbVar16 = pbVar13;
} while (bVar1 != 0);
}
if (local_60 != 0) {
pbVar15 = PTR_DAT_8f62ac48;
pbVar16 = pbVar13 + -1;
do {
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
pbVar13 = pbVar16 + 1;
*pbVar16 = bVar1;
pbVar16 = pbVar13;
} while (bVar1 != 0);
}
if (DAT_8f72d49c == 0) {
if (DAT_8f72d228 != 0) {
pbVar15 = PTR_DAT_8f62ac90;
pbVar16 = pbVar13 + -1;
do {
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
pbVar13 = pbVar16 + 1;
*pbVar16 = bVar1;
pbVar16 = pbVar13;
} while (bVar1 != 0);
}
}
else {
pbVar15 = PTR_DAT_8f62ac4c;
pbVar13 = pbVar13 + -1;
do {
pbVar14 = pbVar13;
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
*pbVar14 = bVar1;
pbVar16 = PTR_DAT_8f72d204_3_8f62ac50;
pbVar13 = pbVar14 + 1;
} while (bVar1 != 0);
do {
bVar1 = pbVar16[1];
pbVar13 = pbVar14 + 1;
*pbVar14 = bVar1;
pbVar15 = PTR_s__8f62ac54;
pbVar16 = pbVar16 + 1;
pbVar14 = pbVar13;
} while (bVar1 != 0);
while( true ) {
bVar1 = pbVar15[1];
pbVar13[-1] = bVar1;
if (bVar1 == 0) break;
pbVar13 = pbVar13 + 1;
pbVar15 = pbVar15 + 1;
}
}
iVar2 = FUN_8f625ed0();
if ((iVar2 != 0) && (DAT_8f72d494 != 0)) {
pbVar15 = PTR_s__8f62ac58;
pbVar16 = pbVar13 + -1;
do {
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
pbVar13 = pbVar16 + 1;
*pbVar16 = bVar1;
pbVar16 = pbVar13;
} while (bVar1 != 0);
}
uVar12 = FUN_8f6006bc();
switch(uVar12) {
case 0:
pbVar15 = PTR_s__8f62ac84;
pbVar16 = pbVar13 + -1;
do {
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
pbVar13 = pbVar16 + 1;
*pbVar16 = bVar1;
pbVar16 = pbVar13;
} while (bVar1 != 0);
break;
case 1:
pbVar15 = DAT_8f62ac80;
pbVar16 = pbVar13 + -1;
do {
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
pbVar13 = pbVar16 + 1;
*pbVar16 = bVar1;
pbVar16 = pbVar13;
} while (bVar1 != 0);
break;
case 2:
pbVar15 = PTR_s__8f62ac7c;
pbVar16 = pbVar13 + -1;
do {
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
pbVar13 = pbVar16 + 1;
*pbVar16 = bVar1;
pbVar16 = pbVar13;
} while (bVar1 != 0);
break;
case 4:
pbVar15 = PTR_s__8f62ac78;
pbVar16 = pbVar13 + -1;
do {
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
pbVar13 = pbVar16 + 1;
*pbVar16 = bVar1;
pbVar16 = pbVar13;
} while (bVar1 != 0);
break;
case 5:
pbVar15 = PTR_s__8f62ac74;
pbVar16 = pbVar13 + -1;
do {
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
pbVar13 = pbVar16 + 1;
*pbVar16 = bVar1;
pbVar16 = pbVar13;
} while (bVar1 != 0);
break;
case 6:
pbVar15 = PTR_s__8f62ac70;
pbVar16 = pbVar13 + -1;
do {
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
pbVar13 = pbVar16 + 1;
*pbVar16 = bVar1;
pbVar16 = pbVar13;
} while (bVar1 != 0);
break;
case 7:
pbVar15 = PTR_s__8f62ac6c;
pbVar16 = pbVar13 + -1;
do {
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
pbVar13 = pbVar16 + 1;
*pbVar16 = bVar1;
pbVar16 = pbVar13;
} while (bVar1 != 0);
break;
case 8:
pbVar15 = PTR_s__8f62ac68;
pbVar16 = pbVar13 + -1;
do {
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
pbVar13 = pbVar16 + 1;
*pbVar16 = bVar1;
pbVar16 = pbVar13;
} while (bVar1 != 0);
break;
case 9:
pbVar15 = DAT_8f62ac88;
pbVar16 = pbVar13 + -1;
do {
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
pbVar13 = pbVar16 + 1;
*pbVar16 = bVar1;
pbVar16 = pbVar13;
} while (bVar1 != 0);
break;
case 10:
pbVar15 = PTR_s__8f62ac5c;
pbVar16 = pbVar13 + -1;
do {
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
pbVar13 = pbVar16 + 1;
*pbVar16 = bVar1;
pbVar16 = pbVar13;
} while (bVar1 != 0);
}
iVar2 = FUN_8f63e9a0(&DAT_8f73289c);
if (iVar2 != 0) {
pbVar15 = PTR_DAT_8f62ac60;
pbVar16 = pbVar13 + -1;
do {
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
pbVar13 = pbVar16 + 1;
*pbVar16 = bVar1;
pbVar16 = pbVar13;
} while (bVar1 != 0);
}
if (iVar4 == 0) {
pbVar15 = PTR_DAT_8f62ac64;
pbVar13 = pbVar13 + -1;
do {
pbVar15 = pbVar15 + 1;
bVar1 = *pbVar15;
*pbVar13 = bVar1;
pbVar13 = pbVar13 + 1;
} while (bVar1 != 0);
}
LAB_8f62a990:
if (local_2c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(pbVar17);
}
void FUN_8f62ac94(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
undefined4 param_5,undefined4 param_6)
{
int iVar1;
code *pcVar2;
undefined4 uVar3;
undefined4 uVar4;
undefined4 uVar5;
int iVar6;
undefined4 in_lr;
iVar1 = DAT_8f731d80;
pcVar2 = (code *)FUN_8f603a60();
uVar3 = FUN_8f603a60(param_2);
uVar4 = FUN_8f603a60(param_5);
uVar5 = FUN_8f62a0b4(param_3);
iVar6 = FUN_8f61d540(param_2,uVar5,uVar4,param_6);
if (iVar6 != 0) {
FUN_8f63cbb4(s_ERROR__Updating_Device_Tree_Fail_8f66a584);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,s_app_aboot_aboot_c_8f669cdc,0x3d1,
s_card_size_sec___0_8f663308 + 0x10);
}
FUN_8f63e200(uVar5);
if (DAT_8f718d8c == 0) {
FUN_8f612ee4(8);
FUN_8f6125e0();
}
FUN_8f6009b4();
if ((DAT_8f72d214 == 0) && (DAT_8f72d498 == 0)) {
FUN_8f6363fc();
FUN_8f613cc4(100);
}
FUN_8f60232c();
DAT_8f718ca8 = DAT_8f718ca8 + 1;
if (DAT_8f718ca8 == 1) {
FUN_8f62552c();
}
FUN_8f603870();
FUN_8f6252ac(3);
FUN_8f625c8c();
FUN_8f609bb8(1);
if (*(int *)(param_1 + 0x38) == 0x644d5241) {
if (iVar1 == DAT_8f731d80) {
FUN_8f619b88(param_1,uVar3);
return;
}
}
else {
(*pcVar2)(0,param_4,uVar3);
if (iVar1 == DAT_8f731d80) {
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f62aed8)
void FUN_8f62ae5c(void)
{
return;
}
void FUN_8f62aedc(void)
{
int iVar1;
int iVar2;
char *pcVar3;
iVar1 = DAT_8f731d80;
if (DAT_8f718cbc == 0) {
FUN_8f6111e0();
iVar2 = FUN_8f610a78();
if (iVar2 == 2) {
FUN_8f611718();
if (iVar1 == DAT_8f731d80) {
pcVar3 = s_Keystore_verification_failed__Co_8f66a5dc;
goto LAB_8f62af54;
}
}
else if (iVar1 == DAT_8f731d80) {
return;
}
}
else {
FUN_8f6111e0(1);
FUN_8f611718();
if (iVar1 == DAT_8f731d80) {
pcVar3 = s_Device_is_unlocked__Skipping_ver_8f66a5ac;
LAB_8f62af54:
FUN_8f63cbb4(pcVar3);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f62af80(void)
{
int iVar1;
int iVar2;
undefined4 uVar3;
uint uVar4;
code *pcVar5;
uint uVar6;
undefined4 uVar7;
undefined4 uVar8;
undefined4 uVar9;
code *pcVar10;
char *pcVar11;
uint uVar12;
char *pcVar13;
undefined4 in_lr;
bool bVar14;
longlong lVar15;
code *local_f0;
undefined4 uStack_ec;
int local_d8;
undefined4 local_d4;
undefined local_d0;
undefined local_cf;
uint local_cc;
code *local_c8;
uint local_c4;
undefined4 local_c0;
undefined4 local_bc;
undefined4 local_b8;
undefined4 local_b4;
undefined4 local_b0;
undefined auStack_ac [128];
int local_2c;
local_d8 = 0;
local_2c = DAT_8f731d80;
local_d4 = 0;
FUN_8f63e410(auStack_ac,0,0x80);
local_bc = 0;
local_b8 = 0;
local_b4 = 0;
local_b0 = 0;
iVar1 = FUN_8f628360();
iVar2 = DAT_8f72f5f4;
if (iVar1 == 0) {
if (DAT_8f72f5f4 != 0) goto LAB_8f62b044;
FUN_8f63e410(&DAT_8f72d208,0);
iVar1 = FUN_8f632520(&DAT_8f72d208,8);
if (iVar1 < 1) {
DAT_8f72d49c = iVar2;
if (iVar1 != 0) {
FUN_8f63cbb4(s_failed_to_get_ffbm_cookie_8f66a61c);
}
}
else {
DAT_8f72d49c = 1;
}
}
else {
DAT_8f72f5f4 = 1;
LAB_8f62b044:
DAT_8f72d49c = 0;
}
iVar2 = FUN_8f63e524(s_dual_dsi_8f6ff000,s_ANDROID__8f66a638,8);
if (iVar2 == 0) {
pcVar13 = s_dual_dsi_8f6ff000;
LAB_8f62b3d8:
FUN_8f63e0bc(&local_bc,s_0x_08x_8f66a7c8,_DAT_000a4128);
FUN_8f63cbb4(s_CPU_ID____s_8f66a7d0,&local_bc);
uVar3 = FUN_8f60135c();
uVar7 = FUN_8f60128c(s_proj_id_8f661aac);
uVar8 = FUN_8f60128c(s_hw_id_8f661aa4);
if ((DAT_8f72d214 == 0) && (DAT_8f72d498 == 0)) {
pcVar11 = s_associatedDomain_8f70a788 + 0xc;
if (DAT_8f72f5f4 != 0) {
pcVar11 = s_recovery_8f663020;
}
}
else {
pcVar11 = s_charger_8f66a614;
}
uVar9 = FUN_8f633168();
FUN_8f63e0bc(auStack_ac,s__pcb_id__d_proj_id__d_hw_id__d___8f66a7e0,uVar3,uVar7,uVar8,
s__androidboot_mode__8f66a3a4,pcVar11,&local_bc,uVar9);
FUN_8f63e608(pcVar13 + 0x40,auStack_ac);
uVar7 = *(undefined4 *)(pcVar13 + 0xc);
uVar8 = *(undefined4 *)(pcVar13 + 0x20);
uVar3 = FUN_8f6005a0();
FUN_8f62ac94(uVar7,uVar8,pcVar13 + 0x40,uVar3,*(undefined4 *)(pcVar13 + 0x14),
*(undefined4 *)(pcVar13 + 0x10));
uVar3 = 0;
}
else {
if (DAT_8f72f5f4 == 0) {
uVar3 = FUN_8f607810(s_fastboot_8f66c5d8 + 4);
lVar15 = FUN_8f60793c();
if (lVar15 == 0) {
FUN_8f63cbb4(s_ERROR__No_boot_partition_found_8f66a644);
uVar3 = 0xffffffff;
goto LAB_8f62b3a8;
}
}
else {
uVar3 = FUN_8f607810(s_recovery_8f663020);
lVar15 = FUN_8f60793c();
if (lVar15 == 0) {
FUN_8f63cbb4(s_ERROR__No_recovery_partition_fou_8f66a664);
uVar3 = 0xffffffff;
goto LAB_8f62b3a8;
}
}
uStack_ec = (undefined4)((ulonglong)lVar15 >> 0x20);
local_f0 = (code *)lVar15;
FUN_8f6079b4(uVar3);
FUN_8f60ff88();
iVar2 = FUN_8f60f940(local_f0,uStack_ec,&DAT_8f72c200,DAT_8f72d220);
if (iVar2 != 0) {
FUN_8f63cbb4(s_ERROR__Cannot_read_boot_image_he_8f66a688);
uVar3 = 0xffffffff;
goto LAB_8f62b3a8;
}
iVar2 = FUN_8f63e524(&DAT_8f72c200,s_ANDROID__8f66a638,8);
if (iVar2 != 0) {
FUN_8f63cbb4(s_ERROR__Invalid_boot_image_header_8f66a6b0);
uVar3 = 0xffffffff;
goto LAB_8f62b3a8;
}
if ((DAT_8f72c224 != 0) && (DAT_8f72c224 != DAT_8f72d220)) {
if (0x1000 < DAT_8f72c224) {
FUN_8f63cbb4(s_ERROR__Invalid_page_size_8f66a6d4);
uVar3 = 0xffffffff;
goto LAB_8f62b3a8;
}
DAT_8f72d2cc = DAT_8f72c224 - 1;
DAT_8f72d220 = DAT_8f72c224;
}
DAT_8f72c43f = 0;
uVar12 = ~DAT_8f72d2cc & DAT_8f72d2cc + DAT_8f72c208;
uVar4 = DAT_8f72d2cc + DAT_8f72c210 & ~DAT_8f72d2cc;
pcVar5 = (code *)FUN_8f601550();
uVar6 = uVar4 + uVar12 + DAT_8f72d220;
bVar14 = (char)(CARRY4(uVar4,uVar12) + CARRY4(uVar4 + uVar12,DAT_8f72d220)) != '\0';
if ((bVar14 || 0xfffffffe < uVar6) && (bVar14 || uVar6 != 0xffffffff)) {
FUN_8f63cbb4(s_Integer_overflow_detected_in_boo_8f6663b8,0x560,s_app_aboot_aboot_c_8f669cdc);
uVar3 = 0xffffffff;
goto LAB_8f62b3a8;
}
uVar6 = uVar12 + uVar4 + DAT_8f72d220;
FUN_8f62aedc();
if (~(uint)pcVar5 < uVar6) {
LAB_8f62b398:
FUN_8f63cbb4(s_Boot_image_buffer_address_overla_8f66a830);
uVar3 = 0xffffffff;
goto LAB_8f62b3a8;
}
if (pcVar5 < thunk_FUN_8f600020) {
if (thunk_FUN_8f600020 < pcVar5 + uVar6) goto LAB_8f62b398;
}
else if (pcVar5 < (code *)0x8fa00000) goto LAB_8f62b398;
FUN_8f609bb8(4);
iVar2 = FUN_8f60f940(local_f0,uStack_ec,pcVar5,uVar6);
if (iVar2 != 0) {
FUN_8f63cbb4(s_ERROR__Cannot_read_boot_image_8f66a6f0);
uVar3 = 0xffffffff;
goto LAB_8f62b3a8;
}
FUN_8f609bb8(5);
iVar2 = FUN_8f625ed0();
if ((iVar2 == 0) || (DAT_8f718cbc != 0)) {
iVar2 = DAT_8f72f5f4;
if (DAT_8f72f5f4 != 0) {
iVar2 = 1;
}
local_cc = DAT_8f72d220;
local_d0 = (undefined)iVar2;
local_cf = 0;
local_c0 = 0;
local_c8 = pcVar5;
local_c4 = uVar6;
FUN_8f633400(&local_d0);
}
else {
pcVar10 = pcVar5 + uVar6;
if (~(uint)pcVar10 < DAT_8f72d220) {
LAB_8f62b510:
FUN_8f63cbb4(s_Signature_read_buffer_address_ov_8f66a86c);
uVar3 = 0xffffffff;
goto LAB_8f62b3a8;
}
if (pcVar10 < thunk_FUN_8f600020) {
if (thunk_FUN_8f600020 < pcVar10 + DAT_8f72d220) goto LAB_8f62b510;
}
else if (pcVar10 < (code *)0x8fa00000) goto LAB_8f62b510;
iVar2 = FUN_8f60f940((int)(lVar15 + (ulonglong)uVar6),(int)(lVar15 + (ulonglong)uVar6 >> 0x20)
);
if (iVar2 != 0) {
FUN_8f63cbb4(s_ERROR__Cannot_read_boot_image_si_8f66a710);
uVar3 = 0xffffffff;
goto LAB_8f62b3a8;
}
FUN_8f6284c8(pcVar5,uVar6);
}
iVar2 = FUN_8f6116d8();
if (iVar2 == 1) {
FUN_8f612ee4();
FUN_8f6125e0();
}
iVar2 = FUN_8f610abc(DAT_8f718cbc);
if (iVar2 == 0) {
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,s_app_aboot_aboot_c_8f669cdc,0x5d0,
s_card_size_sec___0_8f663308 + 0x10);
}
iVar2 = FUN_8f6601d0(pcVar5 + DAT_8f72d220,DAT_8f72c208);
if (iVar2 == 0) {
local_f0 = pcVar5 + DAT_8f72d220;
iVar2 = DAT_8f72c208;
}
else {
local_f0 = pcVar5 + uVar6 + DAT_8f72d220;
iVar2 = FUN_8f60158c();
iVar1 = FUN_8f660068(pcVar5 + DAT_8f72d220,DAT_8f72c208,local_f0,
(iVar2 - uVar6) - DAT_8f72d220,&local_d4,&local_d8);
iVar2 = local_d8;
if (iVar1 != 0) {
FUN_8f63cbb4(s_decompressing_kernel_image_faile_8f66a73c);
FUN_8f63cce8(in_lr,s_ASSERT_FAILED_at___s__d____s_8f6617e4,s_app_aboot_aboot_c_8f669cdc,
0x5e2,s_card_size_sec___0_8f663308 + 0x10);
iVar2 = local_d8;
}
}
FUN_8f6285ec(&DAT_8f72c200,*(int *)(local_f0 + 0x38) == 0x644d5241);
DAT_8f72c20c = FUN_8f603a94(DAT_8f72c20c);
DAT_8f72c214 = FUN_8f603a94(DAT_8f72c214);
DAT_8f72c220 = FUN_8f603a94(DAT_8f72c220);
uVar6 = iVar2 + DAT_8f72d2cc & ~DAT_8f72d2cc;
if (uVar6 <= ~DAT_8f72c20c) {
if (DAT_8f72c20c < 0x8f600000) {
if (uVar6 + DAT_8f72c20c < 0x8f600001) {
LAB_8f62b580:
if (uVar4 <= ~DAT_8f72c214) {
if (DAT_8f72c214 < 0x8f600000) {
if (uVar4 + DAT_8f72c214 < 0x8f600001) {
LAB_8f62b5bc:
FUN_8f63e304(DAT_8f72c20c,local_f0);
FUN_8f63e304(DAT_8f72c214,pcVar5 + uVar12 + DAT_8f72d220,DAT_8f72c210);
if (~DAT_8f72c220 < uVar12) {
LAB_8f62b684:
FUN_8f63cbb4(s_Device_tree_addresses_overlap_wi_8f66a8ac);
uVar3 = 0xffffffff;
goto LAB_8f62b3a8;
}
if (DAT_8f72c220 < 0x8f600000) {
if (thunk_FUN_8f600020 < (code *)(uVar12 + DAT_8f72c220)) goto LAB_8f62b684;
}
else if (DAT_8f72c220 < 0x8fa00000) goto LAB_8f62b684;
iVar2 = FUN_8f61c530(pcVar5 + DAT_8f72d220,DAT_8f72c208,local_d4);
if (iVar2 == 0) {
FUN_8f63cbb4(s_ERROR__Appended_Device_Tree_Blob_8f66a79c);
uVar3 = 0xffffffff;
goto LAB_8f62b3a8;
}
if (((DAT_8f72f5f4 == 0) || (DAT_8f718cbc != 0)) || (DAT_8f718cc0 != 0)) {
pcVar13 = &DAT_8f72c200;
}
else {
FUN_8f600ca0();
pcVar13 = &DAT_8f72c200;
}
goto LAB_8f62b3d8;
}
}
else if (0x8f9fffff < DAT_8f72c214) goto LAB_8f62b5bc;
}
}
}
else if (0x8f9fffff < DAT_8f72c20c) goto LAB_8f62b580;
}
FUN_8f63cbb4(s_kernel_ramdisk_addresses_overlap_8f66a764);
uVar3 = 0xffffffff;
}
LAB_8f62b3a8:
if (local_2c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
return;
}
void FUN_8f62b848(void)
{
int iVar1;
char *pcVar2;
undefined4 uVar3;
uint uVar4;
uint uVar5;
int iVar6;
longlong lVar7;
longlong lVar8;
iVar1 = DAT_8f731d80;
if (DAT_8f71c5c0 == 0) {
pcVar2 = s_aboot_8f662ff8;
}
else {
pcVar2 = s_devinfo_8f66a8e4;
}
uVar3 = FUN_8f607810(pcVar2);
lVar7 = FUN_8f60793c();
if (lVar7 != 0) {
FUN_8f6079b4(uVar3);
FUN_8f60ff88();
lVar8 = FUN_8f6078c4(uVar3);
uVar4 = FUN_8f60f6b0();
if (DAT_8f71c5c0 == 0) {
uVar5 = (uint)(lVar8 + lVar7);
iVar6 = FUN_8f60f704(uVar5 - uVar4,
(int)((ulonglong)(lVar8 + lVar7) >> 0x20) - (uint)(uVar5 < uVar4),uVar4,
DAT_8f73299c);
}
else {
iVar6 = FUN_8f60f704((int)lVar7,(int)((ulonglong)lVar7 >> 0x20),uVar4,DAT_8f73299c);
}
if (iVar6 != 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f63cbb4(s_ERROR__Cannot_write_device_info_8f66a8ec);
return;
}
goto LAB_8f62b94c;
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
LAB_8f62b94c:
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62b950(void)
{
int iVar1;
int iVar2;
uint uVar3;
uint uVar4;
longlong lVar5;
longlong lVar6;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f607810(s_devinfo_8f66a8e4);
if (iVar2 < 0) {
DAT_8f71c5c0 = 0;
iVar2 = FUN_8f607810(s_aboot_8f662ff8);
}
lVar5 = FUN_8f60793c(iVar2);
if (lVar5 != 0) {
FUN_8f6079b4(iVar2);
FUN_8f60ff88();
lVar6 = FUN_8f6078c4(iVar2);
uVar3 = FUN_8f60f6b0();
if (DAT_8f71c5c0 == 0) {
uVar4 = (uint)(lVar6 + lVar5);
iVar2 = FUN_8f60f940(uVar4 - uVar3,
(int)((ulonglong)(lVar6 + lVar5) >> 0x20) - (uint)(uVar4 < uVar3),
DAT_8f73299c,uVar3);
}
else {
iVar2 = FUN_8f60f940((int)lVar5,(int)((ulonglong)lVar5 >> 0x20),DAT_8f73299c,uVar3);
}
if (iVar2 != 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f63cbb4(s_ERROR__Cannot_read_device_info_8f66a910);
return;
}
goto LAB_8f62ba70;
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
LAB_8f62ba70:
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62ba74(undefined4 param_1)
{
int iVar1;
int iVar2;
int iVar3;
char *pcVar4;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f63e150(0x1000,0x1000);
if (iVar2 == 0) {
FUN_8f63cbb4(s_Failed_to_allocate_memory_for_de_8f66a930);
FUN_8f63cce8();
}
DAT_8f73299c = iVar2;
iVar3 = FUN_8f617cc4();
if (iVar3 == 0) {
if (iVar1 == DAT_8f731d80) {
pcVar4 = s_ERROR__Partition_table_not_found_8f66a964;
LAB_8f62bb38:
FUN_8f63cbb4(pcVar4);
return;
}
}
else {
iVar3 = FUN_8f640ccc(iVar3,s_devinfo_8f66a8e4);
if (iVar3 == 0) {
if (iVar1 == DAT_8f731d80) {
pcVar4 = s_ERROR__No_devinfo_partition_foun_8f66a988;
goto LAB_8f62bb38;
}
}
else {
FUN_8f63e304(iVar2,param_1,0xe4);
iVar3 = FUN_8f617fe8(iVar3,0,DAT_8f73299c,DAT_8f72d220);
if (iVar3 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f63e200(iVar2);
return;
}
}
else if (iVar1 == DAT_8f731d80) {
pcVar4 = s_ERROR__Cannot_write_device_info_8f66a8ec;
goto LAB_8f62bb38;
}
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62bbb4(void)
{
uint uVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
int iVar5;
int iVar6;
uint uVar7;
uint uVar8;
undefined4 uVar9;
undefined4 uVar10;
uint uVar11;
char *pcVar12;
uint uVar13;
bool bVar14;
iVar2 = DAT_8f731d80;
iVar3 = FUN_8f625e60();
if (iVar3 != 0) {
iVar3 = FUN_8f63e524(s_dual_dsi_8f6ff000,s_ANDROID__8f66a638,8);
if (iVar3 != 0) {
LAB_8f62bfd4:
FUN_8f63cbb4(s_ERROR__Invalid_boot_image_header_8f66a6b0);
uVar4 = 0xffffffff;
goto LAB_8f62bc38;
}
pcVar12 = s_dual_dsi_8f6ff000;
goto LAB_8f62bc04;
}
iVar3 = FUN_8f617cc4();
if (iVar3 == 0) {
FUN_8f63cbb4(s_ERROR__Partition_table_not_found_8f66a964);
uVar4 = 0xffffffff;
goto LAB_8f62bc38;
}
if (DAT_8f72f5f4 == 0) {
iVar3 = FUN_8f640ccc(iVar3,s_fastboot_8f66c5d8 + 4);
if (iVar3 == 0) {
FUN_8f63cbb4(s_ERROR__No_boot_partition_found_8f66a644);
uVar4 = 0xffffffff;
goto LAB_8f62bc38;
}
}
else {
iVar3 = FUN_8f640ccc(iVar3,s_recovery_8f663020);
if (iVar3 == 0) {
FUN_8f63cbb4(s_ERROR__No_recovery_partition_fou_8f66a664);
uVar4 = 0xffffffff;
goto LAB_8f62bc38;
}
}
iVar5 = FUN_8f617d04(iVar3,0,0,&DAT_8f72c200,DAT_8f72d220);
if (iVar5 != 0) {
FUN_8f63cbb4(s_ERROR__Cannot_read_boot_image_he_8f66a688);
uVar4 = 0xffffffff;
goto LAB_8f62bc38;
}
iVar5 = FUN_8f63e524(&DAT_8f72c200,s_ANDROID__8f66a638,8);
if (iVar5 != 0) goto LAB_8f62bfd4;
if (DAT_8f72c224 != DAT_8f72d220) {
FUN_8f63cbb4(s_ERROR__Invalid_boot_image_pagesi_8f66a9ac);
uVar4 = 0xffffffff;
goto LAB_8f62bc38;
}
DAT_8f72c43f = 0;
FUN_8f6285ec(&DAT_8f72c200,0);
DAT_8f72c20c = FUN_8f603a94(DAT_8f72c20c);
DAT_8f72c214 = FUN_8f603a94(DAT_8f72c214);
DAT_8f72c220 = FUN_8f603a94(DAT_8f72c220);
uVar11 = ~DAT_8f72d2cc & DAT_8f72d2cc + DAT_8f72c208;
if (uVar11 <= ~DAT_8f72c20c) {
if (DAT_8f72c20c < 0x8f600000) {
if (uVar11 + DAT_8f72c20c < 0x8f600001) {
LAB_8f62bda8:
uVar8 = DAT_8f72c210 + DAT_8f72d2cc & ~DAT_8f72d2cc;
if (uVar8 <= ~DAT_8f72c214) {
if (DAT_8f72c214 < 0x8f600000) {
if (uVar8 + DAT_8f72c214 < 0x8f600001) {
LAB_8f62bdec:
iVar6 = FUN_8f625ed0();
uVar1 = DAT_8f72d2cc;
uVar7 = DAT_8f72d220;
iVar5 = DAT_8f72c218;
if ((iVar6 == 0) || (DAT_8f718cbc != 0)) {
pcVar12 = &DAT_8f72c200;
uVar11 = ~DAT_8f72d2cc;
uVar8 = uVar11 & DAT_8f72d2cc + DAT_8f72c208;
uVar13 = DAT_8f72d2cc + DAT_8f72c210 & uVar11;
FUN_8f609bb8(4);
if (~uVar7 < uVar8) {
FUN_8f63cbb4(s_ERROR__Integer_overflow_in_boot_i_8f66aaa0,
s_boot_linux_from_flash_8f669cb8,0x75e);
uVar4 = 0xffffffff;
goto LAB_8f62bc38;
}
iVar6 = FUN_8f617d04(iVar3,0,uVar7,DAT_8f72c20c,uVar8);
if (iVar6 != 0) {
FUN_8f63cbb4(s_ERROR__Cannot_read_kernel_image_8f66aad4);
uVar4 = 0xffffffff;
goto LAB_8f62bc38;
}
uVar8 = uVar8 + uVar7;
if (~uVar8 < uVar13) {
FUN_8f63cbb4(s_ERROR__Integer_overflow_in_boot_i_8f66aaa0,
s_boot_linux_from_flash_8f669cb8,0x768);
uVar4 = 0xffffffff;
goto LAB_8f62bc38;
}
iVar3 = FUN_8f617d04(iVar3,0,uVar8,DAT_8f72c214,uVar13);
if (iVar3 != 0) {
FUN_8f63cbb4(s_ERROR__Cannot_read_ramdisk_image_8f66aaf8);
uVar4 = 0xffffffff;
goto LAB_8f62bc38;
}
FUN_8f609bb8(5);
if (DAT_8f72c218 == 0) {
LAB_8f62bf08:
pcVar12 = &DAT_8f72c200;
}
else {
if (~(uVar8 + uVar13) < (iVar5 + uVar1 & uVar11)) {
FUN_8f63cbb4(s_ERROR__Integer_overflow_in_boot_i_8f66aaa0,
s_boot_linux_from_flash_8f669cb8,0x779);
uVar4 = 0xffffffff;
goto LAB_8f62bc38;
}
FUN_8f63cce8();
}
}
else {
iVar5 = FUN_8f601550();
uVar7 = uVar8 + uVar11 + DAT_8f72d220;
bVar14 = (char)(CARRY4(uVar8,uVar11) + CARRY4(uVar8 + uVar11,DAT_8f72d220)) != '\0';
if ((bVar14 || 0xfffffffe < uVar7) && (bVar14 || uVar7 != 0xffffffff)) {
FUN_8f63cbb4(s_Integer_overflow_detected_in_boo_8f66a9fc);
uVar4 = 0xffffffff;
goto LAB_8f62bc38;
}
pcVar12 = &DAT_8f72c200;
uVar8 = uVar11 + uVar8 + DAT_8f72d220;
if (DAT_8f72c220 + 0x70a00000U < 0x400000) {
FUN_8f63cbb4(s_Device_tree_addresses_overlap_wi_8f66a8ac);
uVar4 = 0xffffffff;
goto LAB_8f62bc38;
}
FUN_8f609bb8(4);
if (~DAT_8f72d220 < uVar8) {
FUN_8f63cbb4(s_Integer_overflow_detected_in_boo_8f66aa34,0x70b,
s_boot_linux_from_flash_8f669cb8);
uVar4 = 0xffffffff;
goto LAB_8f62bc38;
}
uVar7 = FUN_8f60158c();
if (uVar7 < uVar8 + DAT_8f72d220) {
FUN_8f63cbb4(s_bootimage_size_is_greater_than_D_8f66aa70);
uVar4 = 0xffffffff;
goto LAB_8f62bc38;
}
iVar6 = FUN_8f617d04(iVar3,0,0,iVar5,uVar8);
if (iVar6 != 0) {
FUN_8f63cbb4(s_ERROR__Cannot_read_boot_image_8f66a6f0);
uVar4 = 0xffffffff;
goto LAB_8f62bc38;
}
FUN_8f609bb8(5);
iVar3 = FUN_8f617d04(iVar3,0,uVar8,iVar5 + uVar8,DAT_8f72d220);
if (iVar3 != 0) {
FUN_8f63cbb4(s_ERROR__Cannot_read_boot_image_si_8f66a710);
uVar4 = 0xffffffff;
goto LAB_8f62bc38;
}
FUN_8f6284c8(iVar5,uVar8);
FUN_8f63e304(DAT_8f72c20c,iVar5 + DAT_8f72d220,DAT_8f72c208);
FUN_8f63e304(DAT_8f72c214,iVar5 + uVar11 + DAT_8f72d220,DAT_8f72c210);
if (DAT_8f718cc0 == 0) goto LAB_8f62bf08;
FUN_8f62ba74(s_ANDROID_BOOT__8f718cac);
}
LAB_8f62bc04:
uVar10 = *(undefined4 *)(pcVar12 + 0xc);
uVar9 = *(undefined4 *)(pcVar12 + 0x20);
uVar4 = FUN_8f6005a0();
FUN_8f62ac94(uVar10,uVar9,pcVar12 + 0x40,uVar4,*(undefined4 *)(pcVar12 + 0x14),
*(undefined4 *)(pcVar12 + 0x10));
uVar4 = 0;
goto LAB_8f62bc38;
}
}
else if (0x8f9fffff < DAT_8f72c214) goto LAB_8f62bdec;
}
}
}
else if (0x8f9fffff < DAT_8f72c20c) goto LAB_8f62bda8;
}
FUN_8f63cbb4(s_kernel_ramdisk_addresses_overlap_8f66a764);
uVar4 = 0xffffffff;
LAB_8f62bc38:
if (iVar2 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar4);
}
return;
}
void FUN_8f62c1fc(void)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
DAT_8f72f5f4 = 0;
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
FUN_8f631ab8();
FUN_8f63e410(&DAT_8f73289c,0,0x80);
DAT_8f72c194 = 0;
FUN_8f63633c();
iVar2 = FUN_8f625e60();
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f62bbb4();
return;
}
}
else {
FUN_8f612618();
if (iVar1 == DAT_8f731d80) {
FUN_8f62af80();
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62c2a4(undefined4 param_1)
{
int iVar1;
int iVar2;
int iVar3;
char *pcVar4;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f63e150(0x1000,0x1000);
if (iVar2 == 0) {
FUN_8f63cbb4(s_Failed_to_allocate_memory_for_de_8f66a930);
FUN_8f63cce8();
}
DAT_8f73299c = iVar2;
iVar3 = FUN_8f617cc4();
if (iVar3 == 0) {
if (iVar1 == DAT_8f731d80) {
pcVar4 = s_ERROR__Partition_table_not_found_8f66a964;
LAB_8f62c3b8:
FUN_8f63cbb4(pcVar4);
return;
}
}
else {
iVar3 = FUN_8f640ccc(iVar3,s_devinfo_8f66a8e4);
if (iVar3 == 0) {
if (iVar1 == DAT_8f731d80) {
pcVar4 = s_ERROR__No_devinfo_partition_foun_8f66a988;
goto LAB_8f62c3b8;
}
}
else {
iVar3 = FUN_8f617d04(iVar3,0,0,DAT_8f73299c,DAT_8f72d220);
if (iVar3 == 0) {
iVar3 = FUN_8f63e524(iVar2,s_ANDROID_BOOT__8f66ab1c,0xd);
if (iVar3 != 0) {
FUN_8f63e304(iVar2,s_ANDROID_BOOT__8f66ab1c,0xd);
*(undefined4 *)(iVar2 + 0x10) = 0;
*(undefined4 *)(iVar2 + 0x14) = 0;
FUN_8f62ba74(iVar2);
}
FUN_8f63e304(param_1,iVar2,0xe4);
if (iVar1 == DAT_8f731d80) {
FUN_8f63e200(iVar2);
return;
}
}
else if (iVar1 == DAT_8f731d80) {
pcVar4 = s_ERROR__Cannot_write_device_info_8f66a8ec;
goto LAB_8f62c3b8;
}
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62c434(undefined4 param_1)
{
int iVar1;
int iVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f625e60();
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f62ba74(param_1);
return;
}
}
else {
iVar2 = FUN_8f63e150(0x1000,0x1000);
if (iVar2 == 0) {
FUN_8f63cbb4(s_Failed_to_allocate_memory_for_de_8f66a930);
FUN_8f63cce8();
}
DAT_8f73299c = iVar2;
FUN_8f63e304(iVar2,param_1,0xe4);
iVar3 = FUN_8f61a014();
if (iVar3 == 0) {
FUN_8f62b848();
}
else {
FUN_8f624af0(iVar2,0x1000);
}
if (iVar1 == DAT_8f731d80) {
FUN_8f63e200(iVar2);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62c52c(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
DAT_8f718cc8 = 1;
FUN_8f62c434(s_ANDROID_BOOT__8f718cac);
if (iVar1 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62c584(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
DAT_8f718cc8 = 0;
FUN_8f62c434(s_ANDROID_BOOT__8f718cac);
if (iVar1 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62c5dc(int param_1)
{
int iVar1;
int iVar2;
undefined auStack_18 [4];
int local_14;
local_14 = DAT_8f731d80;
iVar2 = DAT_8f718cc8;
if ((((param_1 != 0) &&
(iVar1 = FUN_8f63ed64(param_1,&DAT_8f66ab2c,auStack_18), iVar2 = DAT_8f718cc8, iVar1 != 0))
&& (iVar2 = FUN_8f63ea58(iVar1,s_card_size_sec___0_8f663308 + 0x10,1), iVar2 != 0)) &&
(iVar1 = FUN_8f63ea58(iVar1,s_GOST_R_34_10_2001_8f70c424 + 0x10,1), iVar2 = DAT_8f718cc8,
iVar1 == 0)) {
DAT_8f718cc8 = 1;
iVar2 = DAT_8f718cc8;
}
DAT_8f718cc8 = iVar2;
FUN_8f63e068(&DAT_8f73295c,0x40,&DAT_8f66ab34,DAT_8f718cc8);
FUN_8f62c434(s_ANDROID_BOOT__8f718cac);
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
if (local_14 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f62c6cc(int param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
if (param_1 != 0) {
FUN_8f63e8d8(PTR_DAT_8f62c72c,param_1,0x40);
}
FUN_8f62c434(s_ANDROID_BOOT__8f718cac);
if (iVar1 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62c730(undefined4 param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f63e6f4(param_1,s_Command_must_be_0_or_1_8f66ab38 + 0x14);
if (iVar2 == 0) {
DAT_8f718d8c = 1;
iVar2 = DAT_8f718d8c;
}
else {
iVar2 = FUN_8f63e6f4(param_1,s_n____0_8f700868 + 4);
if (iVar2 != 0) {
FUN_8f631758(s_Command_must_be_0_or_1_8f66ab38);
iVar2 = DAT_8f718d8c;
}
}
DAT_8f718d8c = iVar2;
FUN_8f62c434(s_ANDROID_BOOT__8f718cac);
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
void FUN_8f62c7dc(undefined4 param_1)
{
int iVar1;
int iVar2;
int iVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f625e60();
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f62c2a4(param_1);
return;
}
}
else {
iVar2 = FUN_8f63e150(0x1000,0x1000);
if (iVar2 == 0) {
FUN_8f63cbb4(s_Failed_to_allocate_memory_for_de_8f66a930);
FUN_8f63cce8();
}
DAT_8f73299c = iVar2;
iVar3 = FUN_8f61a014();
if (iVar3 == 0) {
FUN_8f62b950();
}
else {
FUN_8f624a38(iVar2,0x1000);
}
iVar3 = FUN_8f63e524(iVar2,s_ANDROID_BOOT__8f66ab1c,0xd);
if (iVar3 != 0) {
FUN_8f63e304(iVar2,s_ANDROID_BOOT__8f66ab1c,0xd);
iVar3 = FUN_8f61a014();
*(undefined4 *)(iVar2 + 0xe0) = 1;
*(uint *)(iVar2 + 0x10) = (uint)(iVar3 == 0);
*(uint *)(iVar2 + 0x18) = (uint)(iVar3 == 0);
*(undefined4 *)(iVar2 + 0x14) = 0;
*(undefined4 *)(iVar2 + 0x1c) = 0;
FUN_8f62c434(iVar2);
}
FUN_8f63e304(param_1,iVar2,0xe4);
if (iVar1 == DAT_8f731d80) {
FUN_8f63e200(iVar2);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62c938(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f63cbb4(s_reset_device_info_called__8f66ab98);
DAT_8f718cc0 = 0;
if (iVar1 == DAT_8f731d80) {
FUN_8f62c434();
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62c98c(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f63cbb4(s_set_device_root_called__8f66abb4);
DAT_8f718cc0 = 1;
if (iVar1 == DAT_8f731d80) {
FUN_8f62c434();
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f62ca44)
void FUN_8f62c9e0(int param_1,undefined4 param_2)
{
undefined4 uVar1;
uVar1 = param_2;
if ((param_1 != 0) && (uVar1 = DAT_8f718cbc, param_1 == 1)) {
DAT_8f718cc4 = param_2;
}
DAT_8f718cbc = uVar1;
FUN_8f62c434(s_ANDROID_BOOT__8f718cac);
return;
}
// WARNING: Removing unreachable block (ram,0x8f62ca7c)
void FUN_8f62ca48(void)
{
return;
}
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f62ca80(undefined4 param_1,int param_2,uint param_3)
{
int iVar1;
uint uVar2;
undefined4 uVar3;
int iVar4;
uint uVar5;
uint uVar6;
int iVar7;
undefined4 uVar8;
undefined4 uVar9;
uint uVar10;
uint uVar11;
uint uVar12;
int local_48;
undefined4 local_44;
undefined local_40;
int local_2c;
local_48 = 0;
local_44 = 0;
local_2c = DAT_8f731d80;
iVar1 = FUN_8f62611c();
if ((iVar1 != 0) && (DAT_8f718cbc == 0)) {
FUN_8f631758(s_unlock_device_to_use_this_comman_8f66abcc);
goto LAB_8f62cae4;
}
if (param_3 < 4) {
FUN_8f631758(s_invalid_bootimage_header_8f66abf0);
goto LAB_8f62cae4;
}
*(undefined *)(param_2 + 0x23f) = 0;
iVar1 = FUN_8f625e60();
if ((iVar1 != 0) && (uVar6 = *(uint *)(param_2 + 0x24), uVar6 != 0)) {
DAT_8f72d2cc = uVar6 - 1;
DAT_8f72d220 = uVar6;
}
uVar11 = ~DAT_8f72d2cc & DAT_8f72d2cc + *(int *)(param_2 + 8);
uVar6 = DAT_8f72d2cc + *(int *)(param_2 + 0x10) & ~DAT_8f72d2cc;
if ((DAT_8f72d220 < ~uVar11) && (uVar11 + DAT_8f72d220 < ~uVar6)) {
uVar10 = uVar11 + DAT_8f72d220 + uVar6;
}
else {
uVar10 = 0xffffffff;
}
uVar2 = FUN_8f625ed0();
if (uVar2 != 0) {
if (DAT_8f718cbc == 0) {
uVar2 = FUN_8f610880(param_2 + uVar10,param_3);
if (uVar10 < ~uVar2) {
uVar10 = uVar10 + uVar2;
}
else {
uVar10 = 0xffffffff;
}
}
else {
uVar2 = 0;
}
}
if (param_3 < uVar10) {
FUN_8f631758(s_bootimage__incomplete_or_not_sig_8f66ac0c);
goto LAB_8f62cae4;
}
FUN_8f62aedc();
iVar1 = FUN_8f60158c();
if ((uVar2 - uVar10) + iVar1 < DAT_8f72d220) {
FUN_8f631758(s_booimage__size_is_greater_than_b_8f66ac30);
goto LAB_8f62cae4;
}
iVar1 = FUN_8f625ed0();
if ((iVar1 == 0) || (DAT_8f718cbc != 0)) {
if (DAT_8f72d218 == 0) {
local_40 = 2;
FUN_8f633400();
}
}
else {
FUN_8f62aedc();
FUN_8f6284c8(param_2,uVar10 - uVar2);
}
FUN_8f63428c(&DAT_8f72d218);
if (DAT_8f72d218 != 0) {
FUN_8f63cbb4(s_fastboot_boot_command_is_not_ava_8f66ac6c);
goto LAB_8f62cae4;
}
iVar1 = FUN_8f610abc(DAT_8f718cbc);
if (iVar1 == 0) {
FUN_8f63cce8();
}
iVar1 = FUN_8f6601d0(param_2 + DAT_8f72d220,*(undefined4 *)(param_2 + 8));
if (iVar1 == 0) {
iVar7 = param_2 + DAT_8f72d220;
iVar1 = *(int *)(param_2 + 8);
}
else {
iVar7 = FUN_8f601550();
iVar7 = iVar7 + uVar10 + DAT_8f72d220;
iVar1 = FUN_8f60158c();
iVar4 = FUN_8f660068(param_2 + DAT_8f72d220,*(undefined4 *)(param_2 + 8),iVar7,
(iVar1 - uVar10) - DAT_8f72d220,&local_44,&local_48);
iVar1 = local_48;
if (iVar4 != 0) {
FUN_8f63cbb4(s_decompressing_image_failed____8f66ac98);
FUN_8f63cce8();
iVar1 = local_48;
}
}
FUN_8f6285ec(param_2,*(int *)(iVar7 + 0x38) == 0x644d5241);
uVar3 = FUN_8f603a94(*(undefined4 *)(param_2 + 0xc));
*(undefined4 *)(param_2 + 0xc) = uVar3;
uVar3 = FUN_8f603a94(*(undefined4 *)(param_2 + 0x14));
*(undefined4 *)(param_2 + 0x14) = uVar3;
uVar3 = FUN_8f603a94(*(undefined4 *)(param_2 + 0x20));
uVar5 = *(uint *)(param_2 + 0xc);
uVar12 = iVar1 + DAT_8f72d2cc & ~DAT_8f72d2cc;
*(undefined4 *)(param_2 + 0x20) = uVar3;
uVar2 = DAT_8f72d220;
if (uVar12 <= ~uVar5) {
if (uVar5 < 0x8f600000) {
if (uVar12 + uVar5 < 0x8f600001) {
LAB_8f62cd80:
uVar5 = *(uint *)(param_2 + 0x14);
if (uVar6 <= ~uVar5) {
if (uVar5 < 0x8f600000) {
if (uVar6 + uVar5 < 0x8f600001) {
LAB_8f62cdbc:
iVar1 = FUN_8f62ca48(param_2,DAT_8f72d220 + local_48 + uVar10);
FUN_8f63e304(uVar5,param_2 + uVar11 + uVar2,*(undefined4 *)(param_2 + 0x10));
FUN_8f63e304(*(undefined4 *)(param_2 + 0xc),iVar7,uVar12);
uVar6 = *(uint *)(param_2 + 0x20);
if (~uVar6 < uVar11) {
LAB_8f62cf9c:
FUN_8f63cbb4(s_Tags_addresses_overlap_with_aboo_8f6684c4);
}
else {
if (uVar6 < 0x8f600000) {
if (thunk_FUN_8f600020 < (code *)(uVar11 + uVar6)) goto LAB_8f62cf9c;
}
else if (uVar6 < 0x8fa00000) goto LAB_8f62cf9c;
if ((iVar1 == 0) ||
(iVar1 = FUN_8f61c530(param_2 + DAT_8f72d220,*(undefined4 *)(param_2 + 8),
local_44), iVar1 != 0)) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
FUN_8f631ab8();
uVar9 = *(undefined4 *)(param_2 + 0xc);
uVar8 = *(undefined4 *)(param_2 + 0x20);
uVar3 = FUN_8f6005a0();
FUN_8f62ac94(uVar9,uVar8,param_2 + 0x40,uVar3,*(undefined4 *)(param_2 + 0x14),
*(undefined4 *)(param_2 + 0x10));
}
else {
FUN_8f631758(s_dtb_not_found_8f66acb8);
}
}
goto LAB_8f62cae4;
}
}
else if (0x8f9fffff < uVar5) goto LAB_8f62cdbc;
}
}
}
else if (0x8f9fffff < uVar5) goto LAB_8f62cd80;
}
FUN_8f63cbb4(s_kernel_ramdisk_addresses_overlap_8f66a764);
LAB_8f62cae4:
if (local_2c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62cff8(undefined4 param_1)
{
int iVar1;
int iVar2;
char *pcVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f617cc4();
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
pcVar3 = s__s__partition_table_doesn_t_exis_8f66cbec + 4;
LAB_8f62d070:
FUN_8f631758(pcVar3);
return;
}
}
else {
iVar2 = FUN_8f640ccc(iVar2,param_1);
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
pcVar3 = s_unknown_partition_name_8f66acc8;
goto LAB_8f62d070;
}
}
else {
iVar2 = FUN_8f617f38();
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
}
else if (iVar1 == DAT_8f731d80) {
pcVar3 = s_failed_to_erase_partition_8f66ace0;
goto LAB_8f62d070;
}
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_8f62d0b4(undefined4 param_1)
{
ulonglong uVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
undefined4 uVar5;
undefined4 uVar6;
char *pcVar7;
undefined4 uVar8;
uint uVar9;
bool bVar10;
undefined8 uVar11;
iVar2 = DAT_8f731d80;
iVar3 = FUN_8f63ea58(param_1,s_userdata_8f663458,8);
if (iVar3 == 0) {
FUN_8f6329f4(0,10);
FUN_8f6329f4(0,0x14);
}
iVar3 = FUN_8f63e6f4(param_1,s_keystore_8f717944);
if (((iVar3 == 0) && (DAT_8f72d21c == 0)) && (DAT_8f718cbc == 0)) {
if (iVar2 == DAT_8f731d80) {
pcVar7 = s_unlock_device_to_erase_keystore_8f66acfc;
LAB_8f62d280:
FUN_8f631758(pcVar7);
return;
}
}
else {
uVar4 = FUN_8f607810(param_1);
_DAT_8f72e5b0 = FUN_8f60793c();
uVar8 = (undefined4)((ulonglong)_DAT_8f72e5b0 >> 0x20);
uVar5 = (undefined4)_DAT_8f72e5b0;
_DAT_8f72e570 = FUN_8f6078c4(uVar4);
uVar1 = (ulonglong)_DAT_8f72e570 >> 0x20;
uVar6 = (undefined4)_DAT_8f72e570;
FUN_8f63e758(&DAT_8f72e584,param_1);
if (_DAT_8f72e5b0 == 0) {
if (iVar2 == DAT_8f731d80) {
pcVar7 = s_Partition_table_doesn_t_exist_8f66ad1c;
goto LAB_8f62d280;
}
}
else {
FUN_8f6079b4(uVar4);
FUN_8f60ff88();
iVar3 = FUN_8f625d48();
if (iVar3 == 0) {
uVar11 = FUN_8f6078c4(uVar4);
uVar9 = (uint)uVar11;
bVar10 = (int)((ulonglong)uVar11 >> 0x20) != 0;
if ((bVar10 || 0xfff < uVar9) && (bVar10 || uVar9 != 0x1000)) {
uVar9 = 0x1000;
}
iVar3 = FUN_8f60f704(uVar5,uVar8,uVar9,&DAT_8f72d4c0);
if (iVar3 != 0) {
if (iVar2 == DAT_8f731d80) {
pcVar7 = s_failed_to_erase_partition_8f66ace0;
goto LAB_8f62d280;
}
goto LAB_8f62d22c;
}
}
else {
iVar3 = FUN_8f60fc70(uVar5,uVar8,uVar6,(int)uVar1);
if (iVar3 != 0) {
if (iVar2 == DAT_8f731d80) {
pcVar7 = s_failed_to_erase_partition_8f66ad3c;
goto LAB_8f62d280;
}
goto LAB_8f62d22c;
}
}
iVar3 = FUN_8f63ea58(param_1,s_userdata_8f663458,8);
if (iVar3 == 0) {
iVar3 = FUN_8f60a2b8();
if (iVar3 != 0) {
FUN_8f63cce8();
}
}
if (iVar2 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
}
}
LAB_8f62d22c:
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62d2f8(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int iVar1;
int iVar2;
char *pcVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f6262bc();
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f631758(s_Warning__battery_s_capacity_is_v_8f66ad58);
return;
}
}
else {
iVar2 = FUN_8f62611c();
if (((iVar2 == 0) || (DAT_8f72d21c != 0)) || (DAT_8f718cbc != 0)) {
iVar2 = FUN_8f63ea58(param_1,s_config_8f66a1d4,6);
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
pcVar3 = s_Cannot_erase_this_partition_8f66ada4;
goto LAB_8f62d3c4;
}
}
else {
iVar2 = FUN_8f625e60();
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f62cff8(param_1,param_2,param_3);
return;
}
}
else if (iVar1 == DAT_8f731d80) {
FUN_8f62d0b4(param_1,param_2,param_3);
return;
}
}
}
else if (iVar1 == DAT_8f731d80) {
pcVar3 = s_device_is_locked__Cannot_erase_8f66ad84;
LAB_8f62d3c4:
FUN_8f631758(pcVar3);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62d430(undefined4 param_1,int param_2,int param_3)
{
undefined uVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
int iVar5;
uint uVar6;
longlong lVar7;
undefined8 uVar8;
undefined auStack_30 [4];
int local_2c;
local_2c = DAT_8f731d80;
iVar2 = FUN_8f63ed64(param_1,s_download__8f66c5c8 + 8,auStack_30);
iVar3 = FUN_8f63ed64(0,s_download__8f66c5c8 + 8,auStack_30);
if (iVar3 != 0) {
uVar1 = FUN_8f63d4b0();
iVar3 = 1;
FUN_8f60ff88(uVar1);
}
if (iVar2 != 0) {
uVar4 = FUN_8f63e9a0(s_frp_unlock_8f66adc0);
iVar5 = FUN_8f63ea58(iVar2,s_frp_unlock_8f66adc0,uVar4);
if (iVar5 == 0) {
FUN_8f631758(s_Secret_key_is_invalid__please_up_8f66adcc);
goto LAB_8f62d624;
}
if ((DAT_8f72c1d8 != 0) && (iVar5 = FUN_8f6241b4(iVar2,param_2,param_3), iVar5 != 1)) {
FUN_8f631758(s_Image_verification_fail_8f66ae10);
goto LAB_8f62d624;
}
iVar5 = FUN_8f63e6f4(iVar2,s_ERROR__Cannot_read__config__part_8f66a1dc + 0x1c);
if (iVar5 == 0) {
iVar2 = FUN_8f607f70(param_3,param_2,&DAT_8f72d240);
if (iVar2 != 0) {
FUN_8f631758(s_failed_to_write_partition_8f66ae28);
goto LAB_8f62d624;
}
}
else {
iVar5 = FUN_8f63e6f4(iVar2,s_keystore_8f717944);
if (iVar5 == 0) {
if ((DAT_8f72d21c == 0) && (DAT_8f718cbc == 0)) {
FUN_8f631758(s_unlock_device_to_flash_keystore_8f66ae44);
goto LAB_8f62d624;
}
iVar5 = FUN_8f61177c(param_2,param_3);
if (iVar5 == 0) {
FUN_8f631758(s_image_is_not_a_keystore_file_8f66ae64);
goto LAB_8f62d624;
}
}
uVar4 = FUN_8f607810(iVar2);
lVar7 = FUN_8f60793c();
if (lVar7 == 0) {
FUN_8f631758(s__s__partition_table_doesn_t_exis_8f66cbec + 4);
goto LAB_8f62d624;
}
iVar5 = FUN_8f63e6f4(iVar2,s_fastboot_8f66c5d8 + 4);
if ((iVar5 == 0) || (iVar5 = FUN_8f63e6f4(iVar2,s_recovery_8f663020), iVar5 == 0)) {
iVar5 = FUN_8f63e524(param_2,s_ANDROID__8f66a638,8);
if (iVar5 != 0) {
FUN_8f631758(s_image_is_not_a_boot_image_8f66ae84);
goto LAB_8f62d624;
}
if (DAT_8f718cbc == 0) {
FUN_8f62aedc();
iVar2 = FUN_8f611804(iVar2,param_2,param_3);
if (iVar2 == 0) {
FUN_8f631758(s_Image_is_unsigned_8f66aea0);
goto LAB_8f62d624;
}
}
}
if (iVar3 == 0) {
FUN_8f6079b4(uVar4);
FUN_8f60ff88();
}
uVar8 = FUN_8f6078c4(uVar4);
uVar6 = (uint)uVar8;
if ((int)((ulonglong)uVar8 >> 0x20) == 0 && uVar6 < (param_3 + 0x1ffU & 0xfffffe00)) {
FUN_8f631758(s_size_too_large_8f66aeb4);
goto LAB_8f62d624;
}
FUN_8f63e410(param_2 + param_3,0,uVar6 - param_3);
if (param_2 + param_3 == 0) {
FUN_8f631758(s_data_memset_fail_8f66aec4);
goto LAB_8f62d624;
}
iVar2 = FUN_8f60f704((int)lVar7,(int)((ulonglong)lVar7 >> 0x20),uVar6,param_2);
if (iVar2 != 0) {
FUN_8f631758(s_flash_write_failure_8f66aed8);
goto LAB_8f62d624;
}
}
}
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
LAB_8f62d624:
if (local_2c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62d76c(undefined4 param_1,uint param_2,uint param_3)
{
uint uVar1;
int iVar2;
uint uVar3;
undefined4 uVar4;
uint uVar5;
uint uVar6;
uint uVar7;
int iVar8;
iVar2 = DAT_8f731d80;
if (param_2 < ~param_3) {
param_3 = param_2 + param_3;
if ((param_2 + 0x4c <= param_3) && (param_2 + *(ushort *)(param_2 + 0x4a) <= param_3)) {
uVar1 = *(ushort *)(param_2 + 0x4a) / 0x50;
if ((uVar1 != 0) &&
((uVar6 = *(uint *)(param_2 + 0x94), uVar6 != 0 &&
(uVar5 = *(uint *)(param_2 + 0x98), uVar5 != 0)))) {
if (~uVar6 < param_2) {
LAB_8f62d964:
FUN_8f631758(s_Integer_overflow_detected_in_sta_8f66af10);
}
else {
uVar6 = param_2 + uVar6;
if (uVar5 <= ~uVar6) {
iVar8 = 0;
uVar3 = param_2 + 0x4c;
uVar7 = param_2 + 0x9c;
do {
if (param_3 < uVar6 + uVar5) {
FUN_8f631758(s_Cannot_flash__image_size_mismatc_8f66af70);
goto LAB_8f62d878;
}
iVar8 = iVar8 + 1;
FUN_8f62d430(uVar3);
if (((((int)uVar1 <= iVar8) || (uVar7 == 0)) ||
(uVar6 = *(uint *)(uVar7 + 0x48), uVar6 == 0)) ||
(uVar5 = *(uint *)(uVar7 + 0x4c), uVar5 == 0)) goto LAB_8f62d878;
if (~uVar6 < param_2) goto LAB_8f62d964;
uVar6 = param_2 + uVar6;
uVar3 = uVar7;
uVar7 = uVar7 + 0x50;
} while (uVar5 <= ~uVar6);
}
FUN_8f631758(s_Integer_overflow_detected_in_siz_8f66af44);
}
}
LAB_8f62d878:
uVar4 = FUN_8f63e9a0(s_version_bootloader_8f66b5a0 + 8);
iVar8 = FUN_8f63ea58(param_1,s_version_bootloader_8f66b5a0 + 8,uVar4);
if (iVar8 == 0) {
FUN_8f63e8d8(PTR_DAT_8f62d988,s_MSM8952_8f669980,0x40);
FUN_8f63e800(PTR_DAT_8f62d988,s_ffbm__8f66c958 + 4,0x40);
FUN_8f63e800(PTR_DAT_8f62d988,param_2 + 8,0x40);
}
else {
FUN_8f63e8d8(PTR_DAT_8f62d98c,s_MSM8952_8f669980,0x40);
FUN_8f63e800(PTR_DAT_8f62d98c,s_ffbm__8f66c958 + 4,0x40);
FUN_8f63e800(PTR_DAT_8f62d98c,param_2 + 8,0x40);
}
FUN_8f62c434(s_ANDROID_BOOT__8f718cac);
if (iVar2 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
}
FUN_8f631758(s_Cannot_flash__image_header_corru_8f66aeec);
return;
}
// WARNING: Could not reconcile some variable overlaps
void FUN_8f62d990(undefined4 param_1,int param_2,uint param_3)
{
int iVar1;
undefined4 uVar2;
uint uVar3;
uint uVar4;
int iVar5;
char *pcVar6;
int iVar7;
uint uVar8;
uint uVar9;
undefined4 *puVar10;
uint uVar11;
ushort *puVar12;
ushort *puVar13;
ushort *puVar14;
uint uVar15;
uint uVar16;
bool bVar17;
longlong lVar18;
longlong lVar19;
undefined8 local_70;
longlong local_58;
uint local_40;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f607810();
lVar18 = FUN_8f60793c();
if (lVar18 == 0) {
if (iVar1 == DAT_8f731d80) {
pcVar6 = s__s__partition_table_doesn_t_exis_8f66cbec + 4;
goto LAB_8f62db04;
}
goto LAB_8f62dc40;
}
lVar19 = FUN_8f6078c4(uVar2);
uVar8 = (uint)((ulonglong)lVar19 >> 0x20);
uVar3 = (uint)lVar19;
FUN_8f6079b4(uVar2);
FUN_8f60ff88();
if (param_3 < 0x1c) {
if (iVar1 == DAT_8f731d80) {
FUN_8f631758(s_size_too_low_8f66af94);
return;
}
goto LAB_8f62dc40;
}
uVar9 = *(uint *)(param_2 + 0x10);
uVar4 = *(uint *)(param_2 + 0xc);
uVar11 = (uint)((ulonglong)uVar9 * (ulonglong)uVar4 >> 0x20);
bVar17 = uVar11 <= uVar8;
if (uVar8 == uVar11) {
bVar17 = (uint)((ulonglong)uVar9 * (ulonglong)uVar4) <= uVar3;
}
if (bVar17) {
puVar12 = (ushort *)(param_2 + param_3);
puVar14 = (ushort *)(param_2 + 0x1c);
if (puVar14 <= puVar12) {
if (*(short *)(param_2 + 8) != 0x1c) {
if (iVar1 == DAT_8f731d80) {
FUN_8f631758(s_sparse_header_size_mismatch_8f66b034);
return;
}
goto LAB_8f62dc40;
}
uVar11 = *(uint *)(param_2 + 0x14);
if (uVar11 == 0) {
LAB_8f62df10:
if (uVar11 != uVar9) {
FUN_8f631758(s_sparse_image_write_failure_8f66b1e8);
}
iVar7 = FUN_8f63e6f4(param_1,s_userdata_8f663458);
if (iVar7 == 0) {
DAT_8f72d240 = DAT_8f72d240 & 0xfffffffe;
}
iVar7 = FUN_8f63e6f4(param_1,s_cache_8f663464);
if (iVar7 == 0) {
DAT_8f72d240 = DAT_8f72d240 & 0xfffffffd;
}
iVar7 = FUN_8f63e6f4(param_1,&DAT_8f66346c);
if (iVar7 == 0) {
DAT_8f72d240 = DAT_8f72d240 & 0xfffffffb;
}
iVar7 = FUN_8f63e6f4(param_1,&DAT_8f663470);
if (iVar7 == 0) {
DAT_8f72d240 = DAT_8f72d240 & 0xfffffff7;
}
iVar7 = FUN_8f63e6f4(param_1,s_system_8f663474);
if (iVar7 == 0) {
DAT_8f72d240 = DAT_8f72d240 & 0xffffffef;
}
iVar7 = FUN_8f63e6f4(param_1,s_persist_8f66347c);
if (iVar7 == 0) {
DAT_8f72d240 = DAT_8f72d240 & 0xffffffdf;
}
if (iVar1 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
goto LAB_8f62dc40;
}
if (lVar19 == 0) goto LAB_8f62de28;
puVar13 = (ushort *)(param_2 + 0x28);
if (puVar13 <= puVar12) {
if (*(short *)(param_2 + 10) != 0xc) {
LAB_8f62dec8:
if (iVar1 == DAT_8f731d80) {
pcVar6 = s_chunk_header_size_mismatch_8f66afdc;
goto LAB_8f62db04;
}
goto LAB_8f62dc40;
}
if (uVar4 != 0) {
uVar16 = *(uint *)(param_2 + 0x20);
local_70 = (ulonglong)uVar4 * (ulonglong)uVar16;
uVar9 = (uint)((ulonglong)local_70 >> 0x20);
bVar17 = uVar9 <= uVar8;
if (uVar8 == uVar9) {
bVar17 = (uint)local_70 <= uVar3;
}
if (bVar17) {
local_58 = 0;
local_40 = 0;
uVar9 = 0;
do {
if (3 < *puVar14 - 0xcac1) {
FUN_8f63cbb4(s_Unkown_chunk_type___x_8f66b1bc);
if (iVar1 != DAT_8f731d80) goto LAB_8f62dc40;
pcVar6 = s_Unknown_chunk_type_8f66b1d4;
goto LAB_8f62db04;
}
switch(*puVar14) {
case 0xcac1:
if (local_70._4_4_ + (uint)(0xfffffff3 < (uint)local_70) != 0 ||
*(int *)(puVar14 + 4) != (uint)local_70 + 0xc) {
if (iVar1 != DAT_8f731d80) goto LAB_8f62dc40;
pcVar6 = s_Bogus_chunk_size_for_chunk_type_R_8f66b050;
goto LAB_8f62db04;
}
local_70._4_4_ = local_70._4_4_ + (uint)CARRY4((uint)local_70,(uint)puVar13);
bVar17 = local_70._4_4_ == 0;
if (local_70._4_4_ == 0) {
bVar17 = (ushort *)((uint)local_70 + (int)puVar13) <= puVar12;
}
if (!bVar17) goto LAB_8f62de50;
iVar7 = FUN_8f60f704((int)(lVar18 + local_58),
(int)((ulonglong)(lVar18 + local_58) >> 0x20),(uint)local_70,
puVar13);
if (iVar7 != 0) {
if (iVar1 != DAT_8f731d80) goto LAB_8f62dc40;
pcVar6 = s_flash_write_failure_8f66aed8;
goto LAB_8f62db04;
}
if (~*(uint *)(puVar14 + 2) < uVar9) {
if (iVar1 != DAT_8f731d80) goto LAB_8f62dc40;
pcVar6 = s_Bogus_size_for_RAW_chunk_type_8f66b074;
goto LAB_8f62db04;
}
uVar15 = uVar9 + *(uint *)(puVar14 + 2);
uVar11 = *(uint *)(param_2 + 0x14);
puVar14 = (ushort *)((int)puVar13 + (uint)local_70);
break;
case 0xcac2:
if (*(int *)(puVar14 + 4) == 0x10) {
iVar7 = FUN_8f63e150(0x40,uVar4 + 0x3f & 0xffffffc0);
if (iVar7 != 0) {
if (puVar12 < puVar13 + 2) {
pcVar6 = s_buffer_overreads_occured_due_to_i_8f66afa4;
}
else {
uVar4 = *(uint *)(param_2 + 0xc);
uVar2 = *(undefined4 *)(puVar14 + 6);
if (uVar4 >> 2 != 0) {
uVar11 = 0;
puVar10 = (undefined4 *)(iVar7 + -4);
do {
uVar11 = uVar11 + 1;
puVar10 = puVar10 + 1;
*puVar10 = uVar2;
} while (uVar11 < uVar4 >> 2);
}
if (uVar9 <= ~*(uint *)(puVar14 + 2)) {
uVar15 = uVar9;
if (*(uint *)(puVar14 + 2) != 0) {
lVar19 = (ulonglong)uVar4 * (ulonglong)(uVar9 + 1);
uVar16 = uVar4 * (0xfffffffe < uVar9) + (int)((ulonglong)lVar19 >> 0x20);
bVar17 = uVar16 <= uVar8;
uVar11 = uVar9;
if (uVar8 == uVar16) {
bVar17 = (uint)lVar19 <= uVar3;
}
while( true ) {
if (!bVar17) {
pcVar6 = s_Chunk_data_size_for_fill_type_ex_8f66b0e0;
goto LAB_8f62dd7c;
}
lVar19 = (ulonglong)uVar11 * (ulonglong)uVar4 + lVar18;
iVar5 = FUN_8f60f704((int)lVar19,(int)((ulonglong)lVar19 >> 0x20),uVar4,
iVar7);
if (iVar5 != 0) {
pcVar6 = s_flash_write_failure_8f66aed8;
goto LAB_8f62dd7c;
}
uVar15 = uVar11 + 1;
if (*(uint *)(puVar14 + 2) <= uVar15 - uVar9) break;
uVar4 = *(uint *)(param_2 + 0xc);
lVar19 = (ulonglong)uVar4 * (ulonglong)(uVar11 + 2);
uVar16 = uVar4 * (0xfffffffe < uVar15) +
(int)((ulonglong)lVar19 >> 0x20);
bVar17 = uVar16 <= uVar8;
uVar11 = uVar15;
if (uVar8 == uVar16) {
bVar17 = (uint)lVar19 <= uVar3;
}
}
}
puVar14 = puVar14 + 8;
FUN_8f63e200(iVar7);
uVar11 = *(uint *)(param_2 + 0x14);
break;
}
pcVar6 = s_bogus_size_for_chunk_FILL_type_8f66b118;
}
LAB_8f62dd7c:
FUN_8f631758(pcVar6);
if (iVar1 == DAT_8f731d80) {
FUN_8f63e200(iVar7);
return;
}
goto LAB_8f62dc40;
}
if (iVar1 != DAT_8f731d80) goto LAB_8f62dc40;
pcVar6 = s_Malloc_failed_for__CHUNK_TYPE_FI_8f66b0bc;
}
else {
if (iVar1 != DAT_8f731d80) goto LAB_8f62dc40;
pcVar6 = s_Bogus_chunk_size_for_chunk_type_F_8f66b094;
}
goto LAB_8f62db04;
case 0xcac3:
if (~uVar16 < uVar9) {
if (iVar1 != DAT_8f731d80) goto LAB_8f62dc40;
pcVar6 = s_bogus_size_for_chunk_DONT_CARE_t_8f66b138;
goto LAB_8f62db04;
}
uVar15 = uVar9 + uVar16;
puVar14 = puVar13;
break;
case 0xcac4:
if (*(int *)(puVar14 + 4) != 0xc) {
if (iVar1 != DAT_8f731d80) goto LAB_8f62dc40;
pcVar6 = s_Bogus_chunk_size_for_chunk_type_C_8f66b15c;
goto LAB_8f62db04;
}
if (~uVar16 < uVar9) {
if (iVar1 != DAT_8f731d80) goto LAB_8f62dc40;
pcVar6 = s_bogus_size_for_chunk_CRC_type_8f66b180;
goto LAB_8f62db04;
}
bVar17 = local_70._4_4_ == 0;
if (local_70._4_4_ == 0) {
bVar17 = (ushort *)(-1 - (uint)local_70) <= puVar13;
}
uVar15 = uVar9 + uVar16;
if (bVar17 && (local_70._4_4_ != 0 || puVar13 != (ushort *)(-1 - (uint)local_70))) {
if (iVar1 != DAT_8f731d80) goto LAB_8f62dc40;
pcVar6 = s_integer_overflow_occured_8f66b1a0;
goto LAB_8f62db04;
}
puVar14 = (ushort *)((int)puVar13 + (uint)local_70);
if (puVar12 < (ushort *)((int)puVar13 + (uint)local_70)) goto LAB_8f62de50;
}
local_40 = local_40 + 1;
if (uVar11 <= local_40) {
uVar9 = *(uint *)(param_2 + 0x10);
uVar11 = uVar15;
goto LAB_8f62df10;
}
uVar4 = *(uint *)(param_2 + 0xc);
local_58 = (ulonglong)uVar4 * (ulonglong)uVar15;
uVar9 = (uint)((ulonglong)local_58 >> 0x20);
bVar17 = uVar9 <= uVar8;
if (uVar8 == uVar9) {
bVar17 = (uint)local_58 <= uVar3;
}
if (!bVar17 || uVar8 == uVar9 && uVar3 == (uint)local_58) goto LAB_8f62de28;
puVar13 = puVar14 + 6;
if (puVar12 < puVar13) goto LAB_8f62de50;
if (*(short *)(param_2 + 10) != 0xc) goto LAB_8f62dec8;
if (uVar4 == 0) goto LAB_8f62dee8;
uVar16 = *(uint *)(puVar14 + 2);
local_70 = (ulonglong)uVar4 * (ulonglong)uVar16;
lVar19 = (ulonglong)uVar15 * (ulonglong)uVar4 + local_70;
uVar9 = (uint)((ulonglong)lVar19 >> 0x20);
bVar17 = uVar9 <= uVar8;
if (uVar8 == uVar9) {
bVar17 = (uint)lVar19 <= uVar3;
}
uVar9 = uVar15;
} while (bVar17);
}
if (iVar1 == DAT_8f731d80) {
pcVar6 = s_Chunk_data_size_exceeds_partitio_8f66b00c;
goto LAB_8f62db04;
}
goto LAB_8f62dc40;
}
LAB_8f62dee8:
if (iVar1 != DAT_8f731d80) goto LAB_8f62dc40;
pcVar6 = s_Invalid_block_size_8f66aff8;
goto LAB_8f62db04;
}
}
LAB_8f62de50:
if (iVar1 == DAT_8f731d80) {
pcVar6 = s_buffer_overreads_occured_due_to_i_8f66afa4;
LAB_8f62db04:
FUN_8f631758(pcVar6);
return;
}
}
else {
LAB_8f62de28:
if (iVar1 == DAT_8f731d80) {
FUN_8f631758(s_size_too_large_8f66aeb4);
return;
}
}
LAB_8f62dc40:
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62e180(void)
{
int iVar1;
undefined auStack_8c [128];
int local_c;
local_c = DAT_8f731d80;
FUN_8f63cbb4(s_prop_value____s_8f66b204,auStack_8c);
iVar1 = FUN_8f632c50(0xb,auStack_8c);
if ((iVar1 == 0) &&
(iVar1 = FUN_8f63ea58(auStack_8c,s_GOST_R_34_10_2001_8f70c424 + 0x10,1), iVar1 == 0)) {
iVar1 = FUN_8f63286c(1,0xd);
if (iVar1 == 0) {
FUN_8f63cbb4(s_ROOT_RESETING___Success_8f66b248);
}
else {
FUN_8f63cbb4(s_ROOT_RESETING___Fail_8f66b218);
FUN_8f631758(s_ROOT_RESETING___Fail_8f66b230);
}
}
if (local_c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62e234(undefined4 param_1,undefined4 param_2,int param_3)
{
int iVar1;
int iVar2;
char *pcVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f617cc4();
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
pcVar3 = s__s__partition_table_doesn_t_exis_8f66cbec + 4;
LAB_8f62e2d4:
FUN_8f631758(pcVar3);
return;
}
}
else {
iVar2 = FUN_8f640ccc(iVar2,s_system_8f663474);
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
pcVar3 = s_system_partition_not_found_8f66b2bc;
goto LAB_8f62e2d4;
}
}
else {
iVar2 = FUN_8f625e28(iVar2,param_1,param_2,param_3 + DAT_8f72d2cc & ~DAT_8f72d2cc);
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
}
else if (iVar1 == DAT_8f731d80) {
pcVar3 = s_update_ubi_vol_failed_8f66b2d8;
goto LAB_8f62e2d4;
}
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62e318(undefined4 param_1,undefined4 param_2,uint param_3)
{
longlong lVar1;
int iVar2;
int iVar3;
int iVar4;
uint uVar5;
uint uVar6;
char *pcVar7;
uint uVar8;
uint uVar9;
undefined4 local_34;
iVar2 = DAT_8f731d80;
iVar3 = FUN_8f617cc4();
if (iVar3 == 0) {
if (iVar2 == DAT_8f731d80) {
FUN_8f631758(s__s__partition_table_doesn_t_exis_8f66cbec + 4);
return;
}
}
else {
iVar3 = FUN_8f640ccc(iVar3,param_1);
if (iVar3 == 0) {
if (iVar2 == DAT_8f731d80) {
FUN_8f62e234(param_1,param_2,param_3);
return;
}
}
else {
iVar4 = FUN_8f63e6f4(iVar3,s_fastboot_8f66c5d8 + 4);
if (((iVar4 == 0) || (iVar4 = FUN_8f63e6f4(iVar3,s_recovery_8f663020), iVar4 == 0)) &&
(iVar4 = FUN_8f63e524(param_2,s_ANDROID__8f66a638,8), iVar4 != 0)) {
if (iVar2 == DAT_8f731d80) {
FUN_8f631758(s_image_is_not_a_boot_image_8f66ae84);
return;
}
}
else {
iVar4 = FUN_8f63e6f4(iVar3,s_system_8f663474);
if (((iVar4 == 0) || (iVar4 = FUN_8f63e6f4(iVar3,s_userdata_8f663458), iVar4 == 0)) ||
((iVar4 = FUN_8f63e6f4(iVar3,s_persist_8f66347c), iVar4 == 0 ||
((iVar4 = FUN_8f63e6f4(iVar3,s_recoveryfs_8f66a270), iVar4 == 0 ||
(iVar4 = FUN_8f63e6f4(iVar3,s_modem_8f663730), iVar4 == 0)))))) {
local_34 = 1;
}
else {
local_34 = 0;
param_3 = param_3 + DAT_8f72d2cc & ~DAT_8f72d2cc;
}
uVar8 = *(uint *)(iVar3 + 0x14);
uVar5 = FUN_8f617c84();
uVar6 = FUN_8f617c44();
lVar1 = (ulonglong)uVar8 * ((ulonglong)uVar6 * (ulonglong)uVar5 & 0xffffffff);
uVar9 = (uint)lVar1;
iVar4 = uVar8 * (int)((ulonglong)uVar6 * (ulonglong)uVar5 >> 0x20) +
(int)((ulonglong)lVar1 >> 0x20);
if ((iVar4 != 0 || 0xfffffffe < uVar9) && (iVar4 != 0 || uVar9 != 0xffffffff)) {
if (iVar2 == DAT_8f731d80) {
FUN_8f631758(s_Invalid_partition_size_8f66b2f0);
return;
}
}
else if (iVar4 == 0 && uVar9 < param_3) {
if (iVar2 == DAT_8f731d80) {
pcVar7 = s_Image_size_too_large_8f66b308;
LAB_8f62e534:
FUN_8f631758(pcVar7);
return;
}
}
else {
iVar4 = FUN_8f63e524(param_2,&DAT_8f66b320,4);
if (iVar4 == 0) {
iVar3 = FUN_8f625df0(iVar3,param_2,param_3);
}
else {
iVar3 = FUN_8f617fe8(iVar3,local_34,param_2,param_3);
}
if (iVar3 == 0) {
if (iVar2 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
}
else if (iVar2 == DAT_8f731d80) {
pcVar7 = s_flash_write_failure_8f66aed8;
goto LAB_8f62e534;
}
}
}
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62e5d4(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
DAT_8f72d230 = 1;
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
if (iVar1 == DAT_8f731d80) {
FUN_8f62c1fc(0,0,0);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62e634(void)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
FUN_8f6329f4(1,10);
iVar2 = FUN_8f632b28(10);
if (iVar2 == 1) {
DAT_8f72d224 = 1;
}
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
FUN_8f62c1fc(0,0,0);
return;
}
// WARNING: Removing unreachable block (ram,0x8f62e6f0)
void FUN_8f62e6a8(undefined4 param_1)
{
FUN_8f63e068(param_1,0x40,s__Display_panel___s_8f669dec + 0x10,s_MSM8952_8f669980);
return;
}
// WARNING: Removing unreachable block (ram,0x8f62e738)
void FUN_8f62e6f4(undefined4 param_1)
{
FUN_8f63e068(param_1,0x40,s__Display_panel___s_8f669dec + 0x10,PTR_DAT_8f62e73c);
return;
}
// WARNING: Removing unreachable block (ram,0x8f62e784)
void FUN_8f62e740(undefined4 param_1)
{
FUN_8f63e068(param_1,0x40,s__Display_panel___s_8f669dec + 0x10,PTR_DAT_8f62e788);
return;
}
// WARNING: Removing unreachable block (ram,0x8f62e7d0)
void FUN_8f62e78c(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f62e818)
void FUN_8f62e7d4(void)
{
return;
}
void FUN_8f62e81c(void)
{
int iVar1;
undefined4 uVar2;
uint uVar3;
undefined *puVar4;
undefined *puVar5;
undefined *puVar6;
undefined *puVar7;
undefined auStack_184 [8];
undefined4 local_17c [68];
undefined auStack_6c [8];
undefined auStack_64 [64];
int local_24;
local_24 = DAT_8f731d80;
FUN_8f63e304(auStack_184,&PTR_s__8f669b68,0x120);
puVar6 = auStack_184;
do {
puVar4 = puVar6 + 8;
FUN_8f630a38(*(undefined4 *)(puVar6 + 8),*(undefined4 *)(puVar6 + 0xc));
puVar6 = puVar4;
} while (puVar4 != auStack_6c);
FUN_8f630aac(s_product_8f66b500,s_MSM8952_8f669980);
FUN_8f630aac(s_kernel_8f66b508,s_gcc_usb_hs_ahb_clk_8f662c40 + 0x10);
FUN_8f630aac(s_serialno_8f66b510,&DAT_8f7327dc);
iVar1 = FUN_8f625e60();
if (iVar1 != 0) {
puVar4 = PTR_DAT_8f62ebdc + 0x37a0;
puVar6 = PTR_DAT_8f62ebdc;
do {
puVar5 = puVar6 + -0x248;
FUN_8f628978(puVar5,puVar6);
uVar3 = FUN_8f63e800(puVar6 + -0x200,puVar5,0x100);
if (0xff < uVar3) {
FUN_8f63cbb4(s_partition_size_name_truncated_8f66b51c);
break;
}
puVar7 = puVar6 + -0x100;
uVar3 = FUN_8f63e800(puVar7,puVar5,0x100);
if (0xff < uVar3) {
FUN_8f63cbb4(s_partition_type_name_truncated_8f66b53c);
break;
}
FUN_8f630aac(puVar6 + -0x200,puVar6);
puVar5 = puVar6 + 0x40;
puVar6 = puVar6 + 0x2c8;
FUN_8f630aac(puVar7,puVar5);
} while (puVar6 != puVar4);
}
uVar2 = FUN_8f60158c();
puVar6 = &DAT_8f6692e8;
FUN_8f63e068(&DAT_8f732a60,0x40,s__0x_x_8f66b55c,uVar2);
FUN_8f630aac(s_max_download_size_8f66b564,&DAT_8f732a60);
FUN_8f63e068(&DAT_8f73295c,0x40,&DAT_8f66ab34,DAT_8f718cc8);
FUN_8f630aac(s_charger_screen_enabled_8f66b578,&DAT_8f73295c);
FUN_8f630aac(s_oem_off_mode_charge_8f66c048 + 4,&DAT_8f73295c);
FUN_8f63e068(&DAT_8f73275c,0x40,s__Display_panel___s_8f669dec + 0x10,&DAT_8f718ccc);
FUN_8f630aac(s_display_panel_8f66b590,&DAT_8f73275c);
FUN_8f630aac(s_version_bootloader_8f66b5a0,&DAT_8f718d0c);
FUN_8f630aac(s_version_baseband_8f66b5b4,&DAT_8f718d4c);
iVar1 = FUN_8f61a014();
puVar4 = puVar6;
if (iVar1 != 0) {
puVar4 = (undefined *)0x8f66b4fc;
}
FUN_8f630aac(s_secure_8f66b5c8,puVar4);
FUN_8f605320(auStack_64,0x40);
iVar1 = FUN_8f625e60();
uVar2 = 0x8f6669dc;
if (iVar1 == 0) {
uVar2 = 0x8f6669e4;
}
FUN_8f63e068(&DAT_8f73285c,0x40,s__s__s_8f66b5d0,auStack_64,uVar2);
FUN_8f630aac(s_variant_8f66b5d8,&DAT_8f73285c);
uVar2 = FUN_8f6261f8();
FUN_8f63e068(&DAT_8f73291c,0x40,&DAT_8f66ab34,uVar2);
FUN_8f630aac(s_battery_voltage_8f66b5e0,&DAT_8f73291c);
iVar1 = FUN_8f6262bc();
if (iVar1 != 0) {
puVar6 = (undefined *)0x8f66b4fc;
}
FUN_8f630aac(s_battery_soc_ok_8f66b5f0,puVar6);
FUN_8f630aac(s_flash_all_depart_8f66b600,s_GOST_R_34_10_2001_8f70c424 + 0x10);
FUN_8f630aac(s_sofia_support_8f66b614,s_GOST_R_34_10_2001_8f70c424 + 0x10);
uVar3 = FUN_8f60158c();
FUN_8f63e068(&DAT_8f732a20,0x40,s__0x_x_8f66b55c,uVar3 >> 0x14);
FUN_8f630aac(s_max_block_size_8f66b624,&DAT_8f732a20);
FUN_8f60f65c();
FUN_8f63e068(&DAT_8f73279c,0x40,s___lld_8f66b634);
FUN_8f630aac(s_max_emmc_size_8f66b63c,&DAT_8f73279c);
FUN_8f630aac(s_check_fastboot_version_8f66b64c,s_GOST_R_34_10_2001_8f70c424 + 0x10);
FUN_8f630aac(s_continuous_8f66b664,s_GOST_R_34_10_2001_8f70c424 + 0x10);
FUN_8f630aac(s_aboot_version_8f66b670,s_GOST_R_34_10_2001_8f70c424 + 0x10);
if (local_24 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Could not reconcile some variable overlaps
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f62ebe0(void)
{
bool bVar1;
bool bVar2;
longlong lVar3;
int iVar4;
int iVar5;
undefined4 uVar6;
undefined4 uVar7;
int iVar8;
undefined4 in_lr;
byte bStack_501;
undefined8 local_500;
undefined4 local_4f4;
undefined auStack_4ec [64];
undefined auStack_4ac [1024];
undefined auStack_ac [128];
int local_2c;
local_2c = DAT_8f731d80;
local_4f4 = in_lr;
iVar4 = FUN_8f625e60();
if (iVar4 == 0) {
DAT_8f72d220 = FUN_8f617c44();
}
else {
DAT_8f72d220 = FUN_8f60ff38();
}
DAT_8f72d2cc = DAT_8f72d220 + -1;
FUN_8f62c7dc(s_ANDROID_BOOT__8f718cac);
iVar4 = FUN_8f60f6b0();
iVar5 = FUN_8f607810(s_config_8f718d90);
iVar8 = (int)&local_500 - (iVar4 + 7U & 0xfffffff8);
if ((iVar5 == -1) && (iVar5 = FUN_8f607810(PTR_DAT_8f62f4d4), iVar5 == -1)) {
FUN_8f63cbb4(s_Neither___s__nor___s__partition_f_8f66b680,s_config_8f718d90,&DAT_8f718d98);
}
else {
local_500 = FUN_8f60793c(iVar5);
local_500._0_4_ = (int)local_500;
local_500._4_4_ = (int)((ulonglong)local_500 >> 0x20);
iVar5 = FUN_8f6078c4(iVar5);
lVar3 = local_500 + (ulonglong)(uint)(iVar5 - iVar4);
iVar5 = FUN_8f60f940((int)lVar3,(int)((ulonglong)lVar3 >> 0x20),iVar8);
if (iVar5 == 0) {
DAT_8f72d2c8 = *(byte *)(iVar8 + iVar4 + -1) & 1;
}
else {
FUN_8f63cbb4(s_Reading_MMC_failed_8f66b6a8);
}
}
FUN_8f632d24(&DAT_8f7327dc,1);
FUN_8f6330f0(&DAT_8f7329a0);
FUN_8f632fdc(&DAT_8f73265c);
FUN_8f63cbb4(s_ASUS_NVM____s__8f66b6bc,&DAT_8f73265c);
iVar4 = FUN_8f632b28(10);
if (iVar4 == 1) {
DAT_8f72d224 = 1;
}
iVar4 = FUN_8f632b28(0x14);
if (iVar4 == 1) {
DAT_8f72e4c0 = 1;
}
FUN_8f632ecc(0xb,s_ro_security_root_8f66b6cc,&DAT_8f73265c);
iVar4 = FUN_8f632988(0xd);
if (iVar4 == 0) {
LAB_8f62efcc:
FUN_8f63e9a0(s_lk_ro_security_root_1_8f66b6e0);
}
else {
uVar6 = FUN_8f63eccc(&DAT_8f73265c,s_lk_ro_security_root_1_8f66b6e0);
uVar7 = FUN_8f63e9a0(s_lk_ro_security_root_1_8f66b6e0);
iVar4 = FUN_8f63ea58(s_lk_ro_security_root_1_8f66b6e0,uVar6,uVar7);
if (iVar4 == 0) {
FUN_8f63ea00(uVar6,s_lk_ro_security_root_0_8f66b6f8,uVar7);
goto LAB_8f62efcc;
}
}
uVar6 = FUN_8f63eccc(&DAT_8f73265c,s_lk_ro_security_root__8f66b710);
iVar4 = FUN_8f63ea58(uVar6,s_lk_ro_security_root_1_8f66b6e0);
if (iVar4 == 0) {
DAT_8f72d210 = 1;
}
FUN_8f632ecc(0x12,s_ro_frp_attack_8f66b728,&DAT_8f73265c);
iVar4 = FUN_8f632988(0x13);
if (iVar4 == 0) {
LAB_8f62efa4:
FUN_8f63e9a0(s_lk_ro_frp_attack_1_8f66b738);
}
else {
uVar6 = FUN_8f63eccc(&DAT_8f73265c,s_lk_ro_frp_attack_1_8f66b738);
uVar7 = FUN_8f63e9a0(s_lk_ro_frp_attack_1_8f66b738);
iVar4 = FUN_8f63ea58(s_lk_ro_frp_attack_1_8f66b738,uVar6,uVar7);
if (iVar4 == 0) {
FUN_8f63ea00(uVar6,s_lk_ro_frp_attack_0_8f66b74c,uVar7);
goto LAB_8f62efa4;
}
}
uVar6 = FUN_8f63eccc(&DAT_8f73265c,s_lk_ro_frp_attack__8f66b760);
iVar4 = FUN_8f63ea58(uVar6,s_lk_ro_frp_attack_1_8f66b738);
if (iVar4 == 0) {
DAT_8f72d234 = 1;
}
iVar4 = FUN_8f624340();
FUN_8f63cbb4(s_Wei_SEC___0x_x__8f66b774,iVar4);
if (iVar4 == 0x303030) {
FUN_8f62437c();
DAT_8f72c1d8 = 1;
}
FUN_8f63cbb4(s________Detect_unlock_process_____8f66b788);
iVar4 = FUN_8f633070(auStack_ac);
if (iVar4 == 1) {
FUN_8f63cbb4(s_asus_key____s__serial_number_____8f66b7b0,auStack_ac,&DAT_8f7329a0);
iVar5 = FUN_8f63e6f4(auStack_ac,&DAT_8f7329a0);
if (iVar5 == 0) {
FUN_8f63cbb4(s_Verify_decrypted_asus_key_succes_8f66b7d4);
if (DAT_8f718cbc == 0) {
FUN_8f63cbb4(s_Call_unlock_functions_and_factor_8f66b818);
DAT_8f718cbc = iVar4;
FUN_8f62c434(s_ANDROID_BOOT__8f718cac);
FUN_8f63e068(auStack_4ac,0x400,s_recovery___wipe_data_8f6665f0);
FUN_8f632320(0,auStack_4ec,0x440);
FUN_8f600804(0x77665502);
FUN_8f63cbb4(s_Unlock_success_8f66b844);
}
else {
FUN_8f63cbb4(s_Device_is_already_unlocked__8f66b7f8);
}
}
else {
FUN_8f63cbb4(s_Verify_decrypted_asus_key_fail_8f66b854);
}
}
else {
FUN_8f63cbb4(s_Read_asus_key_fail_8f66b874);
}
FUN_8f63cbb4(s_______Unlock_process_done_______8f66b888);
FUN_8f63e410(&DAT_8f73289c,0,0x80);
iVar4 = FUN_8f625e98();
if (iVar4 == 0) {
iVar4 = FUN_8f63973c(0x122);
if (iVar4 == 0) {
iVar4 = FUN_8f63973c(0x115);
if (iVar4 != 0) goto LAB_8f62f000;
if (DAT_8f72f5f4 != 0) goto LAB_8f62f008;
LAB_8f62f390:
iVar4 = 0;
}
else {
LAB_8f62f000:
DAT_8f72f5f4 = 1;
LAB_8f62f008:
iVar4 = FUN_8f63973c(0x123);
if (iVar4 == 0) {
iVar4 = FUN_8f63973c(0x115);
if (iVar4 == 0) goto LAB_8f62f390;
}
iVar4 = 1;
DAT_8f72c1dc = 1;
}
iVar5 = FUN_8f6006f4();
iVar8 = FUN_8f600738();
if (iVar5 == 0x77665502 || iVar8 == 1) {
DAT_8f72f5f4 = 1;
LAB_8f62f0e8:
if (iVar4 != 0) goto LAB_8f62f338;
if (DAT_8f72f5f4 == 0) {
iVar5 = FUN_8f628360();
if (iVar5 == 0) {
iVar5 = FUN_8f6261f8();
if (iVar5 < 0x3567e1) {
DAT_8f72d498 = 1;
}
iVar5 = FUN_8f600944();
if (iVar5 != 0) {
DAT_8f72d214 = 1;
}
}
}
}
else {
if (iVar5 != 0x77665500 && iVar8 != 2) {
if (iVar5 == 0x77665503 || iVar8 == 3) {
DAT_8f72d228 = 1;
}
else if (iVar5 == 0x77665509) {
DAT_8f718d8c = 1;
FUN_8f62c434(s_ANDROID_BOOT__8f718cac);
}
else if (iVar5 == 0x77665508) {
DAT_8f718d8c = 0;
FUN_8f62c434(s_ANDROID_BOOT__8f718cac);
}
else if (iVar5 == 0x7766550a) {
iVar5 = FUN_8f60a2b8();
if (iVar5 != 0) {
FUN_8f63cce8(local_4f4,s_ASSERT_FAILED_at___s__d____s_8f6617e4,
s_app_aboot_aboot_c_8f669cdc,0x123d);
}
}
goto LAB_8f62f0e8;
}
LAB_8f62f338:
iVar4 = 1;
}
FUN_8f63cbb4(s_Boot_into_charger____d_8f66b8ac,DAT_8f72d214);
FUN_8f63cbb4(s_Boot_into_charger_because_low_ba_8f66b8c4,DAT_8f72d498);
DAT_8f72d2c4 = DAT_8f72d214;
DAT_8f72d22c = DAT_8f72d498;
DAT_8f72c194 = iVar4;
FUN_8f602228(PTR_DAT_8f62f4d0);
while ((DAT_8f72d498 != 0 && (DAT_8f71c6b4 != 0))) {
iVar5 = FUN_8f6008d0();
if (iVar5 != 0) break;
DAT_8f71c6b4 = DAT_8f71c6b4 + -1;
FUN_8f627600(100);
if (DAT_8f71c6b4 == 0) {
FUN_8f60047c();
}
}
if (DAT_8f72d214 == 0) {
LAB_8f62f2ec:
FUN_8f63c964(0x666);
}
else {
iVar5 = FUN_8f6261f8();
if (3400000 < iVar5) goto LAB_8f62f2ec;
FUN_8f63c964(0x7b);
FUN_8f627600(1000);
FUN_8f63c964(0);
bVar2 = true;
while( true ) {
iVar5 = FUN_8f6261f8();
if (3400000 < iVar5) break;
bVar1 = bVar2;
if (iVar5 < 0x2b7cd1) {
bVar1 = false;
}
FUN_8f627600(1000);
if (bVar1) {
FUN_8f63ad9c(2,0x13d0,0xa5,0);
bVar2 = false;
FUN_8f63ad9c(2,0x1340,10);
}
iVar5 = FUN_8f6008d0();
if (iVar5 == 0) {
FUN_8f60047c();
}
}
}
FUN_8f63a1fc(1);
if (iVar4 != 0) goto LAB_8f62ef30;
}
else {
FUN_8f63a1fc(1);
}
iVar4 = FUN_8f625e60();
if (iVar4 == 0) {
FUN_8f631dbc();
FUN_8f62bbb4();
}
else {
iVar4 = FUN_8f6007cc();
if (iVar4 != 0) {
FUN_8f63cbb4(s_error_in_emmc_recovery_init_8f66b8f0);
}
FUN_8f625ed0();
FUN_8f62af80();
}
FUN_8f63cbb4(s_ERROR__Could_not_do_normal_boot__8f66b910);
LAB_8f62ef30:
DAT_0006c098 = 99;
DAT_0006c09c = 0x8e;
DAT_0006c0a0 = 0;
DAT_0006c0a4 = 7;
FUN_8f62e81c();
FUN_8f607aac();
FUN_8f613694();
uVar6 = FUN_8f601550();
uVar7 = FUN_8f60158c();
FUN_8f6317e0(uVar6,uVar7);
if (local_2c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f62f514)
void FUN_8f62f4d8(void)
{
return;
}
void FUN_8f62f518(void)
{
int iVar1;
char *pcVar2;
char *pcVar3;
iVar1 = DAT_8f731d80;
pcVar2 = s_system_8f718da0;
do {
pcVar3 = pcVar2 + 0x2c8;
FUN_8f628978(pcVar2,pcVar2 + 0x248);
pcVar2 = pcVar3;
} while (pcVar3 != &DAT_8f71c540);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62f574(int param_1,uint param_2)
{
int iVar1;
int iVar2;
uint uVar3;
bool bVar4;
iVar1 = DAT_8f731d80;
iVar2 = param_1;
uVar3 = param_2;
if (0xffff < param_2) {
do {
FUN_8f60f704(DAT_8f72d238,DAT_8f72d23c,0x10000,iVar2);
uVar3 = uVar3 - 0x10000;
iVar2 = iVar2 + 0x10000;
bVar4 = 0xfffeffff < DAT_8f72d238;
DAT_8f72d238 = DAT_8f72d238 + 0x10000;
DAT_8f72d23c = DAT_8f72d23c + (uint)bVar4;
} while (0xffff < uVar3);
uVar3 = param_2 - 0x10000;
param_2 = param_2 & 0xffff;
param_1 = param_1 + ((uVar3 >> 0x10) + 1) * 0x10000;
}
if (param_2 != 0) {
FUN_8f60f704(DAT_8f72d238,DAT_8f72d23c,param_2,param_1);
bVar4 = CARRY4(DAT_8f72d238,param_2);
DAT_8f72d238 = DAT_8f72d238 + param_2;
DAT_8f72d23c = DAT_8f72d23c + (uint)bVar4;
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
void FUN_8f62f654(int param_1)
{
int iVar1;
int iVar2;
int iVar3;
undefined auStack_214 [512];
int local_14;
local_14 = DAT_8f731d80;
iVar1 = FUN_8f63e6f4(s_Package_of_SD_Download_v2_8f66b950,param_1);
if (iVar1 == 0) {
FUN_8f63e758(auStack_214,param_1 + 0x48);
FUN_8f63cbb4(s_Package_information_____s__8f66b998,auStack_214);
iVar1 = FUN_8f63ee2c(auStack_214,&DAT_8f66b9b4);
while (iVar1 != 0) {
iVar2 = FUN_8f63e9a0(s_pkg_name__8f66b9b8);
iVar3 = FUN_8f63ea58(iVar1,s_pkg_name__8f66b9b8,iVar2);
if (iVar3 == 0) {
FUN_8f63e758(&DAT_8f72d410,iVar1 + iVar2);
}
iVar2 = FUN_8f63e9a0(s_version__8f66b9c4);
iVar3 = FUN_8f63ea58(iVar1,s_version__8f66b9c4,iVar2);
if (iVar3 == 0) {
FUN_8f63e758(&DAT_8f72e4c4,iVar1 + iVar2);
}
iVar2 = FUN_8f63e9a0(&DAT_8f66b9d0);
iVar3 = FUN_8f63ea58(iVar1,&DAT_8f66b9d0,iVar2);
if (iVar3 == 0) {
FUN_8f63e758(&DAT_8f72d390,iVar1 + iVar2);
}
iVar2 = FUN_8f63e9a0(&DAT_8f66b9d8);
iVar3 = FUN_8f63ea58(iVar1,&DAT_8f66b9d8,iVar2);
if (iVar3 == 0) {
FUN_8f63e758(&DAT_8f72d2d0,iVar1 + iVar2);
}
iVar2 = FUN_8f63e9a0(s_skip_check__8f66b9e0);
iVar3 = FUN_8f63ea58(iVar1,s_skip_check__8f66b9e0,iVar2);
if (iVar3 == 0) {
FUN_8f63e758(&DAT_8f72d244,iVar1 + iVar2);
}
iVar1 = FUN_8f63ee2c(0,&DAT_8f66b9b4);
}
if ((DAT_8f72d490 == 0) &&
(((iVar1 = FUN_8f63e6f4(&DAT_8f72d390,s_IMEI____s_8f666cc0 + 0xc), iVar1 != 0 ||
(iVar1 = FUN_8f63e6f4(&DAT_8f72d2d0,s_IMEI____s_8f666cc0 + 0xc), iVar1 != 0)) &&
(iVar1 = FUN_8f63e6f4(&DAT_8f71c580,&DAT_8f66b9ec), iVar1 != 0)))) {
FUN_8f63cbb4(s_Target_sku____s__Target_oem____s_8f66b9f0,&DAT_8f72d390,&DAT_8f72d2d0);
FUN_8f63cbb4(s_Device_sku____s__Device_oem____s_8f66ba14,&DAT_8f71c540,&DAT_8f72c198);
iVar1 = FUN_8f63e6f4(&DAT_8f72d390,&DAT_8f71c540);
if (iVar1 != 0) {
FUN_8f63cbb4(s_NO_debricking__FAIL_8f66ba38);
FUN_8f631758(s_FAIL_Need_to_flash_debricking_im_8f66ba50);
goto LAB_8f62f920;
}
FUN_8f63cbb4(s_Same_sku_and_oem__PASS_8f66ba74);
}
else {
FUN_8f63cbb4(s_No_need_to_check_sku_and_oem_8f66ba8c);
}
iVar1 = FUN_8f60128c(s_proj_id_8f661aac);
if ((iVar1 == 0) &&
(iVar1 = FUN_8f63e6f4(&DAT_8f72d410,s_FAIL_Invalid_project_for_device_Z_8f66baec + 0x20),
iVar1 != 0)) {
FUN_8f63cbb4(s_Check_project_ZT581KL__Fail__Thi_8f66baac);
FUN_8f631758(s_FAIL_Invalid_project_for_device_Z_8f66baec);
}
else {
iVar1 = FUN_8f60128c(s_proj_id_8f661aac);
if ((iVar1 == 1) &&
(iVar1 = FUN_8f63e6f4(&DAT_8f72d410,s_FAIL_Invalid_project_for_device_Z_8f66bb54 + 0x20),
iVar1 != 0)) {
FUN_8f63cbb4(s_Check_project_ZT500KL__Fail__Thi_8f66bb14);
FUN_8f631758(s_FAIL_Invalid_project_for_device_Z_8f66bb54);
}
else {
iVar1 = FUN_8f60128c(s_proj_id_8f661aac);
if ((iVar1 == 2) &&
(iVar1 = FUN_8f63e6f4(&DAT_8f72d410,s_FAIL_Invalid_project_for_device_Z_8f66bbb8 + 0x20),
iVar1 != 0)) {
FUN_8f63cbb4(s_Check_project_Z581KL__Fail__This_8f66bb7c);
FUN_8f631758(s_FAIL_Invalid_project_for_device_Z_8f66bbb8);
}
else {
iVar1 = FUN_8f60128c(s_proj_id_8f661aac);
if ((iVar1 == 3) &&
(iVar1 = FUN_8f63e6f4(&DAT_8f72d410,s_FAIL_Invalid_project_for_device_Z_8f66bc1c + 0x20
), iVar1 != 0)) {
FUN_8f63cbb4(s_Check_project_Z500KL__Fail__This_8f66bbe0);
FUN_8f631758(s_FAIL_Invalid_project_for_device_Z_8f66bc1c);
}
else {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
}
}
}
}
}
else {
FUN_8f63cbb4(s_Invalid_package_8f66b96c);
FUN_8f631758(s_FAIL_Invalid_package_8f66b980);
}
LAB_8f62f920:
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62fa80(int param_1,uint param_2)
{
uint uVar1;
longlong lVar2;
longlong lVar3;
longlong lVar4;
ulonglong uVar5;
int iVar6;
int iVar7;
undefined4 uVar8;
longlong lVar9;
iVar6 = DAT_8f731d80;
iVar7 = FUN_8f607810(s_modemst1_8f669edc);
if (iVar7 == -1) {
if (iVar6 == DAT_8f731d80) {
FUN_8f631758(s_This_partition_of_modemst1_doesn_8f669ee8);
return;
}
}
else {
lVar9 = FUN_8f60793c();
if (param_2 < 0x10000) {
FUN_8f60f704((int)lVar9,(int)((ulonglong)lVar9 >> 0x20),param_2,param_1);
}
else {
uVar1 = param_2 - 0x10000 >> 0x10;
lVar2 = (ulonglong)uVar1 * 0x10000 + lVar9 + 0x10000;
iVar7 = param_1;
lVar3 = lVar9;
do {
uVar5 = (ulonglong)lVar3 >> 0x20;
uVar8 = (undefined4)lVar3;
lVar4 = lVar3 + 0x10000;
lVar3 = lVar3 + 0x10000;
FUN_8f60f704(uVar8,(int)uVar5,0x10000,iVar7);
iVar7 = iVar7 + 0x10000;
} while ((int)((ulonglong)lVar4 >> 0x20) != (int)((ulonglong)lVar2 >> 0x20) ||
(int)lVar4 != (int)lVar2);
lVar9 = (ulonglong)uVar1 * 0x10000 + lVar9 + 0x10000;
if ((param_2 & 0xffff) != 0) {
FUN_8f60f704((int)lVar9,(int)((ulonglong)lVar9 >> 0x20),param_2 & 0xffff,
param_1 + (uVar1 + 1) * 0x10000);
}
}
if (iVar6 == DAT_8f731d80) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f62fba8(void)
{
int iVar1;
undefined4 uVar2;
uint uVar3;
int iVar4;
undefined8 uVar5;
undefined8 uVar6;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f607810(s_config_8f66a1d4);
uVar5 = FUN_8f60793c();
uVar6 = FUN_8f6078c4(uVar2);
uVar3 = FUN_8f60fc70((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),(int)uVar6,
(int)((ulonglong)uVar6 >> 0x20));
iVar4 = 1 - uVar3;
if (1 < uVar3) {
iVar4 = 0;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar4);
}
void FUN_8f62fc1c(void)
{
int iVar1;
undefined4 uVar2;
uint uVar3;
int iVar4;
undefined8 uVar5;
undefined8 uVar6;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f607810(s_devcfg_8f66bc44);
uVar5 = FUN_8f60793c();
uVar6 = FUN_8f6078c4(uVar2);
uVar3 = FUN_8f60fc70((int)uVar5,(int)((ulonglong)uVar5 >> 0x20),(int)uVar6,
(int)((ulonglong)uVar6 >> 0x20));
iVar4 = 1 - uVar3;
if (1 < uVar3) {
iVar4 = 0;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar4);
}
void FUN_8f62fc90(undefined4 param_1,int *param_2,int param_3)
{
int iVar1;
undefined4 uVar2;
int *piVar3;
int iVar4;
int local_f0;
int *local_ec [2];
uint local_e4;
undefined4 local_e0;
int local_dc;
int local_d8;
int local_d4;
int local_d0;
int local_cc;
int local_c8;
int local_c4;
int local_c0;
int local_bc;
int local_b8;
int local_b4;
int local_b0;
int local_ac;
int local_a8;
int local_a4;
int local_a0;
undefined auStack_9c [128];
int local_1c;
local_1c = DAT_8f731d80;
local_e4 = 0;
local_e0 = 0;
local_f0 = param_3;
local_ec[0] = param_2;
iVar1 = FUN_8f6193fc(&local_e4,&local_e0);
if (iVar1 != 0) {
FUN_8f63cbb4(s_INVALID_SVC_Version_8f66bccc);
goto LAB_8f62ff40;
}
if (local_e4 < 2) {
if (*param_2 == 0x73737a74) {
if ((param_2[1] == 0x676d6964) && (iVar1 = FUN_8f618790(local_ec,&local_f0), iVar1 != 0)) {
FUN_8f63cbb4(s_ERROR__Invalid_secure_image_8f66bcac);
goto LAB_8f62ff40;
}
}
else if (((*param_2 == 0x6b647373) && (param_2[1] == 0x676d6973)) &&
(iVar1 = FUN_8f618db8(local_ec,&local_f0), iVar1 != 0)) goto LAB_8f62ff24;
}
else {
iVar1 = FUN_8f63e6f4(param_1,&DAT_8f661904);
if ((iVar1 == 0) || (iVar1 = FUN_8f63e6f4(param_1,&DAT_8f66bc4c), iVar1 == 0)) {
iVar1 = FUN_8f618db8(local_ec,&local_f0);
if (iVar1 != 0) {
LAB_8f62ff24:
FUN_8f63cbb4(s_ERROR__Encryption_Failure_8f66bc50);
goto LAB_8f62ff40;
}
iVar1 = FUN_8f63e6f4(param_1,&DAT_8f661904);
if ((iVar1 == 0) && (iVar1 = FUN_8f61968c(local_ec[0],local_f0), iVar1 != 0)) {
FUN_8f63cbb4(s_ERROR__scm_protect_keystore_Fail_8f66bc6c);
goto LAB_8f62ff40;
}
}
else {
iVar1 = FUN_8f6191a0(local_ec,&local_f0);
if (iVar1 != 0) {
FUN_8f63cbb4(s_ERROR__Decryption_Failure_8f66bc90);
goto LAB_8f62ff40;
}
}
}
iVar1 = FUN_8f62611c();
if ((iVar1 != 0) && (DAT_8f72d21c == 0)) {
if ((DAT_8f718cbc == 0) && (iVar1 = FUN_8f628708(param_1), iVar1 == 0)) {
FUN_8f631758(s_Partition_flashing_is_not_allowe_8f66bce4);
goto LAB_8f62ff40;
}
if ((DAT_8f718cc4 == 0) && (iVar1 = FUN_8f628708(param_1), iVar1 != 0)) {
FUN_8f631758(s_Critical_partition_flashing_is_n_8f66bd08);
goto LAB_8f62ff40;
}
}
iVar1 = FUN_8f63e6f4(param_1,s_emmc_fw_8f66bd34);
if (iVar1 == 0) {
iVar1 = FUN_8f610594();
if ((iVar1 == 0) || (iVar1 = FUN_8f6101a4(local_ec[0],local_f0), iVar1 != 0)) {
FUN_8f631758(s_FFU_failed__8f66bd3c);
goto LAB_8f62ff40;
}
}
else {
iVar1 = FUN_8f63e6f4(param_1,s_Inherit_all_8f70b7a0 + 8);
if (iVar1 == 0) {
FUN_8f631570(s_This_fastboot_is_invalid_8f66bd48);
FUN_8f631570(s_Please_use_fastboot_which_versio_8f66a0ec);
FUN_8f631758(s_INVALID_FASTBOOT_8f66a124);
goto LAB_8f62ff40;
}
iVar1 = FUN_8f63e6f4(param_1,s_Package_Header_8f66bd64);
piVar3 = local_ec[0];
if (iVar1 == 0) {
FUN_8f631570(s_Flash_Package_Header_____8f66bd74);
FUN_8f63cbb4(s_All_Image_Info___Title____s_Tota_8f66bd90,piVar3,piVar3[0x10],piVar3 + 0x12);
FUN_8f62f654(local_ec[0],local_f0);
FUN_8f6329f4(0,10);
FUN_8f6329f4(0,0x14);
FUN_8f62fc1c();
}
iVar1 = FUN_8f63e6f4(param_1,s_all_sep_8f66bdd8);
if (iVar1 == 0) {
local_dc = iVar1;
local_d8 = iVar1;
local_d4 = iVar1;
local_d0 = iVar1;
local_cc = iVar1;
local_c8 = iVar1;
local_c4 = iVar1;
local_c0 = iVar1;
local_bc = iVar1;
local_b8 = iVar1;
local_b4 = iVar1;
local_b0 = iVar1;
local_ac = iVar1;
local_a8 = iVar1;
local_a4 = iVar1;
local_a0 = iVar1;
FUN_8f63e758(&local_dc,local_ec[0]);
FUN_8f63ee2c(&local_dc,s_reset_device_info_called__8f66ab98 + 0x18);
FUN_8f63e758(&local_bc,&local_dc);
iVar1 = FUN_8f63e6f4(&local_dc,s_emmc_appsboot_8f66bde0);
if (iVar1 == 0) {
FUN_8f63e758(&local_bc,s_aboot_8f662ff8);
}
iVar1 = FUN_8f63e6f4(&local_dc,s_NON_HLOS_8f66bdf0);
if (iVar1 == 0) {
FUN_8f63e758(&local_bc,s_modem_8f663730);
}
iVar1 = FUN_8f63e6f4(&local_dc,s_gpt_both0_8f66bdfc);
if (iVar1 == 0) {
FUN_8f63e758(&local_bc,s_ERROR__Cannot_read__config__part_8f66a1dc + 0x1c);
}
iVar1 = FUN_8f63e6f4(&local_dc,s_adspso_8f66be08);
if (iVar1 == 0) {
FUN_8f63e758(&local_bc,&DAT_8f66be10);
}
iVar1 = FUN_8f63e6f4(&local_dc,s_ABOOT_VERSION_8f66be14);
if (iVar1 == 0) {
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
}
FUN_8f63e0bc(auStack_9c,s_Flash__s_____8f66be24,&local_bc);
FUN_8f63cbb4(s_We_find__s_8f66be34,&local_bc);
FUN_8f631570(auStack_9c);
piVar3 = local_ec[0] + 0x80;
iVar4 = local_f0 + -0x200;
local_f0 = iVar4;
local_ec[0] = piVar3;
iVar1 = FUN_8f63e6f4(&local_bc,s_debricking_8f66be40);
if (iVar1 == 0) {
uVar2 = FUN_8f63e9a0(s_57696c6c437265617465303731315468_8f66be4c);
iVar1 = FUN_8f63e524(s_57696c6c437265617465303731315468_8f66be4c,piVar3,uVar2);
if (iVar1 == 0) {
DAT_8f72d490 = 1;
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
}
else {
FUN_8f631758(s_Debricking_Fail__please_check_yo_8f66bf88);
}
}
else {
FUN_8f62d430(&local_bc,piVar3,iVar4);
}
goto LAB_8f62ff40;
}
if ((DAT_8f72d204 != 0) && (iVar1 = FUN_8f63e6f4(param_1,s_system_8f663474), iVar1 == 0)) {
FUN_8f631570(s_Flash_system_____8f66be88);
}
iVar1 = FUN_8f63e6f4(param_1,s_emmc_write_userdata_8f66be9c);
if (iVar1 == 0) {
FUN_8f62f574(local_ec[0],local_f0);
goto LAB_8f62ff40;
}
iVar1 = FUN_8f63e6f4(param_1,s_emmc_write_modemst_8f66beb0);
if (iVar1 == 0) {
FUN_8f62fa80(local_ec[0],local_f0);
goto LAB_8f62ff40;
}
iVar1 = FUN_8f63e6f4(param_1,&DAT_8f666430);
if (iVar1 != 0) {
iVar1 = FUN_8f63ea58(param_1,s_system_8f663474,6);
if (iVar1 == 0) {
FUN_8f62e180();
iVar1 = FUN_8f63ea58(param_1,s_system_8f663474,6);
if ((iVar1 == 0) && (DAT_8f718d8c == 0)) {
DAT_8f718d8c = 1;
FUN_8f62c434(s_ANDROID_BOOT__8f718cac);
}
}
if ((DAT_8f72e5b0 | DAT_8f72e5b4) != 0) {
DAT_8f72e570 = 0;
DAT_8f72e574 = 0;
DAT_8f72e5b0 = 0;
DAT_8f72e5b4 = 0;
if (DAT_8f72e564 != 0) {
DAT_8f72d200 = 0;
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
goto LAB_8f62ff40;
}
}
if (*local_ec[0] == -0x12d900c6) {
FUN_8f62d990(param_1,local_ec[0],local_f0);
}
else if (*local_ec[0] == -0x31e529c4) {
FUN_8f62d76c(param_1,local_ec[0],local_f0);
}
else {
FUN_8f62d430();
}
DAT_8f72d200 = 0;
goto LAB_8f62ff40;
}
uVar2 = FUN_8f63e9a0(&DAT_8f7327dc);
iVar1 = FUN_8f60a0b4(&DAT_8f7327dc,uVar2,local_ec[0],local_f0);
if (iVar1 != 0) {
FUN_8f631758(s_FRP_signature_verify_fail__8f66bf6c);
goto LAB_8f62ff40;
}
FUN_8f631570(s_FRP_signature_verify_pass__8f66bec4);
FUN_8f631570(s_Start_to_erase_config_partition__8f66bee0);
iVar1 = FUN_8f62fba8();
if (iVar1 == 0) {
FUN_8f631758(s_Fail_to_erase_config_partition__8f66bf4c);
goto LAB_8f62ff40;
}
FUN_8f631570(s_The_config_partition_has_already_8f66bf04);
FUN_8f63cbb4(s_Finish_flashing_sig__8f66bf34);
}
FUN_8f63179c(s_IMEI____s_8f666cc0 + 0xc);
LAB_8f62ff40:
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f630438(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f6262bc();
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f631758(s_Warning__battery_s_capacity_is_v_8f66ad58);
return;
}
}
else {
iVar2 = FUN_8f625e60();
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f62e318(param_1,param_2,param_3);
return;
}
}
else if (iVar1 == DAT_8f731d80) {
FUN_8f62fc90(param_1,param_2,param_3);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f6304e4(uint param_1,uint param_2)
{
int iVar1;
uint uVar2;
uint uVar3;
iVar1 = DAT_8f731d80;
uVar2 = DAT_8f72e560 - DAT_8f72e57c;
DAT_8f72e580 = DAT_8f72e580 + DAT_8f72e5a4;
uVar3 = DAT_8f72e560;
if (uVar2 < param_2) {
if (param_1 < 0xc800001) {
FUN_8f6254dc(DAT_8f72e580,param_1);
uVar3 = (*DAT_8f732ac0)(DAT_8f72e580,param_1);
uVar2 = uVar3 - param_1;
if (uVar2 != 0) {
uVar2 = 1;
}
if ((uVar2 | uVar3 >> 0x1f) != 0) {
LAB_8f630648:
DAT_8f72e578 = 3;
goto LAB_8f630658;
}
}
else {
if ((DAT_8f72e560 != DAT_8f72e57c) && (DAT_8f72e5a4 != 0x1c)) {
FUN_8f63e304(DAT_8f72e5f0,DAT_8f72e580);
uVar2 = DAT_8f72e560 - DAT_8f72e57c;
DAT_8f72e580 = DAT_8f72e5f0;
uVar3 = DAT_8f72e560;
if (param_2 <= uVar2) goto LAB_8f6306ac;
}
do {
uVar3 = param_1 - DAT_8f72e560;
if (0xc800000 < uVar3) {
uVar3 = 0x6400000;
}
FUN_8f6254dc(DAT_8f72e580 + uVar2,uVar3);
uVar2 = (*DAT_8f732ac0)(DAT_8f72e580 + (DAT_8f72e560 - DAT_8f72e57c),uVar3);
uVar3 = uVar2 - uVar3;
if (uVar3 != 0) {
uVar3 = 1;
}
if ((uVar3 | uVar2 >> 0x1f) != 0) goto LAB_8f630648;
DAT_8f72e560 = uVar2 + DAT_8f72e560;
uVar2 = DAT_8f72e560 - DAT_8f72e57c;
uVar3 = DAT_8f72e560;
} while (uVar2 < param_2);
}
}
LAB_8f6306ac:
DAT_8f72e560 = uVar3;
DAT_8f72e57c = DAT_8f72e57c + param_2;
DAT_8f72e5a4 = param_2;
if (param_1 == DAT_8f72e57c) {
DAT_8f72e560 = 0;
DAT_8f72e57c = 0;
DAT_8f72e5a4 = 0;
}
LAB_8f630658:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f630744(int param_1,uint param_2)
{
undefined4 *puVar1;
undefined4 *puVar2;
int iVar3;
undefined4 uVar4;
int iVar5;
uint uVar6;
uint uVar7;
uint uVar8;
uint uVar9;
iVar3 = DAT_8f731d80;
if (DAT_8f72e578 == 3) {
LAB_8f630850:
param_2 = 0xffffffff;
DAT_8f72e578 = 3;
}
else if (param_2 != 0) {
uVar8 = 0;
uVar9 = param_2;
do {
puVar1 = DAT_8f72e55c;
uVar7 = uVar9;
if (0x7fff < uVar9) {
uVar7 = 0x8000;
}
uVar4 = FUN_8f603a60(param_1);
puVar2 = DAT_8f72e55c;
*puVar1 = uVar4;
puVar2[1] = uVar7;
puVar2[2] = &LAB_8f6306f0;
iVar5 = FUN_8f608d18(DAT_8f72e568,puVar2);
if ((iVar5 < 0) || (FUN_8f62695c(&DAT_8f72e5b8), DAT_8f732ac8 < 0)) goto LAB_8f630850;
uVar6 = DAT_8f72e55c[1];
param_2 = uVar8 + uVar6;
param_1 = param_1 + uVar6;
uVar9 = uVar9 - uVar6;
} while ((uVar7 == uVar6) && (uVar8 = param_2, uVar9 != 0));
}
if (iVar3 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(param_2);
}
void FUN_8f630888(int param_1,uint param_2)
{
undefined4 *puVar1;
undefined4 *puVar2;
int iVar3;
undefined4 uVar4;
int iVar5;
uint uVar6;
int iVar7;
uint uVar8;
uint uVar9;
uint uVar10;
iVar3 = DAT_8f731d80;
if (DAT_8f72e578 == 3) {
LAB_8f630998:
param_2 = 0xffffffff;
DAT_8f72e578 = 3;
}
else {
if (param_2 != 0) {
iVar7 = param_1;
uVar9 = 0;
uVar10 = param_2;
do {
puVar1 = DAT_8f72e55c;
uVar8 = uVar10;
if (0x7fff < uVar10) {
uVar8 = 0x8000;
}
uVar4 = FUN_8f603a60(iVar7);
puVar2 = DAT_8f72e55c;
*puVar1 = uVar4;
puVar2[1] = uVar8;
puVar2[2] = &LAB_8f6306f0;
iVar5 = FUN_8f608d18(DAT_8f72e5a8,puVar2);
if ((iVar5 < 0) || (FUN_8f62695c(&DAT_8f72e5b8), DAT_8f732ac8 < 0)) goto LAB_8f630998;
uVar6 = DAT_8f72e55c[1];
param_2 = uVar9 + uVar6;
iVar7 = iVar7 + uVar6;
uVar10 = uVar10 - uVar6;
} while ((uVar8 == uVar6) && (uVar9 = param_2, uVar10 != 0));
}
FUN_8f6254dc(param_1,param_2);
}
if (iVar3 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(param_2);
}
void FUN_8f630a38(undefined4 param_1,undefined4 param_2)
{
int iVar1;
undefined4 *puVar2;
undefined4 *puVar3;
undefined4 uVar4;
iVar1 = DAT_8f731d80;
puVar3 = (undefined4 *)FUN_8f63e114(0x10);
if (puVar3 != (undefined4 *)0x0) {
puVar3[1] = param_1;
uVar4 = FUN_8f63e9a0(param_1);
puVar3[3] = param_2;
puVar2 = puVar3;
*puVar3 = DAT_8f72e54c;
DAT_8f72e54c = puVar2;
puVar3[2] = uVar4;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f630aac(undefined4 param_1,undefined4 param_2)
{
int iVar1;
undefined4 *puVar2;
iVar1 = DAT_8f731d80;
puVar2 = (undefined4 *)FUN_8f63e114(0xc);
if (puVar2 != (undefined4 *)0x0) {
puVar2[1] = param_1;
puVar2[2] = param_2;
*puVar2 = DAT_8f72e548;
DAT_8f72e548 = puVar2;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f630b14(undefined4 param_1,char *param_2)
{
code *pcVar1;
undefined4 uVar2;
undefined auStack_80 [108];
int local_14;
local_14 = DAT_8f731d80;
if (DAT_8f72e578 == 1) {
if (param_2 == (char *)0x0) {
param_2 = s_IMEI____s_8f666cc0 + 0xc;
}
FUN_8f63e068(auStack_80,0x40,&DAT_8f66c274,param_1,param_2);
pcVar1 = DAT_8f732ac4;
DAT_8f72e578 = 2;
uVar2 = FUN_8f63e9a0(auStack_80);
(*pcVar1)(auStack_80,uVar2);
}
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f630d80(byte *param_1)
{
longlong lVar1;
code *pcVar2;
undefined4 uVar3;
int iVar4;
int *piVar5;
int iVar6;
uint uVar7;
uint uVar8;
uint uVar9;
int iVar10;
uint uVar11;
int *piVar12;
uint uVar14;
uint uVar15;
int iVar16;
int iVar17;
bool bVar18;
undefined auStack_80 [84];
int local_2c;
int *piVar13;
uVar11 = (uint)*param_1;
local_2c = DAT_8f731d80;
uVar14 = uVar11;
if (uVar11 != 0) {
uVar14 = 0;
do {
switch(uVar11 - 0x30) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
uVar14 = uVar11 - 0x30 | uVar14 << 4;
break;
default:
goto switchD_8f630db0_caseD_a;
case 0x11:
case 0x12:
case 0x13:
case 0x14:
case 0x15:
case 0x16:
uVar14 = uVar11 - 0x37 | uVar14 << 4;
break;
case 0x31:
case 0x32:
case 0x33:
case 0x34:
case 0x35:
case 0x36:
uVar14 = uVar11 - 0x57 | uVar14 << 4;
}
param_1 = param_1 + 1;
uVar11 = (uint)*param_1;
} while (uVar11 != 0);
}
switchD_8f630db0_caseD_a:
DAT_8f72d200 = 1;
FUN_8f63e068(auStack_80,0x40,s_DATA_08x_8f66c2e4,uVar14);
pcVar2 = DAT_8f732ac4;
uVar3 = FUN_8f63e9a0(auStack_80);
iVar4 = (*pcVar2)(auStack_80,uVar3);
if (iVar4 < 0) goto LAB_8f630fa0;
DAT_8f72e580 = DAT_8f72e5f0;
FUN_8f6304e4(uVar14,0x1c);
if (((*DAT_8f72e580 == -0x12d900c6) && (DAT_8f72e580[1] == 1)) && (DAT_8f72e580[2] == 0xc001c)) {
FUN_8f63cbb4(s_Is_sparse_header__8f66c47c);
piVar5 = DAT_8f72e580;
FUN_8f63cbb4(s_____Sparse_Image_Header_____8f66c490);
FUN_8f63cbb4(s_magic__0x_x_8f66c4b0,*piVar5);
FUN_8f63cbb4(s_major_version__0x_x_8f66c4c0,*(undefined2 *)(piVar5 + 1));
FUN_8f63cbb4(s_minor_version__0x_x_8f66c4d8,*(undefined2 *)((int)piVar5 + 6));
FUN_8f63cbb4(s_file_hdr_sz___d_8f66c4f0,*(undefined2 *)(piVar5 + 2));
FUN_8f63cbb4(s_chunk_hdr_sz___d_8f66c504,*(undefined2 *)((int)piVar5 + 10));
FUN_8f63cbb4(s_blk_sz___d_8f66c518,piVar5[3]);
FUN_8f63cbb4(s_total_blks___d_8f66c524,piVar5[4]);
FUN_8f63cbb4(s_total_chunks___d_8f66c534,piVar5[5]);
uVar15 = piVar5[3];
uVar11 = (uint)((ulonglong)(uint)piVar5[4] * (ulonglong)uVar15);
uVar7 = (uint)((ulonglong)(uint)piVar5[4] * (ulonglong)uVar15 >> 0x20);
bVar18 = DAT_8f72e574 <= uVar7;
if (uVar7 == DAT_8f72e574) {
bVar18 = DAT_8f72e570 <= uVar11;
}
if (bVar18 && (uVar7 != DAT_8f72e574 || uVar11 != DAT_8f72e570)) {
FUN_8f63cbb4(s_size_too_large___total_blks___bl_8f66c2f0);
FUN_8f630b14(&DAT_8f6654d4,s_size_too_large_8f66aeb4);
goto LAB_8f630fa0;
}
if (*(short *)(piVar5 + 2) != 0x1c) {
FUN_8f63cbb4(s_sparse_header_size_mismatch__STO_8f66c338);
FUN_8f630b14(&DAT_8f6654d4,s_sparse_header_size_mismatch_8f66b034);
goto LAB_8f630fa0;
}
if (*(short *)((int)piVar5 + 10) != 0xc) {
FUN_8f63cbb4(s_chunk_header_size_mismatch__STOP_8f66c360);
FUN_8f630b14(&DAT_8f6654d4,s_chunk_header_size_mismatch_8f66afdc);
goto LAB_8f630fa0;
}
if (uVar15 == 0) {
FUN_8f63cbb4(s_Invalid_block_size__STOP_HERE_8f66c388);
FUN_8f630b14(&DAT_8f6654d4,s_Invalid_block_size_8f66aff8);
goto LAB_8f630fa0;
}
iVar4 = piVar5[5];
if (iVar4 != 0) {
if (DAT_8f72e578 != 3) {
uVar11 = 0;
iVar17 = 0;
do {
FUN_8f6304e4(uVar14,0xc);
iVar16 = DAT_8f72e580[1];
uVar9 = uVar15 * iVar16;
lVar1 = (ulonglong)uVar11 * (ulonglong)uVar15 + (ulonglong)uVar9;
uVar7 = (uint)lVar1;
uVar8 = (uint)((ulonglong)lVar1 >> 0x20);
bVar18 = DAT_8f72e574 <= uVar8;
if (uVar8 == DAT_8f72e574) {
bVar18 = DAT_8f72e570 <= uVar7;
}
if (bVar18 && (uVar8 != DAT_8f72e574 || uVar7 != DAT_8f72e570)) {
FUN_8f63cbb4(s_Chunk_data_size_exceeds_partitio_8f66c3a8);
FUN_8f630b14(&DAT_8f6654d4,s_Chunk_data_size_exceeds_partitio_8f66b00c);
goto LAB_8f630fa0;
}
switch(*(undefined2 *)DAT_8f72e580) {
case 0xcac1:
FUN_8f6304e4(uVar14,uVar9);
lVar1 = (ulonglong)uVar11 * (ulonglong)uVar15 + CONCAT44(DAT_8f72e5b4,DAT_8f72e5b0);
iVar10 = FUN_8f60f704((int)lVar1,(int)((ulonglong)lVar1 >> 0x20));
if (iVar10 == 0) goto switchD_8f631184_caseD_cac3;
FUN_8f63cbb4(s_flash_write_failure_at_CHUNK_TYP_8f66c3dc);
FUN_8f630b14(&DAT_8f6654d4,s_flash_write_failure_8f66aed8);
goto LAB_8f630fa0;
case 0xcac2:
piVar5 = (int *)FUN_8f63e150(0x40,uVar15 + 0x3f & 0xffffffc0);
if (piVar5 == (int *)0x0) {
FUN_8f63cbb4(s_Malloc_failed_for__CHUNK_TYPE_FI_8f66c410);
FUN_8f630b14(&DAT_8f6654d4,s_Malloc_failed_for__CHUNK_TYPE_FI_8f66b0bc);
goto LAB_8f630fa0;
}
FUN_8f6304e4(uVar14,4);
iVar10 = *DAT_8f72e580;
if (uVar15 >> 2 != 0) {
piVar12 = piVar5;
do {
piVar13 = piVar12 + 1;
*piVar12 = iVar10;
piVar12 = piVar13;
} while (piVar13 != (int *)((uVar15 & 0xfffffffc) + (int)piVar5));
}
if (iVar16 != 0) {
iVar10 = 0;
do {
lVar1 = (ulonglong)uVar11 * (ulonglong)uVar15 + CONCAT44(DAT_8f72e5b4,DAT_8f72e5b0);
iVar6 = FUN_8f60f704((int)lVar1,(int)((ulonglong)lVar1 >> 0x20));
if (iVar6 != 0) {
FUN_8f63cbb4(s_flash_write_failure_at_CHUNK_TYP_8f66c440);
FUN_8f630b14(&DAT_8f6654d4,s_flash_write_failure_8f66aed8);
FUN_8f63e200(piVar5);
goto LAB_8f630fa0;
}
iVar10 = iVar10 + 1;
} while (iVar10 != iVar16);
}
FUN_8f63e200(piVar5);
break;
case 0xcac3:
switchD_8f631184_caseD_cac3:
uVar11 = uVar11 + iVar16;
break;
case 0xcac4:
uVar11 = uVar11 + iVar16;
FUN_8f6304e4(uVar14,uVar9);
}
iVar17 = iVar17 + 1;
if (iVar17 == iVar4) goto LAB_8f6313f0;
} while (DAT_8f72e578 != 3);
}
DAT_8f72e57c = 0;
DAT_8f72e560 = 0;
DAT_8f72d200 = 0;
DAT_8f72e5a4 = 0;
DAT_8f72e564 = 0;
DAT_8f72e5b0 = 0;
DAT_8f72e5b4 = 0;
DAT_8f72e570 = 0;
DAT_8f72e574 = 0;
goto LAB_8f630fa0;
}
LAB_8f6313f0:
iVar4 = FUN_8f63e6f4(&DAT_8f72e584,s_userdata_8f663458);
if (iVar4 == 0) {
DAT_8f72d240 = DAT_8f72d240 & 0xfffffffe;
}
iVar4 = FUN_8f63e6f4(&DAT_8f72e584,s_cache_8f663464);
if (iVar4 == 0) {
DAT_8f72d240 = DAT_8f72d240 & 0xfffffffd;
}
iVar4 = FUN_8f63e6f4(&DAT_8f72e584,&DAT_8f66346c);
if (iVar4 == 0) {
DAT_8f72d240 = DAT_8f72d240 & 0xfffffffb;
}
iVar4 = FUN_8f63e6f4(&DAT_8f72e584,&DAT_8f663470);
if (iVar4 == 0) {
DAT_8f72d240 = DAT_8f72d240 & 0xfffffff7;
}
iVar4 = FUN_8f63e6f4(&DAT_8f72e584,s_system_8f663474);
if (iVar4 == 0) {
FUN_8f62e180();
DAT_8f72d240 = DAT_8f72d240 & 0xffffffef;
}
iVar4 = FUN_8f63e6f4(&DAT_8f72e584,s_persist_8f66347c);
if (iVar4 == 0) {
DAT_8f72d240 = DAT_8f72d240 & 0xffffffdf;
}
DAT_8f72e564 = 1;
}
else {
FUN_8f63cbb4(s_Is_not_sparse_header__8f66c548);
FUN_8f63cbb4(s_final_total____d_8f66c560,uVar14 - 0x1c);
FUN_8f6304e4(uVar14,uVar14 - 0x1c);
DAT_8f72e580 = DAT_8f72e5f0;
DAT_8f72e564 = 0;
}
DAT_8f72e544 = uVar14;
FUN_8f630b14(&DAT_8f66c474,s_IMEI____s_8f666cc0 + 0xc);
LAB_8f630fa0:
if (local_2c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f631570(int param_1)
{
code *pcVar1;
undefined4 uVar2;
undefined auStack_80 [108];
int local_14;
local_14 = DAT_8f731d80;
if ((DAT_8f72e578 == 1) && (param_1 != 0)) {
FUN_8f63e068(auStack_80,0x40,s_INFO_s_8f66c574,param_1);
pcVar1 = DAT_8f732ac4;
uVar2 = FUN_8f63e9a0(auStack_80);
(*pcVar1)(auStack_80,uVar2);
}
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f631604(undefined4 param_1)
{
int **ppiVar1;
undefined4 uVar2;
int iVar3;
undefined auStack_54 [64];
int local_14;
local_14 = DAT_8f731d80;
uVar2 = FUN_8f63e9a0();
iVar3 = FUN_8f63ea58(s_Inherit_all_8f70b7a0 + 8,param_1,uVar2);
ppiVar1 = DAT_8f72e548;
if (iVar3 == 0) {
for (; ppiVar1 != (int **)0x0; ppiVar1 = (int **)*ppiVar1) {
FUN_8f63e8d8(auStack_54,ppiVar1[1],0x40);
FUN_8f63e800(auStack_54,s_download__8f66c5c8 + 8,0x40);
FUN_8f63e800(auStack_54,ppiVar1[2],0x40);
FUN_8f631570(auStack_54);
FUN_8f63e410(auStack_54,0,0x40);
}
}
else {
iVar3 = FUN_8f63ea58(s_sofia_support_8f66b614,param_1);
ppiVar1 = DAT_8f72e548;
if (iVar3 == 0) {
DAT_8f72d21c = 1;
}
for (; ppiVar1 != (int **)0x0; ppiVar1 = (int **)*ppiVar1) {
iVar3 = FUN_8f63e6f4(ppiVar1[1],param_1);
if (iVar3 == 0) {
FUN_8f630b14(&DAT_8f66c474,ppiVar1[2]);
goto LAB_8f6316e0;
}
}
}
FUN_8f630b14(&DAT_8f66c474,s_IMEI____s_8f666cc0 + 0xc);
LAB_8f6316e0:
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f631798)
void FUN_8f631758(undefined4 param_1)
{
FUN_8f630b14(&DAT_8f6654d4,param_1);
return;
}
// WARNING: Removing unreachable block (ram,0x8f6317dc)
void FUN_8f63179c(undefined4 param_1)
{
FUN_8f630b14(&DAT_8f66c474,param_1);
return;
}
void FUN_8f6317e0(undefined4 param_1,undefined4 param_2)
{
undefined4 uVar1;
int iVar2;
int iVar3;
undefined auStack_a4 [128];
int local_24;
local_24 = DAT_8f731d80;
DAT_8f72e550 = param_2;
DAT_8f72e580 = param_1;
DAT_8f72e5f0 = param_1;
FUN_8f600e04();
FUN_8f63e758(auStack_a4,s_11111111111111111_8f66c57c);
FUN_8f632d24(auStack_a4,1);
DAT_8f71c6c8 = auStack_a4;
uVar1 = FUN_8f625f78();
iVar2 = FUN_8f63e6f4(uVar1,&DAT_8f66c590);
if (iVar2 == 0) {
FUN_8f63cbb4(s_USB30_needs_to_be_enabled_for_th_8f66c594);
FUN_8f63cce8();
}
else {
DAT_8f732aa0 = FUN_8f60960c;
DAT_8f732aa4 = FUN_8f6097d8;
DAT_8f732aa8 = FUN_8f60983c;
DAT_8f732aac = FUN_8f609b3c;
DAT_8f732ab0 = FUN_8f608ba0;
DAT_8f732ab8 = FUN_8f608c48;
DAT_8f732abc = FUN_8f608ce0;
DAT_8f732ac0 = FUN_8f630888;
DAT_8f732ac4 = FUN_8f630744;
}
(*DAT_8f732aa0)(&DAT_8f71c6b8);
FUN_8f626860(&DAT_8f72e5d4,0,1);
FUN_8f626860(&DAT_8f72e5b8,0,1);
DAT_8f72e568 = (*DAT_8f732ab0)(1,0x200);
if (DAT_8f72e568 == 0) {
LAB_8f631aac:
iVar2 = -1;
}
else {
DAT_8f72e5a8 = (*DAT_8f732ab0)(2,0x200);
if (DAT_8f72e5a8 != 0) {
DAT_8f72e554 = DAT_8f72e568;
DAT_8f72e558 = DAT_8f72e5a8;
DAT_8f72e55c = (*DAT_8f732ab8)();
if (DAT_8f72e55c != 0) {
iVar2 = (*DAT_8f732aa4)(&PTR_LAB_8f71c6d0);
if (iVar2 == 0) {
FUN_8f630a38(s_getvar__8f66c5c0,FUN_8f631604);
FUN_8f630a38(s_download__8f66c5c8,FUN_8f630d80);
FUN_8f630aac(s_version_8f66641c,&DAT_8f66c5d4);
iVar3 = FUN_8f627048(s_fastboot_8f66c5d8,&LAB_8f630bbc,0,0x10,0x1000);
if (iVar3 != 0) {
FUN_8f6272f8();
(*DAT_8f732aa8)();
goto LAB_8f631a20;
}
goto LAB_8f631aac;
}
(*DAT_8f732abc)(DAT_8f72e55c);
}
(*DAT_8f732ab4)(DAT_8f72e5a8);
}
iVar2 = -1;
(*DAT_8f732ab4)(DAT_8f72e568);
}
LAB_8f631a20:
if (local_24 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f631ab8(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
(*DAT_8f732aac)();
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f631afc(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
if (DAT_8f72e578 == 1) {
(*DAT_8f732ac4)();
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f631b58(undefined4 param_1)
{
int iVar1;
undefined4 uVar2;
int iVar3;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f617c44();
iVar3 = FUN_8f617cc4();
if (iVar3 == 0) {
FUN_8f63cbb4(s_ERROR__Partition_table_not_found_8f66a964);
iVar3 = -1;
}
else {
iVar3 = FUN_8f640ccc(iVar3,&DAT_8f66302c);
if (iVar3 == 0) {
FUN_8f63cbb4(s_CDSSIKOOERROR__No_misc_partition_8f66c5f4 + 8);
iVar3 = -1;
}
else {
iVar3 = FUN_8f617d04(iVar3,0,uVar2,&DAT_8f72e5f4,uVar2);
if (iVar3 == 0) {
FUN_8f63e304(param_1,&DAT_8f72e5f4,0x440);
}
else {
FUN_8f63cbb4(s_ERROR__Cannot_read_recovery_head_8f66c61c);
iVar3 = -1;
}
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar3);
}
void FUN_8f631c2c(undefined4 param_1)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f617c44();
iVar3 = FUN_8f601550();
iVar4 = FUN_8f617cc4();
if (iVar4 == 0) {
FUN_8f63cbb4(s_ERROR__Partition_table_not_found_8f66a964);
iVar2 = -1;
}
else {
iVar4 = FUN_8f640ccc(iVar4,&DAT_8f66302c);
if (iVar4 == 0) {
FUN_8f63cbb4(s_CDSSIKOOERROR__No_misc_partition_8f66c5f4 + 8);
iVar2 = -1;
}
else {
iVar5 = FUN_8f617d04(iVar4,0,0,iVar3,iVar2 << 1);
if (iVar5 == 0) {
FUN_8f63e304(iVar3 + iVar2,param_1,0x440);
iVar2 = FUN_8f617fe8(iVar4,0,iVar3,iVar2 << 1);
if (iVar2 != 0) {
FUN_8f63cbb4(s_ERROR__flash_write_fail__8f66c640);
iVar2 = -1;
}
}
else {
FUN_8f63cbb4(s_ERROR__Cannot_read_recovery_head_8f66c61c);
iVar2 = -1;
}
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f631d30(int param_1,undefined4 *param_2)
{
int iVar1;
undefined4 local_28;
undefined4 uStack_24;
int local_1c;
local_1c = DAT_8f731d80;
iVar1 = FUN_8f6050e8(0x1a2,&local_28,0xc);
if (iVar1 == 0) {
if (param_1 == 1) {
*param_2 = local_28;
}
else if (param_1 == 2) {
*param_2 = uStack_24;
}
}
else {
FUN_8f63cbb4(s_ERROR__unable_to_read_shared_mem_8f66c6d4,iVar1);
}
if (local_1c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
return;
}
void FUN_8f631dbc(void)
{
int iVar1;
int iVar2;
undefined *puVar3;
char *pcVar4;
uint local_488;
undefined4 local_484;
undefined4 uStack_480;
undefined auStack_47c [31];
undefined local_45d;
undefined auStack_45c [1056];
undefined auStack_3c [32];
int local_1c;
local_488 = 0;
local_1c = DAT_8f731d80;
iVar1 = FUN_8f631b58(auStack_47c);
if (iVar1 != 0) {
iVar1 = -1;
goto LAB_8f631ea4;
}
local_45d = 0;
iVar2 = FUN_8f63e6f4(s_boot_recovery_8f66c710,auStack_47c);
if (iVar2 == 0) {
puVar3 = auStack_45c;
iVar1 = FUN_8f63e6f4(s_RADIO_8f66c720,puVar3);
if (iVar1 == 0) {
iVar2 = FUN_8f631d30(2,&local_488);
if ((iVar2 == 0) && ((local_488 & 1) != 0)) {
FUN_8f63e8d8(puVar3,&DAT_8f66c474,0x20);
}
else {
FUN_8f63e8d8(auStack_45c,s_failed_update_8f66c728,0x20);
}
puVar3 = auStack_47c;
pcVar4 = s_IMEI____s_8f666cc0 + 0xc;
}
else {
FUN_8f63e8d8(auStack_47c,s_IMEI____s_8f666cc0 + 0xc,0x20);
pcVar4 = &DAT_8f66c474;
iVar1 = iVar2;
}
FUN_8f63e8d8(puVar3,pcVar4,0x20);
FUN_8f631c2c(auStack_47c);
DAT_8f72f5f4 = 1;
goto LAB_8f631ea4;
}
iVar2 = FUN_8f63e6f4(s_update_radio_8f66c738,auStack_47c);
if (iVar2 != 0) goto LAB_8f631ea4;
FUN_8f63e8d8(auStack_3c,&DAT_8f66c748,0x20);
local_484 = s_CDSSIKOOERROR__No_misc_partition_8f66c5f4._0_4_;
uStack_480 = s_CDSSIKOOERROR__No_misc_partition_8f66c5f4._4_4_;
iVar1 = FUN_8f617c44();
iVar2 = FUN_8f617cc4();
if (iVar2 == 0) {
FUN_8f63cbb4(s_ERROR__Partition_table_not_found_8f66a964);
LAB_8f631fe4:
FUN_8f63e8d8(auStack_47c,s_IMEI____s_8f666cc0 + 0xc,0x20);
FUN_8f63e8d8(auStack_45c,s_failed_update_8f66c728,0x20);
}
else {
iVar2 = FUN_8f640ccc(iVar2,auStack_3c);
if (iVar2 == 0) {
FUN_8f63cbb4(s_ERROR__No__s_partition_found_8f66c6b4,auStack_3c);
goto LAB_8f631fe4;
}
iVar1 = FUN_8f617fe8(iVar2,0,&local_484,iVar1 + 7U & ~(iVar1 - 1U));
if (iVar1 != 0) {
FUN_8f63cbb4(s_ERROR__flash_write_fail__8f66c640);
goto LAB_8f631fe4;
}
FUN_8f63e8d8(auStack_47c,s_boot_recovery_8f66c710,0x20);
FUN_8f63e8d8(auStack_45c,s_RADIO_8f66c720,0x20);
}
iVar1 = 0;
FUN_8f631c2c(auStack_47c);
DAT_8f72f5f4 = 1;
FUN_8f600804(0);
LAB_8f631ea4:
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
void FUN_8f63203c(void)
{
undefined4 uVar1;
int iVar2;
int iVar3;
longlong lVar4;
undefined auStack_628 [1528];
undefined *local_30;
uint local_28;
int local_24;
local_28 = 0;
local_24 = DAT_8f731d80;
uVar1 = FUN_8f60f6b0();
iVar2 = FUN_8f63e150(0x40,uVar1);
if (iVar2 == 0) {
local_30 = &DAT_8f66c768;
FUN_8f63cce8();
}
uVar1 = FUN_8f60f6b0();
iVar3 = FUN_8f607810(&DAT_8f66302c);
if (iVar3 < 0) {
FUN_8f63cbb4(s__s__Partition_not_found_8f66c76c,&DAT_8f66302c);
}
else {
lVar4 = FUN_8f60793c();
FUN_8f6079b4(iVar3);
FUN_8f60ff88();
if (lVar4 == 0) {
FUN_8f63cbb4(s_partition__s_doesn_t_exist_8f66c788,&DAT_8f66302c);
}
else {
iVar3 = FUN_8f60f940((int)lVar4,(int)((ulonglong)lVar4 >> 0x20));
if (iVar3 == 0) {
*(undefined *)(iVar2 + 0x1f) = 0;
iVar3 = FUN_8f63e6f4(iVar2,s_boot_recovery_8f66c710);
if (iVar3 == 0) {
DAT_8f72f5f4 = 1;
}
iVar3 = FUN_8f63e6f4(s_update_radio_8f66c738,iVar2);
if (iVar3 == 0) {
iVar3 = FUN_8f631d30(2,&local_28);
if ((iVar3 == 0) && ((local_28 & 1) != 0)) {
FUN_8f63e8d8(iVar2 + 0x20,&DAT_8f66c474,0x20);
}
else {
FUN_8f63e8d8(iVar2 + 0x20,s_failed_update_8f66c728,0x20);
}
DAT_8f72f5f4 = 1;
}
iVar3 = FUN_8f63e6f4(s_reset_device_info_8f66c7bc,iVar2);
if (iVar3 == 0) {
FUN_8f62c938();
}
iVar3 = FUN_8f63e6f4(s_root_detect_8f66c7d0,iVar2);
if (iVar3 == 0) {
FUN_8f62c98c();
FUN_8f63e8d8(iVar2,s_IMEI____s_8f666cc0 + 0xc,0x20);
uVar1 = FUN_8f607810(&DAT_8f66302c);
lVar4 = FUN_8f60793c();
FUN_8f6079b4(uVar1);
FUN_8f60ff88();
if (lVar4 == 0) {
FUN_8f63cbb4(s_partition__s_doesn_t_exist_8f66c788,&DAT_8f66302c);
}
else {
FUN_8f63e304(auStack_628,iVar2,0x440);
iVar3 = FUN_8f60f704((int)lVar4,(int)((ulonglong)lVar4 >> 0x20),0x600,auStack_628);
if (iVar3 != 0) {
FUN_8f63cbb4(s_mmc_write_failure__s__d_8f66c7dc,&DAT_8f66302c,0x440);
}
}
}
FUN_8f63e200(iVar2);
uVar1 = 0;
goto LAB_8f632150;
}
FUN_8f63cbb4(s_mmc_read_failure__s__d_8f66c7a4,&DAT_8f66302c,uVar1);
}
}
if (iVar2 == 0) {
uVar1 = 0xffffffff;
}
else {
FUN_8f63e200(iVar2);
uVar1 = 0xffffffff;
}
LAB_8f632150:
if (local_24 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar1);
}
void FUN_8f632320(int param_1,int param_2,int param_3)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
undefined4 uVar5;
uint uVar6;
longlong lVar7;
undefined8 uVar8;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f601550();
if ((param_2 == 0 || param_3 == 0) || (iVar2 == 0)) {
uVar5 = 0xffffffff;
goto LAB_8f6323f0;
}
iVar3 = FUN_8f625e60();
if (iVar3 == 0) {
iVar3 = FUN_8f617c44();
iVar4 = FUN_8f617cc4();
if (iVar4 == 0) {
FUN_8f63cbb4(s_ERROR__mdtp_Partition_table_not_f_8f66d6b8 + 0xc);
uVar5 = 0xffffffff;
goto LAB_8f6323f0;
}
iVar4 = FUN_8f640ccc(iVar4,&DAT_8f66302c);
if (iVar4 == 0) goto LAB_8f6324d8;
uVar6 = -iVar3 & param_3 + -1 + iVar3;
if (*(uint *)(iVar4 + 0x14) < uVar6 + param_1 * iVar3) goto LAB_8f6324bc;
if (iVar2 != param_2) {
FUN_8f63e304(iVar2,param_2,param_3);
}
iVar2 = FUN_8f617fe8(iVar4,param_1 * iVar3,iVar2,uVar6);
if (iVar2 != 0) {
FUN_8f63cbb4(s_Writing_flash_failed_8f66c850);
uVar5 = 0xffffffff;
goto LAB_8f6323f0;
}
}
else {
iVar3 = FUN_8f607810(&DAT_8f66302c);
if (iVar3 == -1) {
LAB_8f6324d8:
FUN_8f63cbb4(s_No___s__partition_found_8f66c7f8,&DAT_8f66302c);
uVar5 = 0xffffffff;
goto LAB_8f6323f0;
}
lVar7 = FUN_8f60793c();
uVar8 = FUN_8f6078c4(iVar3);
uVar6 = param_3 + 0x1ffU & 0xfffffe00;
if ((int)((ulonglong)uVar8 >> 0x20) == 0 && (uint)uVar8 < uVar6 + param_1 * 0x200) {
LAB_8f6324bc:
FUN_8f63cbb4(s_Write_request_out_of___s__bounda_8f66c814,&DAT_8f66302c);
uVar5 = 0xffffffff;
goto LAB_8f6323f0;
}
if (iVar2 != param_2) {
FUN_8f63e304(iVar2,param_2,param_3);
}
lVar7 = lVar7 + (ulonglong)(uint)(param_1 * 0x200);
iVar2 = FUN_8f60f704((int)lVar7,(int)((ulonglong)lVar7 >> 0x20),uVar6,iVar2);
if (iVar2 != 0) {
FUN_8f63cbb4(s_Writing_MMC_failed_8f66c83c);
uVar5 = 0xffffffff;
goto LAB_8f6323f0;
}
}
uVar5 = 0;
LAB_8f6323f0:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar5);
}
void FUN_8f632520(undefined4 param_1,uint param_2)
{
int iVar1;
uint uVar2;
int iVar3;
int iVar4;
undefined4 uVar5;
int iVar6;
undefined8 uVar7;
undefined8 uVar8;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f62f4d8();
if (param_2 < uVar2 && 7 < param_2) {
iVar3 = FUN_8f63e114();
if (iVar3 != 0) {
FUN_8f62f4d8();
if (uVar2 == 0) {
LAB_8f63267c:
FUN_8f63cbb4(s_Error_reading_MISC_partition_8f66c938);
iVar4 = -1;
}
else {
iVar4 = FUN_8f625e60();
if (iVar4 == 0) {
FUN_8f63cbb4(s_Misc_partition_not_supported_for_8f66c8e4);
goto LAB_8f63267c;
}
iVar4 = FUN_8f607810(&DAT_8f66302c);
if (iVar4 == -1) {
FUN_8f63cbb4(s_No___s__partition_found_8f66c7f8,&DAT_8f66302c);
goto LAB_8f63267c;
}
uVar7 = FUN_8f60793c();
uVar8 = FUN_8f6078c4(iVar4);
FUN_8f6079b4(iVar4);
FUN_8f60ff88();
if ((int)((ulonglong)uVar8 >> 0x20) == 0 && (uint)uVar8 < uVar2) {
FUN_8f63cbb4(s_Read_request_out_of___s__boundar_8f66c8bc,&DAT_8f66302c);
goto LAB_8f63267c;
}
iVar4 = FUN_8f60f940((int)uVar7,(int)((ulonglong)uVar7 >> 0x20),iVar3,uVar2);
if (iVar4 != 0) {
FUN_8f63cbb4(s_Reading_MMC_failed_8f66b6a8);
goto LAB_8f63267c;
}
*(undefined *)(iVar3 + param_2) = 0;
uVar5 = FUN_8f63e9a0(s_ffbm__8f66c958);
iVar6 = FUN_8f63ea58(s_ffbm__8f66c958,iVar3,uVar5);
if (iVar6 == 0) {
uVar2 = FUN_8f63e8d8(param_1,iVar3,param_2);
if (uVar2 < 7) {
FUN_8f63cbb4(s_Invalid_string_in_misc_partition_8f66c914);
iVar4 = -1;
}
else {
iVar4 = 1;
}
}
}
FUN_8f63e200(iVar3);
goto LAB_8f632624;
}
FUN_8f63cbb4(s_Failed_to_alloc_buffer_for_ffbm_c_8f66c894);
}
else {
FUN_8f63cbb4(s_Invalid_size_argument_passed_to_g_8f66c868);
}
iVar4 = -1;
LAB_8f632624:
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar4);
}
return;
}
void FUN_8f6326f8(undefined4 param_1,int param_2)
{
int iVar1;
undefined4 uVar2;
char *pcVar3;
int iVar4;
longlong lVar5;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f607810(s_asus_nvm_8f66c9c0);
lVar5 = FUN_8f60793c();
if (lVar5 == 0) {
pcVar3 = s__s__idx__d___No_asus_nvm_partiti_8f66c9cc;
}
else {
FUN_8f6079b4(uVar2);
FUN_8f60ff88();
lVar5 = lVar5 + (ulonglong)(param_2 << 8 & 0xfffff000);
iVar4 = FUN_8f60f940((int)lVar5,(int)((ulonglong)lVar5 >> 0x20),&DAT_8f72f600,0x1000);
if (iVar4 == 0) {
FUN_8f63e304(param_1,&DAT_8f72f600 + (param_2 << 8 & 0xfff),0x100);
goto LAB_8f6327b0;
}
pcVar3 = s__s__idx__d___Cannot_read_form_em_8f66c9f8;
}
FUN_8f63cbb4(pcVar3,s_read_mmc_nvmdata_by_idx_8f66c980);
FUN_8f63cbb4(s__If_no_key_pressed__Your_device_w_8f66693c + 0x38);
iVar4 = -1;
LAB_8f6327b0:
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar4);
}
return;
}
void FUN_8f6327f8(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int iVar1;
undefined auStack_114 [256];
int local_14;
local_14 = DAT_8f731d80;
iVar1 = FUN_8f6326f8(auStack_114,param_3);
if (iVar1 == 0) {
FUN_8f63e410(param_2,0,0x80);
iVar1 = FUN_8f61db0c(auStack_114,param_2);
if (iVar1 == 0x80) {
iVar1 = 0;
}
}
else {
iVar1 = -1;
}
if (local_14 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
void FUN_8f63286c(int param_1,int param_2)
{
int iVar1;
undefined4 uVar2;
char *pcVar3;
int iVar4;
undefined4 uVar5;
undefined4 uVar6;
longlong lVar7;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f607810(s_asus_nvm_8f66c9c0);
lVar7 = FUN_8f60793c();
if (lVar7 == 0) {
pcVar3 = s__s__idx__d___No_asus_nvm_partiti_8f66c9cc;
}
else {
FUN_8f6079b4(uVar2);
FUN_8f60ff88();
lVar7 = lVar7 + (ulonglong)(param_2 << 8 & 0xfffff000);
uVar2 = (undefined4)lVar7;
uVar6 = (undefined4)((ulonglong)lVar7 >> 0x20);
iVar4 = FUN_8f60f940(uVar2,uVar6,&DAT_8f72f600,0x1000);
if (iVar4 == 0) {
if (param_1 == 1) {
uVar5 = 0x31;
}
else {
uVar5 = 0x30;
}
FUN_8f63e410(&DAT_8f72f600 + (param_2 << 8 & 0xfff),uVar5,5);
iVar4 = FUN_8f60f704(uVar2,uVar6,0x1000,&DAT_8f72f600);
if (iVar4 == 0) goto LAB_8f632940;
}
pcVar3 = s__s__idx__d___Cannot_read_form_em_8f66c9f8;
}
FUN_8f63cbb4(pcVar3,s_set_reset_flag_8f66cc54);
FUN_8f63cbb4(s__If_no_key_pressed__Your_device_w_8f66693c + 0x38);
iVar4 = -1;
LAB_8f632940:
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar4);
}
return;
}
void FUN_8f632988(undefined4 param_1)
{
int iVar1;
uint uVar2;
undefined auStack_10c [256];
int local_c;
local_c = DAT_8f731d80;
iVar1 = FUN_8f6326f8(auStack_10c,param_1);
if (iVar1 == 0) {
uVar2 = FUN_8f63e524(auStack_10c,s_11111111111111111_8f66c57c + 0xc,5);
iVar1 = 1 - uVar2;
if (1 < uVar2) {
iVar1 = 0;
}
}
else {
iVar1 = -1;
}
if (local_c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
void FUN_8f6329f4(int param_1,int param_2)
{
int iVar1;
undefined4 uVar2;
char *pcVar3;
int iVar4;
undefined4 uVar5;
undefined4 uVar6;
longlong lVar7;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f607810(s_asus_nvm_8f66c9c0);
lVar7 = FUN_8f60793c();
if (lVar7 == 0) {
pcVar3 = s__s__idx__d___No_asus_nvm_partiti_8f66c9cc;
}
else {
FUN_8f6079b4(uVar2);
FUN_8f60ff88();
lVar7 = lVar7 + (ulonglong)(param_2 << 8 & 0xfffff000);
uVar2 = (undefined4)lVar7;
uVar6 = (undefined4)((ulonglong)lVar7 >> 0x20);
iVar4 = FUN_8f60f940(uVar2,uVar6,&DAT_8f72f600,0x1000);
if (iVar4 == 0) {
if (param_1 == 1) {
if (param_2 == 10) {
uVar5 = 0x31;
}
else {
uVar5 = 0x32;
}
FUN_8f63e410(&DAT_8f72f600 + (param_2 << 8 & 0xfff),uVar5,5);
}
else {
FUN_8f63e410(&DAT_8f72f600 + (param_2 << 8 & 0xfff),0x30,5);
}
iVar4 = FUN_8f60f704(uVar2,uVar6,0x1000,&DAT_8f72f600);
if (iVar4 == 0) goto LAB_8f632ac8;
}
pcVar3 = s__s__idx__d___Cannot_read_form_em_8f66c9f8;
}
FUN_8f63cbb4(pcVar3,s_set_asusnvm_flag_8f66c998);
FUN_8f63cbb4(s__If_no_key_pressed__Your_device_w_8f66693c + 0x38);
iVar4 = -1;
LAB_8f632ac8:
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar4);
}
return;
}
void FUN_8f632b28(int param_1)
{
int iVar1;
char *pcVar2;
undefined4 uVar3;
undefined auStack_114 [256];
int local_14;
local_14 = DAT_8f731d80;
iVar1 = FUN_8f6326f8(auStack_114,param_1);
if (iVar1 == 0) {
iVar1 = FUN_8f63e524(auStack_114,s_11111111111111111_8f66c57c + 0xc,5);
if (iVar1 == 0) {
FUN_8f63cbb4(s__s__factory_adb_value_on_8f66ca1c,s_read_asusnvm_flag_8f66c9ac);
FUN_8f63cbb4(s__If_no_key_pressed__Your_device_w_8f66693c + 0x38);
FUN_8f6329f4(0,param_1);
uVar3 = 1;
}
else {
iVar1 = FUN_8f63e524(auStack_114,s_22222_8f66ca38,5);
if (iVar1 == 0) {
FUN_8f63cbb4(s__s__CTS_adb_value_always_on_8f66ca40,s_read_asusnvm_flag_8f66c9ac);
FUN_8f63cbb4(s__If_no_key_pressed__Your_device_w_8f66693c + 0x38);
uVar3 = 1;
}
else {
if (param_1 == 10) {
pcVar2 = s__s__factory_adb_value_off_8f66ca5c;
}
else {
pcVar2 = s__s__CTS_adb_value_off_8f66ca78;
}
FUN_8f63cbb4(pcVar2,s_read_asusnvm_flag_8f66c9ac);
FUN_8f63cbb4(s__If_no_key_pressed__Your_device_w_8f66693c + 0x38);
FUN_8f6329f4(0,param_1);
uVar3 = 0;
}
}
}
else {
uVar3 = 0xffffffff;
}
if (local_14 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
return;
}
void FUN_8f632c50(char *param_1,uint param_2,char *param_3)
{
char *pcVar1;
int iVar2;
uint uVar3;
undefined auStack_9c [128];
int local_1c;
pcVar1 = param_1;
uVar3 = param_2;
if ((char *)0xbff < param_1) {
uVar3 = 0xcc30;
pcVar1 = s__s__Index_number___d__is_invalid_8f66ca90;
param_3 = param_1;
}
local_1c = DAT_8f731d80;
if ((char *)0xbff >= param_1) {
iVar2 = FUN_8f6327f8(s__dev_block_bootdevice_by_name_as_8f66cac4,auStack_9c,param_1);
if (iVar2 == 0) {
FUN_8f63cbb4(s__s__idx__d___Read_success__value_8f66cb0c,s_aboot_asus_nvm_read_8f66cc30,
param_1,auStack_9c);
FUN_8f63cbb4(s__If_no_key_pressed__Your_device_w_8f66693c + 0x38);
FUN_8f63e304(param_2,auStack_9c,0x80);
goto LAB_8f632ce0;
}
pcVar1 = s__s__idx__d___Can_t_get_data__8f66caec;
uVar3 = 0xcc30;
param_3 = param_1;
}
FUN_8f63cbb4(pcVar1,uVar3 & 0xffff | 0x8f660000,param_3);
FUN_8f63cbb4(s__If_no_key_pressed__Your_device_w_8f66693c + 0x38);
iVar2 = -1;
LAB_8f632ce0:
if (local_1c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
return;
}
void FUN_8f632d24(undefined4 param_1,int param_2)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
FUN_8f63e758(param_1,s_IMEI____s_8f666cc0 + 0xc);
iVar2 = FUN_8f632c50(1,param_1);
if (iVar2 != 0) {
FUN_8f63e758(param_1,s_unknown_8f66cb34);
}
if ((param_2 == 0) || (iVar2 = FUN_8f63e6f4(param_1,s_unknown_8f66cb34), iVar2 == 0)) {
if (iVar1 == DAT_8f731d80) {
FUN_8f63e758(param_1,s_11111111111111111_8f66c57c);
return;
}
}
else if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f632ddc(undefined4 param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
FUN_8f63e758(param_1,s_IMEI____s_8f666cc0 + 0xc);
iVar2 = FUN_8f632c50(0xc,param_1);
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
return;
}
}
else if (iVar1 == DAT_8f731d80) {
FUN_8f63e758(param_1,s_unknown_8f66cb34);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f632e54(undefined4 param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
FUN_8f63e758(param_1,s_IMEI____s_8f666cc0 + 0xc);
iVar2 = FUN_8f632c50(0x11,param_1);
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
return;
}
}
else if (iVar1 == DAT_8f731d80) {
FUN_8f63e758(param_1,s_unknown_8f66cb34);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f632ecc(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
int iVar1;
int iVar2;
int iVar3;
undefined auStack_9c [128];
int local_1c;
local_1c = DAT_8f731d80;
iVar1 = FUN_8f632c50(param_1,auStack_9c);
if (iVar1 == 0) {
iVar1 = FUN_8f63e9a0(param_3);
iVar2 = FUN_8f63e9a0(param_2);
iVar3 = FUN_8f63e9a0(auStack_9c);
if ((uint)(iVar1 + iVar2 + 3 + iVar3) < 0x100) {
FUN_8f63e608(param_3,&DAT_8f66cb70);
FUN_8f63e608(param_3,param_2);
FUN_8f63e608(param_3,&DAT_8f6ffc9c);
FUN_8f63e608(param_3,auStack_9c);
}
else {
FUN_8f63cbb4(s__s__ERROR__extra_prop_len___add_p_8f66cb3c,s_cat_extra_prop_8f66cc44,param_2);
FUN_8f63cbb4(s__If_no_key_pressed__Your_device_w_8f66693c + 0x38);
}
}
else {
FUN_8f63e608(param_3,&DAT_8f66cb70);
FUN_8f63e608(param_3,param_2);
FUN_8f63e608(param_3,&DAT_8f6ffc9c);
}
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f632fdc(undefined4 param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f63e758(param_1,s_IMEI____s_8f666cc0 + 0xc);
FUN_8f632ecc(0,s_ro_isn_8f66cb78,param_1);
FUN_8f632ecc(2,s_ro_config_versatility_8f66cb80,param_1);
FUN_8f632ecc(3,s_ro_config_CID_8f66cb98,param_1);
if (iVar1 == DAT_8f731d80) {
FUN_8f632ecc(4,s_ro_config_idcode_8f66cba8,param_1);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f633070(undefined4 param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
FUN_8f63e758(param_1,s_IMEI____s_8f666cc0 + 0xc);
iVar2 = FUN_8f632c50(0x15,param_1);
if (iVar2 != 0) {
FUN_8f63cbb4(s__s__ERROR__Read_asus_key_form_as_8f66cbbc,s_get_asus_key_8f66c960);
FUN_8f63cbb4(s__If_no_key_pressed__Your_device_w_8f66693c + 0x38);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2 == 0);
}
void FUN_8f6330f0(undefined4 param_1)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
FUN_8f63e758(param_1,s_IMEI____s_8f666cc0 + 0xc);
iVar2 = FUN_8f632c50(0,param_1);
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
return;
}
}
else if (iVar1 == DAT_8f731d80) {
FUN_8f63e758(param_1,s_unknown_8f66cb34);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f633168(void)
{
int iVar1;
undefined4 uVar2;
undefined4 uVar3;
char *pcVar4;
int iVar5;
int *piVar6;
longlong lVar7;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f63e114(0x80);
uVar3 = FUN_8f607810(&DAT_8f66cbe8);
lVar7 = FUN_8f60793c();
if (lVar7 == 0) {
pcVar4 = s__s__partition_table_doesn_t_exis_8f66cbec;
}
else {
iVar5 = FUN_8f6078c4(uVar3);
piVar6 = (int *)FUN_8f63e150(0x40,iVar5 + 0x3fU & 0xffffffc0);
iVar5 = FUN_8f60f940((int)lVar7,(int)((ulonglong)lVar7 >> 0x20),piVar6,iVar5);
if (iVar5 == 0) {
if (piVar6[0x20] == 0x73189019) {
if (*piVar6 == 0x4308e79) {
pcVar4 = s_Enable_8f66a1cc;
if (piVar6[0x1c] == 0x42e9c311) {
pcVar4 = s_Disable_8f66a1c4;
}
}
else {
pcVar4 = s_Enable_8f66a1cc;
}
FUN_8f63e758(uVar2,pcVar4);
}
else {
FUN_8f63e758(uVar2,s_Disable_8f66a1c4);
}
FUN_8f63e200(piVar6);
goto LAB_8f633228;
}
pcVar4 = s__s__Cannot_read_frp_partition_8f66cc10;
}
FUN_8f63cbb4(pcVar4,s_read_frp_status_8f66c970);
FUN_8f63cbb4(s__If_no_key_pressed__Your_device_w_8f66693c + 0x38);
uVar2 = 0;
LAB_8f633228:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f6332c0(int param_1,int param_2)
{
int iVar1;
undefined auStack_8c [112];
int local_1c;
local_1c = DAT_8f731d80;
if (param_1 == 0) {
FUN_8f63cce8();
}
if (param_2 == 0) {
FUN_8f63cce8();
}
FUN_8f65b034(auStack_8c);
FUN_8f65b0e4(auStack_8c,param_1,0x13cb0);
FUN_8f65b128(param_1 + 0x13cb0,auStack_8c);
FUN_8f6254b4(param_1,0x13cd0);
FUN_8f6254dc(param_2,0x13cd0);
iVar1 = FUN_8f6197f0(param_1,0x13cd0,param_2,0x13cd0,0);
if (iVar1 == 0) {
FUN_8f6254dc(param_2,0x13cd0);
}
else {
FUN_8f63cbb4(s_mdtp__mdtp_tzbsp_enc_hash_DIP__E_8f66cc98);
iVar1 = -1;
}
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar1);
}
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f633400(byte *param_1)
{
uint uVar1;
undefined4 uVar2;
int iVar3;
uint *puVar4;
int iVar5;
char *pcVar6;
int iVar7;
int iVar8;
undefined4 *puVar9;
int iVar10;
byte bVar11;
uint extraout_r1;
uint uVar12;
uint *puVar13;
uint uVar14;
uint uVar15;
uint *puVar16;
uint uVar17;
uint uVar18;
uint uVar19;
uint uVar20;
char *pcVar21;
uint uVar22;
int iVar23;
uint uVar24;
bool bVar25;
bool bVar26;
longlong lVar27;
char *pcVar28;
char *local_11c;
uint local_100;
int local_e4;
uint local_e0;
int local_c4;
undefined4 local_c0;
undefined4 local_bc;
uint uStack_b8;
undefined2 local_b4;
char *local_4c [4];
char *local_3c;
char *local_38;
char *local_34;
char *local_30;
int local_2c;
local_2c = DAT_8f731d80;
iVar3 = FUN_8f6354f8();
if (iVar3 != 0) {
FUN_8f63cbb4(s_mdtp__mdtp_img__ERROR__image_fil_8f66ccd4);
FUN_8f6351ec();
}
DAT_8f71c6e8 = 0;
if (param_1 == (byte *)0x0) {
FUN_8f63cbb4(s_mdtp__mdtp_fwlock_verify_lock__E_8f66cd0c);
FUN_8f634544();
goto LAB_8f633460;
}
iVar3 = FUN_8f635268(&local_c4);
if (iVar3 != 0) {
FUN_8f63cbb4(s_mdtp__mdtp_fwlock_verify_lock__E_8f66cd50);
FUN_8f634544();
}
if (local_c4 == 0) goto LAB_8f633460;
iVar3 = FUN_8f60f6b0();
uVar19 = -iVar3 & iVar3 + 0x13ccfU;
iVar3 = FUN_8f63e114(uVar19);
if (iVar3 == 0) {
FUN_8f63cbb4(s_mdtp__validate_DIP_and_firmware__8f66cd90);
FUN_8f634544();
}
puVar4 = (uint *)FUN_8f63e114(uVar19);
if (puVar4 == (uint *)0x0) {
FUN_8f63cbb4(s_mdtp__validate_DIP_and_firmware__8f66cd90);
FUN_8f63e200(iVar3);
FUN_8f634544();
}
iVar5 = FUN_8f60f6b0();
if (iVar3 == 0) {
FUN_8f63cce8();
}
FUN_8f607810(&DAT_8f66cdd0);
lVar27 = FUN_8f60793c();
if (lVar27 == 0) {
LAB_8f633be0:
FUN_8f63cbb4(s_mdtp__validate_DIP_and_firmware__8f66d5ec);
FUN_8f634544();
}
else {
iVar5 = FUN_8f60f940((int)lVar27,(int)((ulonglong)lVar27 >> 0x20),iVar3,
-iVar5 & iVar5 + 0x13ccfU);
if (iVar5 != 0) {
FUN_8f63cbb4(s_mdtp__read_DIP__ERROR__cannot_re_8f66cdd4);
goto LAB_8f633be0;
}
}
if (iVar3 == 0) {
FUN_8f63cce8();
}
if (puVar4 == (uint *)0x0) {
FUN_8f63cce8();
}
FUN_8f6254b4(iVar3,0x13cd0);
FUN_8f6254dc(puVar4,0x13cd0);
pcVar28 = (char *)0x1;
iVar5 = FUN_8f6197f0(iVar3,0x13cd0,puVar4,0x13cd0,1);
if (iVar5 == 0) {
FUN_8f6254dc(puVar4,0x13cd0);
FUN_8f65b034(&local_bc);
FUN_8f65b0e4(&local_bc,puVar4,0x13cb0);
FUN_8f65b128(local_4c,&local_bc);
iVar5 = FUN_8f63e524(local_4c,puVar4 + 0x4f2c,0x20);
if (iVar5 != 0) {
FUN_8f63e410(puVar4,0,0x13cd0);
goto LAB_8f633994;
}
}
else {
FUN_8f63cbb4(s_mdtp__mdtp_tzbsp_dec_verify_DIP__8f66ce04);
FUN_8f63e410(puVar4,0,0x13cd0);
FUN_8f63cbb4(s_mdtp__validate_DIP_and_firmware__8f66ce40);
FUN_8f634544();
LAB_8f633994:
FUN_8f63cbb4(s_mdtp__validate_DIP_and_firmware__8f66ce7c);
FUN_8f634544();
}
if (puVar4 == (uint *)0x0) {
FUN_8f63cce8();
pcVar28 = s_dec_dip____NULL_8f66cc78 + 4;
FUN_8f63cce8();
}
uVar19 = *puVar4 >> 0x10;
if (uVar19 == 0) {
if (puVar4[1] != 0) {
if (*param_1 == 2) {
LAB_8f6338c4:
local_bc = puVar4[2];
DAT_8f71c6e8 = 1;
uStack_b8 = puVar4[3];
local_b4 = *(undefined2 *)(puVar4 + 4);
goto LAB_8f633684;
}
iVar5 = (int)puVar4 + 0x1a;
local_e4 = 2;
local_100 = uVar19;
do {
if (*(char *)(iVar5 + 100) != '\0') {
uVar15 = *(uint *)((int)puVar4 + uVar19 * 0x6985 + 0x12);
uVar14 = *(uint *)((int)puVar4 + uVar19 * 0x6985 + 0x16);
if ((uVar15 | uVar14) != 0) {
uVar12 = uVar15 - 1;
iVar10 = uVar14 - (uVar15 == 0);
uVar20 = *(uint *)((int)puVar4 + uVar19 * 0x6985 + 0x2993);
bVar25 = iVar10 != 0;
if (iVar10 == 1) {
bVar25 = 0xfffffffe < uVar12;
}
pcVar21 = *(char **)((int)puVar4 + uVar19 * 0x6985 + 0x7f);
if (!bVar25 || iVar10 == 1 && uVar12 == 0xffffffff) {
bVar26 = (char *)0x7ffffffd < pcVar21;
bVar25 = pcVar21 == (char *)0x7ffffffe;
if (pcVar21 < (char *)0x7fffffff) {
bVar26 = 99 < uVar20;
bVar25 = uVar20 == 100;
}
pcVar6 = (char *)(uint)(bVar26 && !bVar25);
if (!bVar26 || bVar25) {
if (pcVar21 == (char *)0x0) {
local_4c[0] = pcVar21;
local_4c[1] = pcVar21;
local_4c[2] = pcVar21;
local_4c[3] = pcVar21;
local_3c = pcVar21;
local_38 = pcVar21;
local_34 = pcVar21;
local_30 = pcVar21;
iVar10 = FUN_8f601550();
FUN_8f60f6b0();
FUN_8f607810(iVar5);
lVar27 = FUN_8f60793c();
if (lVar27 == 0) {
FUN_8f63cbb4(s_mdtp__verify_partition_single_ha_8f66cfa0,iVar5);
goto LAB_8f633f6c;
}
iVar7 = FUN_8f60f940((int)lVar27,(int)((ulonglong)lVar27 >> 0x20),
iVar10 + 0x8000000);
if (iVar7 != 0) {
FUN_8f63cbb4(s_mdtp__verify_partition_single_ha_8f66cfe4,iVar5);
goto LAB_8f633f6c;
}
FUN_8f600ea0();
iVar7 = FUN_8f63e6f4(iVar5,&DAT_8f66d020);
if (iVar7 == 0) {
*(undefined *)(iVar10 + 0x8000000) = 0;
}
FUN_8f61dee8(iVar10 + 0x8000000,uVar15,local_4c,2);
local_e0 = FUN_8f63e524(local_4c,iVar5 + 0x297d,0x20);
if (local_e0 != 0) {
FUN_8f63cbb4(s_mdtp__verify_partition_single_ha_8f66d028,iVar5);
goto LAB_8f633f6c;
}
}
else {
if (pcVar21 + -1 < (char *)0x2) {
uVar12 = uVar12 >> 0x18 | iVar10 * 0x100;
local_4c[0] = pcVar6;
local_4c[1] = pcVar6;
local_4c[2] = pcVar6;
local_4c[3] = pcVar6;
local_3c = pcVar6;
local_38 = pcVar6;
local_34 = pcVar6;
local_30 = pcVar6;
iVar10 = FUN_8f601550();
iVar10 = iVar10 + 0x8000000;
iVar7 = FUN_8f60f6b0();
FUN_8f607810(iVar5);
lVar27 = FUN_8f60793c();
if (lVar27 == 0) {
FUN_8f63cbb4(s_mdtp__verify_partition_block_has_8f66d074,iVar5);
}
else {
FUN_8f600ea0();
local_e0 = FUN_8f62ae5c(iVar10,-iVar7 & iVar7 + 0xffffffU);
if (local_e0 == 0) {
iVar23 = iVar5 + 0x299d;
uVar22 = local_e0;
uVar24 = uVar15;
local_11c = (char *)(iVar5 + 0x69);
while( true ) {
uVar1 = uVar22 * 0x1000000;
if (uVar14 == 0 && uVar15 < uVar1 || uVar14 == 0 && uVar15 == uVar1)
break;
if (*local_11c == '\0') {
iVar8 = FUN_8f619cec(&local_c0,4);
if (iVar8 != 0) {
FUN_8f63cbb4(s_mdtp__scm_call_for_random_failed_8f66d110);
goto LAB_8f633f6c;
}
FUN_8f6602f4(local_c0,uVar12 + 1);
if (extraout_r1 < (uVar20 * uVar12) / 100) goto LAB_8f633ad0;
FUN_8f63cbb4(s_mdtp__verify_partition_block_has_8f66d134,iVar5,
uVar22 + 1);
}
else {
LAB_8f633ad0:
uVar17 = uVar15 + uVar22 * -0x1000000;
bVar25 = uVar14 == uVar15 < uVar1;
uVar18 = uVar17;
if (bVar25 && uVar17 < 0xffffff || bVar25 && uVar17 == 0xffffff) {
uVar18 = uVar24;
}
if ((!bVar25 || uVar17 >= 0xffffff) && (!bVar25 || uVar17 != 0xffffff))
{
uVar18 = 0x1000000;
}
iVar8 = FUN_8f60f940((int)(lVar27 + (ulonglong)uVar1),
(int)(lVar27 + (ulonglong)uVar1 >> 0x20),iVar10,
iVar7 + -1 + uVar18 & -iVar7);
if (iVar8 != 0) {
FUN_8f63cbb4(s_mdtp__verify_partition_block_has_8f66d180,iVar5);
goto LAB_8f633f6c;
}
FUN_8f61dee8(iVar10,uVar18,local_4c,2);
iVar8 = FUN_8f63e524(local_4c,iVar23 + -0x20,0x20);
if (iVar8 != 0) {
FUN_8f63cbb4(s_mdtp__verify_partition_block_has_8f66d1bc,iVar5,uVar22)
;
goto LAB_8f633f6c;
}
}
iVar23 = iVar23 + 0x20;
uVar24 = uVar24 - 0x1000000;
uVar22 = uVar22 + 1;
local_11c = local_11c + 1;
}
goto LAB_8f633f2c;
}
FUN_8f63cbb4(s_mdtp__verify_partition_block_has_8f66d0b4,iVar5);
}
}
LAB_8f633f6c:
local_e0 = 1;
iVar10 = FUN_8f63e6f4(&DAT_8f66d020,iVar5);
if (iVar10 == 0) {
local_e4 = 3;
}
}
LAB_8f633f2c:
local_100 = local_100 | local_e0;
goto LAB_8f63374c;
}
}
local_100 = 1;
FUN_8f63cbb4(s_mdtp__validate_partition_params__8f66cf10,pcVar21,uVar15,uVar14,pcVar21,
uVar20);
FUN_8f63cbb4(s_mdtp__verify_all_partitions__Wro_8f66cf64);
pcVar28 = pcVar21;
break;
}
}
LAB_8f63374c:
uVar19 = uVar19 + 1;
iVar5 = iVar5 + 0x6985;
} while (uVar19 != 3);
if (param_1[1] == 2) {
pcVar21 = s_recovery_8f663020;
if (*param_1 == 0) {
pcVar21 = s_fastboot_8f66c5d8 + 4;
}
FUN_8f63cbb4(s_mdtp__verify_ext_partition__imag_8f66d20c,pcVar21,s_recovery_8f663020,
s_fastboot_8f66c5d8 + 4,pcVar28);
}
else if (param_1[1] == 1) {
pcVar21 = s_recovery_8f663020;
if (*param_1 == 0) {
pcVar21 = s_fastboot_8f66c5d8 + 4;
}
FUN_8f63cbb4(s_mdtp__verify_ext_partition__imag_8f66d254,pcVar21,s_recovery_8f663020,
s_fastboot_8f66c5d8 + 4,pcVar28);
LAB_8f6338b8:
if (local_100 == 0) goto LAB_8f6338c4;
}
else {
FUN_8f610a78();
iVar5 = FUN_8f6116d8();
FUN_8f6111e0(0);
bVar11 = *param_1;
if (bVar11 < 2) {
if (*(int *)(param_1 + 0x10) == 0) {
iVar10 = FUN_8f62ae5c(*(int *)(param_1 + 0xc) + *(int *)(param_1 + 8),
*(undefined4 *)(param_1 + 4));
if (iVar10 == 0) {
pcVar21 = s_recovery_8f663020;
pcVar28 = s_fastboot_8f66c5d8 + 4;
if (*param_1 != 0) {
pcVar28 = pcVar21;
}
FUN_8f607810(pcVar28);
lVar27 = FUN_8f60793c();
if (lVar27 == 0) {
if (*param_1 == 0) {
pcVar21 = s_fastboot_8f66c5d8 + 4;
}
FUN_8f63cbb4(s_ERROR__partition__s_not_found_8f66d2e4,pcVar21);
}
else {
lVar27 = lVar27 + (ulonglong)*(uint *)(param_1 + 0xc);
iVar10 = FUN_8f60f940((int)lVar27,(int)((ulonglong)lVar27 >> 0x20),
*(uint *)(param_1 + 0xc) + *(int *)(param_1 + 8),
*(undefined4 *)(param_1 + 4));
bVar11 = *param_1;
if (iVar10 == 0) goto LAB_8f6337b4;
if (bVar11 == 0) {
pcVar21 = s_fastboot_8f66c5d8 + 4;
}
FUN_8f63cbb4(s_ERROR__Cannot_read__s_image_sign_8f66d304,pcVar21);
}
}
else {
FUN_8f63cbb4(s_ERROR__Signature_read_buffer_add_8f66d29c);
}
}
else {
LAB_8f6337b4:
pcVar28 = s__recovery_8f666404;
if (bVar11 == 0) {
pcVar28 = s__boot_8f6663fc;
}
iVar10 = FUN_8f6112b4(*(undefined4 *)(param_1 + 8),*(undefined4 *)(param_1 + 0xc),
pcVar28);
if (iVar10 == 0) {
pcVar28 = s_recovery_8f663020;
if (*param_1 == 0) {
pcVar28 = s_fastboot_8f66c5d8 + 4;
}
FUN_8f63cbb4(s_mdtp__verify_ext_partition__imag_8f66d348,pcVar28);
}
if (iVar5 == 1) {
FUN_8f6111e0(1);
}
if (iVar10 != 0) goto LAB_8f6338b8;
}
}
else {
FUN_8f63cbb4(s_ERROR__wrong_partition__d_8f66d32c);
}
}
FUN_8f63cbb4(s_mdtp__verify_all_partitions__Fai_8f66d38c);
FUN_8f63e410(puVar4,0,0x13cd0);
if (local_e4 == 3) {
FUN_8f63cbb4(s_mdtp__validate_DIP_and_firmware__8f66d3c8);
FUN_8f6351ec();
goto LAB_8f633698;
}
goto LAB_8f633934;
}
puVar16 = puVar4 + 2;
if (puVar16 < puVar4 + 0x4f2c) {
if (*(char *)(puVar4 + 2) == '\0') {
puVar13 = puVar16;
do {
if (puVar13 == (uint *)((int)puVar4 + 0x13caf)) goto LAB_8f63366c;
puVar13 = (uint *)((int)puVar13 + 1);
} while (*(char *)puVar13 == '\0');
}
FUN_8f63cbb4(s_mdtp__validate_dip__error_in_dea_8f66cee0);
goto LAB_8f6338fc;
}
LAB_8f63366c:
local_bc = *puVar16;
uStack_b8 = puVar4[3];
local_b4 = *(undefined2 *)(puVar4 + 4);
LAB_8f633684:
FUN_8f63e410(puVar4,0,0x13cd0);
}
else {
FUN_8f63cbb4(s_mdtp__validate_dip__Wrong_DIP_ve_8f66ceb4,*puVar4);
LAB_8f6338fc:
FUN_8f63cbb4(s_mdtp__verify_all_partitions__fai_8f66d628);
local_bc = puVar4[2];
uStack_b8 = puVar4[3];
local_b4 = *(undefined2 *)(puVar4 + 4);
FUN_8f63e410(puVar4,0,0x13cd0);
LAB_8f633934:
FUN_8f63cbb4(s_mdtp__validate_DIP_and_firmware__8f66d408);
local_4c[0] = (char *)0x0;
local_4c[1] = (char *)0x0;
local_4c[2] = (char *)((uint)local_4c[2] & 0xffffff00);
if ((local_bc & 0xff) == 0) {
FUN_8f63cbb4(s_mdtp__display_recovery_ui__Local_8f66d550);
FUN_8f634544();
}
else {
uVar19 = FUN_8f63e9a0((int)&local_bc + 1);
if (uVar19 == 8) {
LAB_8f633d40:
uVar14 = 0;
do {
*(undefined *)((int)local_4c + uVar14) = 0x30;
uVar14 = uVar14 + 1;
} while (uVar14 < uVar19);
}
else {
FUN_8f63cbb4(s_mdtp__display_recovery_ui__Error_8f66d444);
FUN_8f634544();
if (uVar19 != 0) goto LAB_8f633d40;
}
FUN_8f634cc8(local_4c,uVar19);
if (uVar19 != 0) {
while( true ) {
bVar11 = 0;
uVar14 = 0;
do {
uVar15 = uVar14 + 1;
bVar11 = bVar11 | *(byte *)((int)&local_bc + uVar14 + 1) ^
*(byte *)((int)local_4c + uVar14);
uVar14 = uVar15;
} while (uVar15 != uVar19);
if (bVar11 == 0) break;
FUN_8f63cbb4(s_mdtp__display_recovery_ui__ERROR_8f66d520);
FUN_8f634c04();
FUN_8f634cc8(local_4c,uVar19);
}
}
iVar5 = FUN_8f63e114(0x13cd0);
if (iVar5 == 0) {
FUN_8f63cbb4(s_mdtp__write_deactivated_DIP__ERR_8f66d47c);
}
else {
puVar9 = (undefined4 *)FUN_8f63e114(0x13cd0);
if (puVar9 == (undefined4 *)0x0) {
FUN_8f63cbb4(s_mdtp__write_deactivated_DIP__ERR_8f66d47c);
FUN_8f63e200(iVar5);
}
else {
FUN_8f63e410(puVar9,0,0x13cd0);
*(undefined *)(puVar9 + 1) = 0;
uVar2 = DAT_8f71c6ec;
*(undefined *)((int)puVar9 + 5) = 0;
*(undefined *)((int)puVar9 + 6) = 0;
*puVar9 = uVar2;
*(undefined *)((int)puVar9 + 7) = 0;
iVar10 = FUN_8f6332c0(puVar9,iVar5);
if (iVar10 < 0) {
FUN_8f63cbb4(s_mdtp__write_deactivated_DIP__ERR_8f66d4b8);
}
else {
iVar10 = FUN_8f60f6b0();
FUN_8f607810(&DAT_8f66cdd0);
lVar27 = FUN_8f60793c();
if (lVar27 != 0) {
iVar10 = FUN_8f60f704((int)lVar27,(int)((ulonglong)lVar27 >> 0x20),
-iVar10 & iVar10 + 0x13ccfU,iVar5);
if (iVar10 == 0) goto LAB_8f633e50;
FUN_8f63cbb4(s_mdtp__write_DIP__ERROR__cannot_w_8f66d4f0);
}
FUN_8f63cbb4(s_mdtp__write_deactivated_DIP__ERR_8f66d65c);
}
LAB_8f633e50:
FUN_8f63e200(iVar5);
FUN_8f63e200(puVar9);
}
}
}
FUN_8f63633c();
FUN_8f6344f0();
FUN_8f613cc4(1000);
}
LAB_8f633698:
FUN_8f63e410(&local_bc,0,10);
FUN_8f63e200(iVar3);
FUN_8f63e200(puVar4);
LAB_8f633460:
if (*param_1 == 0) {
iVar3 = FUN_8f63e114(0x13cd0);
if (iVar3 == 0) {
FUN_8f63cbb4(s_mdtp__mdtp_tzbsp_disallow_cipher_8f66d5a8);
}
else {
FUN_8f6332c0(iVar3,iVar3);
FUN_8f6332c0(iVar3,iVar3);
FUN_8f6332c0(iVar3,iVar3);
FUN_8f63e200(iVar3);
}
}
if (local_2c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
// WARNING: Removing unreachable block (ram,0x8f6342d8)
void FUN_8f63428c(int *param_1)
{
if (-1 < DAT_8f71c6e8) {
*param_1 = DAT_8f71c6e8;
}
return;
}
void FUN_8f6342dc(void)
{
int iVar1;
int iVar2;
code *pcVar3;
iVar1 = DAT_8f731d80;
if (*(code **)(DAT_8f730624 + 0x18) != (code *)0x0) {
(**(code **)(DAT_8f730624 + 0x18))();
}
pcVar3 = *(code **)(DAT_8f730624 + 0x1c);
if (pcVar3 != (code *)0x0) {
while (iVar2 = (*pcVar3)(), iVar2 == 0) {
pcVar3 = *(code **)(DAT_8f730624 + 0x1c);
}
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f634354(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
if (DAT_8f730628 == 0) {
DAT_8f730628 = FUN_8f63e114(0x120d20);
if (DAT_8f730628 == 0) {
FUN_8f63cce8();
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6343e4(uint param_1,int param_2,int param_3)
{
int iVar1;
int iVar2;
int *piVar3;
int *piVar4;
longlong lVar5;
iVar1 = DAT_8f731d80;
piVar4 = DAT_8f730628;
iVar2 = FUN_8f60f6b0();
piVar3 = (int *)FUN_8f607810(&DAT_8f66d020);
if (piVar3 == (int *)0x0) {
FUN_8f63cbb4(s_ERROR__mdtp_Partition_table_not_f_8f66d6b8);
piVar4 = piVar3;
}
else {
lVar5 = FUN_8f60793c();
if (lVar5 == 0) {
FUN_8f63cbb4(s_ERROR__mdtp_Partition_invalid_8f66d6e0);
piVar4 = (int *)0x0;
}
else if (DAT_8f730624 != 0) {
iVar2 = FUN_8f60f940((int)(lVar5 + (ulonglong)param_1),
(int)(lVar5 + (ulonglong)param_1 >> 0x20),piVar4 + 2,
-iVar2 & (param_2 * (*(uint *)(DAT_8f730624 + 0x10) >> 3) * param_3 +
iVar2) - 1);
if (iVar2 == 0) {
*piVar4 = param_2;
piVar4[1] = param_3;
}
else {
FUN_8f6359f8(iVar2);
FUN_8f63cbb4(s_ERROR__mdtp_image_read_failed_8f66d700);
piVar4 = (int *)0x0;
}
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(piVar4);
}
void FUN_8f6344f0(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
if (DAT_8f730628 != 0) {
FUN_8f63e200();
DAT_8f730628 = 0;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f634544(void)
{
DAT_8f730624 = FUN_8f636068();
FUN_8f634354();
if (DAT_8f730624 != 0) {
FUN_8f6359f8();
FUN_8f634734();
}
FUN_8f63cbb4(s_ERROR__blocking_boot_process_8f66d720);
do {
// WARNING: Do nothing block with infinite loop
} while( true );
}
// WARNING: Removing unreachable block (ram,0x8f634720)
// WARNING: Removing unreachable block (ram,0x8f634704)
void FUN_8f634594(uint *param_1,uint param_2,uint param_3)
{
int iVar1;
char *pcVar2;
int iVar3;
undefined4 uVar4;
undefined4 uVar5;
undefined4 uVar6;
undefined4 uVar7;
int iVar8;
uint uVar9;
uint uVar10;
int iVar11;
uint uVar12;
uint uVar13;
undefined8 uVar14;
iVar1 = DAT_8f731d80;
if (DAT_8f730624 == (int *)0x0) {
pcVar2 = s_ERROR__NULL_configuration__image_8f66d740;
goto LAB_8f6346b8;
}
if (param_1 == (uint *)0x0) {
pcVar2 = s_ERROR__invalid_image_struct_8f66d778;
goto LAB_8f6346b8;
}
uVar13 = *param_1;
uVar12 = param_1[1];
if ((uint)DAT_8f730624[4] >> 3 != 3) {
FUN_8f63cbb4(s_ERROR__invalid_bpp_value_8f66d814);
FUN_8f634544();
iVar1 = DAT_8f731d80;
if (DAT_8f730624 == (int *)0x0) {
FUN_8f63cbb4(s_ERROR__fbcon_config_struct_is_NU_8f66d85c);
uVar4 = 0xffffffff;
}
else {
iVar11 = DAT_8f730624[1];
iVar3 = FUN_8f635428(1);
uVar14 = FUN_8f6606cc(DAT_8f730624[2]);
FUN_8f6607cc((int)uVar14,(int)((ulonglong)uVar14 >> 0x20),0x70a3d70a,0x3fc70a3d);
uVar4 = FUN_8f660dc4();
uVar5 = FUN_8f6353e0(1);
uVar6 = FUN_8f635428(1);
uVar7 = FUN_8f635470(1);
iVar8 = FUN_8f6343e4(uVar5,uVar6,uVar7);
if (iVar8 == 0) {
FUN_8f63cbb4(s_ERROR__failed_to_read_error_imag_8f66d830);
uVar4 = 0xffffffff;
}
else {
FUN_8f634594(iVar8,(uint)(iVar11 - iVar3) >> 1,uVar4);
uVar4 = 0;
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar4);
}
uVar9 = DAT_8f730624[1];
if (uVar13 == uVar9) {
uVar10 = DAT_8f730624[2];
if (uVar12 == uVar10) {
pcVar2 = s_ERROR__full_screen_image__cannot_8f66d798;
goto LAB_8f6346b8;
}
LAB_8f6345f4:
if (((uVar12 <= uVar10) && (param_2 <= uVar9 - uVar13)) && (param_3 <= uVar10 - uVar12)) {
iVar3 = uVar9 * param_3;
if (uVar12 != 0) {
uVar10 = 0;
iVar8 = (int)param_1 + uVar13 * 3 * (uVar12 - 1) + 8;
while( true ) {
iVar11 = uVar10 * uVar9;
uVar10 = uVar10 + 1;
FUN_8f63e304(*DAT_8f730624 + (iVar11 + iVar3 + param_2) * 3,iVar8,uVar13 * 3);
if (uVar10 == uVar12) break;
uVar9 = DAT_8f730624[1];
iVar8 = iVar8 + uVar13 * -3;
}
uVar9 = DAT_8f730624[1];
uVar10 = DAT_8f730624[2];
}
FUN_8f6254b4(*DAT_8f730624,uVar9 * uVar10 * 3);
FUN_8f6342dc();
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
FUN_8f62134c();
return;
}
}
else if (uVar13 <= uVar9) {
uVar10 = DAT_8f730624[2];
goto LAB_8f6345f4;
}
pcVar2 = s_ERROR__invalid_image_size__large_8f66d7c8;
LAB_8f6346b8:
FUN_8f63cbb4(pcVar2);
return;
}
void FUN_8f634734(void)
{
int iVar1;
int iVar2;
undefined4 uVar3;
undefined4 uVar4;
undefined4 uVar5;
undefined4 uVar6;
int iVar7;
int iVar8;
undefined8 uVar9;
iVar1 = DAT_8f731d80;
if (DAT_8f730624 == 0) {
FUN_8f63cbb4(s_ERROR__fbcon_config_struct_is_NU_8f66d85c);
uVar3 = 0xffffffff;
}
else {
iVar8 = *(int *)(DAT_8f730624 + 4);
iVar2 = FUN_8f635428(1);
uVar9 = FUN_8f6606cc(*(undefined4 *)(DAT_8f730624 + 8));
FUN_8f6607cc((int)uVar9,(int)((ulonglong)uVar9 >> 0x20),0x70a3d70a,0x3fc70a3d);
uVar3 = FUN_8f660dc4();
uVar4 = FUN_8f6353e0(1);
uVar5 = FUN_8f635428(1);
uVar6 = FUN_8f635470(1);
iVar7 = FUN_8f6343e4(uVar4,uVar5,uVar6);
if (iVar7 == 0) {
FUN_8f63cbb4(s_ERROR__failed_to_read_error_imag_8f66d830);
uVar3 = 0xffffffff;
}
else {
FUN_8f634594(iVar7,(uint)(iVar8 - iVar2) >> 1,uVar3);
uVar3 = 0;
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
void FUN_8f634828(void)
{
int iVar1;
int iVar2;
undefined4 uVar3;
undefined4 uVar4;
undefined4 uVar5;
undefined4 uVar6;
undefined4 in_r3;
int iVar7;
undefined8 uVar8;
undefined4 param_5;
iVar1 = DAT_8f731d80;
if (DAT_8f730624 == 0) {
FUN_8f63cbb4(s_ERROR__fbcon_config_struct_is_NU_8f66d85c);
FUN_8f634544();
}
else {
iVar2 = FUN_8f6343e4();
if (iVar2 == 0) {
FUN_8f63cbb4(s_ERROR__failed_to_read_image_from_8f66d880);
FUN_8f634544();
iVar1 = DAT_8f731d80;
iVar7 = *(int *)(DAT_8f730624 + 4);
iVar2 = FUN_8f635428(2);
uVar8 = FUN_8f6606cc(*(undefined4 *)(DAT_8f730624 + 8));
FUN_8f6607cc((int)uVar8,(int)((ulonglong)uVar8 >> 0x20),0,0x3fe80000);
uVar3 = FUN_8f660dc4();
uVar4 = FUN_8f6353e0(2);
uVar5 = FUN_8f635428(2);
uVar6 = FUN_8f635470(2);
FUN_8f634828(uVar4,uVar5,uVar6,(uint)(iVar7 - iVar2) >> 1,uVar3);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
if (iVar1 == DAT_8f731d80) {
FUN_8f634594(iVar2,in_r3,param_5);
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6348b0(void)
{
int iVar1;
int iVar2;
undefined4 uVar3;
undefined4 uVar4;
undefined4 uVar5;
undefined4 uVar6;
int iVar7;
undefined8 uVar8;
iVar1 = DAT_8f731d80;
iVar7 = *(int *)(DAT_8f730624 + 4);
iVar2 = FUN_8f635428(2);
uVar8 = FUN_8f6606cc(*(undefined4 *)(DAT_8f730624 + 8));
FUN_8f6607cc((int)uVar8,(int)((ulonglong)uVar8 >> 0x20),0,0x3fe80000);
uVar3 = FUN_8f660dc4();
uVar4 = FUN_8f6353e0(2);
uVar5 = FUN_8f635428(2);
uVar6 = FUN_8f635470(2);
FUN_8f634828(uVar4,uVar5,uVar6,(uint)(iVar7 - iVar2) >> 1,uVar3);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f634960(void)
{
int iVar1;
int iVar2;
undefined4 uVar3;
undefined4 uVar4;
undefined4 uVar5;
undefined4 uVar6;
int iVar7;
undefined8 uVar8;
iVar1 = DAT_8f731d80;
iVar7 = *(int *)(DAT_8f730624 + 4);
iVar2 = FUN_8f635428(7);
uVar8 = FUN_8f6606cc(*(undefined4 *)(DAT_8f730624 + 8));
FUN_8f6607cc((int)uVar8,(int)((ulonglong)uVar8 >> 0x20),0xa3d70a3d,0x3fe23d70);
uVar3 = FUN_8f660dc4();
uVar4 = FUN_8f6353e0(7);
uVar5 = FUN_8f635428(7);
uVar6 = FUN_8f635470(7);
FUN_8f634828(uVar4,uVar5,uVar6,(uint)(iVar7 - iVar2) >> 1,uVar3);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f634a14(undefined4 param_1,undefined4 param_2,char param_3)
{
int iVar1;
undefined4 uVar2;
undefined4 uVar3;
undefined4 uVar4;
iVar1 = DAT_8f731d80;
param_3 = param_3 + '\x12';
uVar2 = FUN_8f6353e0(param_3);
uVar3 = FUN_8f635428(param_3);
uVar4 = FUN_8f635470(param_3);
FUN_8f634828(uVar2,uVar3,uVar4,param_1,param_2);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f634a90(undefined4 param_1,undefined4 param_2,char param_3)
{
int iVar1;
undefined4 uVar2;
undefined4 uVar3;
undefined4 uVar4;
iVar1 = DAT_8f731d80;
param_3 = param_3 + '\b';
uVar2 = FUN_8f6353e0(param_3);
uVar3 = FUN_8f635428(param_3);
uVar4 = FUN_8f635470(param_3);
FUN_8f634828(uVar2,uVar3,uVar4,param_1,param_2);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f634b0c(int param_1,int param_2)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
if (DAT_8f730624 == (int *)0x0) {
FUN_8f63cbb4(s_ERROR__fbcon_config_struct_is_NU_8f66d85c);
FUN_8f634544();
}
else {
iVar2 = DAT_8f730624[1] * ((uint)DAT_8f730624[4] >> 3);
FUN_8f63e410(iVar2 * param_1 + *DAT_8f730624,0,iVar2 * param_2);
if (iVar1 == DAT_8f731d80) {
FUN_8f6342dc();
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f634b8c(void)
{
int iVar1;
undefined4 uVar2;
undefined4 uVar3;
undefined8 uVar4;
iVar1 = DAT_8f731d80;
uVar4 = FUN_8f6606cc(*(undefined4 *)(DAT_8f730624 + 8));
FUN_8f6607cc((int)uVar4,(int)((ulonglong)uVar4 >> 0x20),0xa3d70a3d,0x3fea3d70);
uVar2 = FUN_8f660dc4();
uVar3 = FUN_8f635470(0);
if (iVar1 == DAT_8f731d80) {
FUN_8f634b0c(uVar2);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3,uVar3);
}
void FUN_8f634c04(void)
{
int iVar1;
int iVar2;
undefined4 uVar3;
undefined4 uVar4;
undefined4 uVar5;
undefined4 uVar6;
int iVar7;
undefined8 uVar8;
iVar1 = DAT_8f731d80;
FUN_8f634b8c();
FUN_8f6348b0();
iVar7 = *(int *)(DAT_8f730624 + 4);
iVar2 = FUN_8f635428(6);
uVar8 = FUN_8f6606cc(*(undefined4 *)(DAT_8f730624 + 8));
FUN_8f6607cc((int)uVar8,(int)((ulonglong)uVar8 >> 0x20),0x51eb851f,0x3fd51eb8);
uVar3 = FUN_8f660dc4();
uVar4 = FUN_8f6353e0(6);
uVar5 = FUN_8f635428(6);
uVar6 = FUN_8f635470(6);
FUN_8f634828(uVar4,uVar5,uVar6,(uint)(iVar7 - iVar2) >> 1,uVar3);
if (iVar1 == DAT_8f731d80) {
FUN_8f613cc4(5000);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f634cc8(char *param_1,int param_2)
{
longlong lVar1;
int iVar2;
int iVar3;
int iVar4;
undefined4 uVar5;
undefined4 uVar6;
undefined4 uVar7;
undefined4 uVar8;
int iVar9;
int iVar10;
int extraout_r1;
int iVar11;
char *pcVar12;
char *pcVar13;
int iVar14;
int *piVar15;
undefined4 *puVar16;
undefined8 uVar17;
iVar2 = DAT_8f731d80;
if (DAT_8f73062c == 1) {
LAB_8f634e84:
iVar4 = *(int *)(DAT_8f730624 + 4);
iVar3 = FUN_8f635428(5);
uVar17 = FUN_8f6606cc(*(undefined4 *)(DAT_8f730624 + 8));
FUN_8f6607cc((int)uVar17,(int)((ulonglong)uVar17 >> 0x20),0x51eb851f,0x3fd51eb8);
uVar5 = FUN_8f660dc4();
uVar6 = FUN_8f6353e0(5);
uVar7 = FUN_8f635428(5);
uVar8 = FUN_8f635470(5);
FUN_8f634828(uVar6,uVar7,uVar8,(uint)(iVar4 - iVar3) >> 1,uVar5);
if (param_2 != 0) {
pcVar13 = param_1;
do {
pcVar12 = pcVar13 + 1;
*pcVar13 = *pcVar13 + -0x30;
pcVar13 = pcVar12;
} while (pcVar12 != param_1 + param_2);
}
iVar3 = 0;
FUN_8f634a90(DAT_8f730600,DAT_8f730620,*param_1);
FUN_8f634960();
do {
do {
iVar4 = FUN_8f600354();
uVar5 = DAT_8f730620;
if (iVar4 != 0) {
if (param_2 == iVar3) {
if (param_2 != 0) {
pcVar13 = param_1;
do {
pcVar12 = pcVar13 + 1;
*pcVar13 = *pcVar13 + '0';
pcVar13 = pcVar12;
} while (pcVar12 != param_1 + param_2);
}
if (iVar2 == DAT_8f731d80) {
return;
}
goto LAB_8f6351e4;
}
iVar4 = (byte)param_1[iVar3] + 1;
lVar1 = (longlong)iVar4 * 0x66666667;
param_1[iVar3] =
(char)iVar4 +
((char)(uint)((ulonglong)lVar1 >> 0x22) + ((byte)((ulonglong)lVar1 >> 0x20) & 0xfc))
* -2;
FUN_8f634a90((&DAT_8f730600)[iVar3],uVar5);
FUN_8f613cc4(400);
}
iVar4 = FUN_8f6003ec();
} while (iVar4 == 0);
FUN_8f6602f4(iVar3 + 1,param_2 + 1);
if (param_2 == iVar3) {
FUN_8f634b8c();
FUN_8f6348b0();
FUN_8f634960();
FUN_8f634a90((&DAT_8f730600)[extraout_r1],DAT_8f730620,param_1[extraout_r1]);
}
else if (param_2 == extraout_r1) {
FUN_8f634a14((&DAT_8f730600)[iVar3],DAT_8f730620,param_1[iVar3]);
uVar17 = FUN_8f6606cc(*(undefined4 *)(DAT_8f730624 + 8));
FUN_8f6607cc((int)uVar17,(int)((ulonglong)uVar17 >> 0x20),0xa3d70a3d,0x3fe23d70);
uVar5 = FUN_8f660dc4();
uVar6 = FUN_8f635470(7);
FUN_8f634b0c(uVar5,uVar6);
iVar4 = *(int *)(DAT_8f730624 + 4);
iVar3 = FUN_8f635428(3);
uVar17 = FUN_8f6606cc(*(undefined4 *)(DAT_8f730624 + 8));
FUN_8f6607cc((int)uVar17,(int)((ulonglong)uVar17 >> 0x20),0,0x3fe80000);
uVar5 = FUN_8f660dc4();
uVar6 = FUN_8f6353e0(3);
uVar7 = FUN_8f635428(3);
uVar8 = FUN_8f635470(3);
FUN_8f634828(uVar6,uVar7,uVar8,(uint)(iVar4 - iVar3) >> 1,uVar5);
iVar4 = *(int *)(DAT_8f730624 + 4);
iVar3 = FUN_8f635428(0);
uVar17 = FUN_8f6606cc(*(undefined4 *)(DAT_8f730624 + 8));
FUN_8f6607cc((int)uVar17,(int)((ulonglong)uVar17 >> 0x20),0xa3d70a3d,0x3fea3d70);
uVar5 = FUN_8f660dc4();
uVar6 = FUN_8f6353e0(0);
uVar7 = FUN_8f635428(0);
uVar8 = FUN_8f635470(0);
FUN_8f634828(uVar6,uVar7,uVar8,(uint)(iVar4 - iVar3) >> 1,uVar5);
}
else {
FUN_8f634a14((&DAT_8f730600)[iVar3],DAT_8f730620,param_1[iVar3]);
FUN_8f634a90((&DAT_8f730600)[extraout_r1],DAT_8f730620,param_1[extraout_r1]);
}
FUN_8f613cc4(400);
iVar3 = extraout_r1;
} while( true );
}
DAT_8f730624 = FUN_8f636068();
FUN_8f634354();
if (DAT_8f730624 == 0) {
FUN_8f63cbb4(s_ERROR__fbcon_config_struct_is_NU_8f66d85c);
}
else {
FUN_8f6359f8();
iVar3 = FUN_8f634734();
if (iVar3 == 0) {
iVar14 = *(int *)(DAT_8f730624 + 4);
iVar4 = FUN_8f635428(4);
uVar17 = FUN_8f6606cc(*(undefined4 *)(DAT_8f730624 + 8));
FUN_8f6607cc((int)uVar17,(int)((ulonglong)uVar17 >> 0x20),0x51eb851f,0x3fd51eb8);
uVar5 = FUN_8f660dc4();
uVar6 = FUN_8f6353e0(4);
uVar7 = FUN_8f635428(4);
uVar8 = FUN_8f635470(4);
FUN_8f634828(uVar6,uVar7,uVar8,(uint)(iVar14 - iVar4) >> 1,uVar5);
FUN_8f613cc4(5000);
uVar17 = FUN_8f6606cc(*(undefined4 *)(DAT_8f730624 + 8));
FUN_8f6607cc((int)uVar17,(int)((ulonglong)uVar17 >> 0x20),0xe147ae14,0x3fde147a);
DAT_8f730620 = FUN_8f660dc4();
iVar4 = FUN_8f635428(0x12);
iVar14 = FUN_8f6354b8(1);
iVar11 = *(int *)(DAT_8f730624 + 4);
piVar15 = (int *)PTR_DAT_8f6351e8;
if (param_2 != 0) {
do {
iVar9 = FUN_8f6354b8(1);
iVar10 = FUN_8f635428(0x12);
iVar9 = iVar3 * (iVar10 + iVar9);
iVar3 = iVar3 + 1;
piVar15[1] = iVar9 + ((uint)(iVar11 - ((param_2 + -1) * iVar14 + param_2 * iVar4)) >> 1);
piVar15 = piVar15 + 1;
} while (iVar3 != param_2);
iVar3 = 0;
puVar16 = (undefined4 *)PTR_DAT_8f6351e8;
do {
iVar3 = iVar3 + 1;
puVar16 = puVar16 + 1;
FUN_8f634a14(*puVar16,DAT_8f730620,0);
} while (iVar3 != param_2);
}
FUN_8f6348b0();
DAT_8f73062c = 1;
goto LAB_8f634e84;
}
}
FUN_8f634544();
LAB_8f6351e4:
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6351ec(void)
{
char cVar1;
char *pcVar2;
pcVar2 = s_Device_unable_to_boot_8f66d8a8;
FUN_8f6359f8();
cVar1 = 'D';
do {
FUN_8f635ad0(cVar1,0,8);
pcVar2 = pcVar2 + 1;
cVar1 = *pcVar2;
} while (cVar1 != '\0');
pcVar2 = s__Error___mdtp_image_is_corrupted_8f66d8f8;
FUN_8f6358c8();
cVar1 = '\n';
do {
FUN_8f635ad0(cVar1,0,8);
pcVar2 = pcVar2 + 1;
cVar1 = *pcVar2;
} while (cVar1 != '\0');
FUN_8f6358c8();
FUN_8f63cbb4(s_ERROR__blocking_boot_process___m_8f66d8c0);
do {
// WARNING: Do nothing block with infinite loop
} while( true );
}
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f635268(int *param_1)
{
uint uVar1;
int iVar2;
int iVar3;
bool bVar4;
uint local_28;
uint *local_24;
uint uStack_20;
int local_1c;
local_1c = DAT_8f731d80;
iVar3 = DAT_8f730634;
bVar4 = DAT_8f730634 == 0;
*param_1 = 1;
local_28 = 0;
local_24 = (uint *)0x0;
if (bVar4) {
iVar2 = FUN_8f61953c(&local_28,&local_24);
if (iVar2 == 0) {
if ((local_28 & 7) == 7) {
DAT_8f730630 = 1;
}
}
else {
FUN_8f63cbb4(s_mdtp__is_test_mode__qsee_get_sec_8f66d91c,iVar2,local_28);
DAT_8f730630 = iVar3;
}
DAT_8f730634 = 1;
}
if (DAT_8f730630 == 0) {
iVar3 = FUN_8f60377c(&local_24);
if (iVar3 != 0) {
FUN_8f63cbb4(s_mdtp__read_QFPROM_fuse__failed_t_8f66d9bc);
LAB_8f63534c:
FUN_8f63cbb4(s_mdtp__mdtp_fuse_get_enabled__Fai_8f66d9f0);
iVar3 = -1;
goto LAB_8f635304;
}
uVar1 = *local_24 >> (uStack_20 & 0xff);
}
else {
uVar1 = FUN_8f6354b8(0);
if (uVar1 == 0xffffffff) {
FUN_8f63cbb4(s_mdtp__eFuse_reading_error_8f66d970);
FUN_8f63cbb4(s_mdtp__read_test_fuse__Failure_ge_8f66d98c);
goto LAB_8f63534c;
}
iVar3 = 0;
}
if ((((uVar1 & 3) != 1) && ((uVar1 & 0xc) != 4)) && ((uVar1 & 0x30) != 0x10)) {
*param_1 = iVar3;
}
LAB_8f635304:
if (local_1c == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar3);
}
// WARNING: Removing unreachable block (ram,0x8f635424)
void FUN_8f6353e0(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f63546c)
void FUN_8f635428(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6354b4)
void FUN_8f635470(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f6354f4)
void FUN_8f6354b8(void)
{
return;
}
void FUN_8f6354f8(void)
{
int iVar1;
int iVar2;
int iVar3;
undefined4 *puVar4;
undefined4 *puVar5;
longlong lVar6;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f60f6b0();
iVar3 = FUN_8f607810(&DAT_8f66d020);
if (iVar3 == 0) {
FUN_8f63cbb4(s_ERROR__mdtp_Partition_table_not_f_8f66d6b8);
iVar2 = 1;
}
else {
lVar6 = FUN_8f60793c();
FUN_8f6079b4(iVar3);
FUN_8f60ff88();
if (lVar6 == 0) {
FUN_8f63cbb4(s_ERROR__mdtp_Partition_invalid_8f66d6e0);
iVar2 = 1;
}
else {
puVar4 = (undefined4 *)(PTR_DAT_8f63564c + 0x800);
puVar5 = (undefined4 *)PTR_DAT_8f63564c;
do {
puVar5 = puVar5 + 1;
*puVar5 = 0xffffffff;
} while (puVar5 != puVar4);
iVar3 = FUN_8f63e150(iVar2,-iVar2 & iVar2 + 0xfffU);
if (iVar3 == 0) {
FUN_8f63cbb4(s_ERROR__mdtp_malloc_failed_8f66da28);
iVar2 = 1;
}
else {
iVar2 = FUN_8f60f940((int)lVar6,(int)((ulonglong)lVar6 >> 0x20),iVar3,0x1000);
if (iVar2 == 0) {
FUN_8f63e5b8(&DAT_8f730638,0x800,iVar3,0x800);
FUN_8f63e5b8(PTR_DAT_8f635650,0x800,iVar3 + 0x800,0x1e0);
FUN_8f63e200(iVar3);
}
else {
FUN_8f63cbb4(s_ERROR__mdtp_meta_data_read_faile_8f66da44);
FUN_8f63e200(iVar3);
iVar2 = 1;
}
}
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f635654(void)
{
int iVar1;
int iVar2;
code *pcVar3;
iVar1 = DAT_8f731d80;
if ((code *)DAT_8f731654[6] != (code *)0x0) {
(*(code *)DAT_8f731654[6])();
}
pcVar3 = (code *)DAT_8f731654[7];
if (pcVar3 != (code *)0x0) {
while (iVar2 = (*pcVar3)(), iVar2 == 0) {
pcVar3 = (code *)DAT_8f731654[7];
}
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
FUN_8f6254b4(*DAT_8f731654,((uint)DAT_8f731654[4] >> 3) * DAT_8f731654[1] * DAT_8f731654[2]);
return;
}
void FUN_8f6356f0(void)
{
undefined2 uVar1;
int iVar2;
undefined2 *puVar3;
undefined2 *puVar4;
int iVar5;
int iVar6;
int iVar7;
undefined2 *puVar8;
iVar2 = DAT_8f731d80;
iVar6 = DAT_8f731654[1];
puVar4 = (undefined2 *)*DAT_8f731654;
iVar7 = iVar6 * (DAT_8f731654[2] + -0xc);
puVar3 = puVar4 + iVar6 * 0xc;
iVar5 = iVar7 + -1;
puVar8 = puVar4;
if (iVar7 != 0) {
do {
iVar5 = iVar5 + -1;
*puVar8 = *puVar3;
puVar3 = puVar3 + 1;
puVar8 = puVar8 + 1;
} while (iVar5 != -1);
puVar4 = puVar4 + iVar7;
}
uVar1 = (undefined2)DAT_8f731640;
iVar5 = iVar6 * 0xc + -1;
if (iVar6 * 0xc != 0) {
do {
iVar5 = iVar5 + -1;
*puVar4 = uVar1;
puVar4 = puVar4 + 1;
} while (iVar5 != -1);
}
if (iVar2 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
FUN_8f635654();
return;
}
void FUN_8f6357a8(int param_1,int param_2,uint param_3,int param_4)
{
uint uVar1;
int *piVar2;
int iVar3;
undefined *puVar4;
uint uVar5;
uint uVar6;
uint uVar7;
uint uVar8;
undefined *puVar9;
uint uVar10;
int iVar11;
int iVar12;
uint unaff_r11;
iVar3 = DAT_8f731d80;
piVar2 = DAT_8f731654;
if (param_4 == 0) {
unaff_r11 = param_3;
}
uVar10 = DAT_8f731654[4];
uVar6 = uVar10 >> 3;
iVar12 = DAT_8f731654[1] * ((param_2 - param_1) * 0xc + -1);
uVar1 = DAT_8f731650;
if (param_4 == 0) {
param_3 = DAT_8f731650;
uVar1 = unaff_r11;
}
puVar9 = (undefined *)(param_1 * uVar6 * DAT_8f731654[1] * 0xc + *DAT_8f731654);
if (iVar12 != 0) {
iVar11 = 0;
if (uVar6 == 0) goto LAB_8f635870;
LAB_8f63582c:
uVar5 = 0;
uVar8 = 0;
do {
uVar7 = uVar8 + 1;
uVar5 = uVar5 | (uint)(byte)puVar9[uVar8] << ((uVar8 & 0x1f) << 3);
uVar8 = uVar7;
} while (uVar7 != uVar6);
if (uVar5 == param_3) {
uVar8 = 0;
puVar4 = puVar9;
uVar6 = uVar1;
do {
puVar9 = puVar4 + 1;
*puVar4 = (char)uVar6;
uVar8 = uVar8 + 1;
uVar10 = piVar2[4];
uVar6 = uVar6 >> 8;
puVar4 = puVar9;
if (uVar10 >> 3 <= uVar8) goto LAB_8f635858;
} while( true );
}
do {
puVar9 = puVar9 + uVar6;
LAB_8f635858:
do {
iVar11 = iVar11 + 1;
if (iVar11 == iVar12) goto LAB_8f63587c;
uVar6 = uVar10 >> 3;
if (uVar6 != 0) goto LAB_8f63582c;
LAB_8f635870:
} while (param_3 == 0);
} while( true );
}
LAB_8f63587c:
if (iVar3 == DAT_8f731d80) {
FUN_8f635654();
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6358c8(int param_1)
{
int *piVar1;
int iVar2;
undefined *puVar3;
undefined *puVar4;
uint uVar5;
int iVar6;
int iVar7;
uint uVar8;
uint uVar9;
iVar2 = DAT_8f731d80;
piVar1 = DAT_8f731654;
iVar6 = DAT_8f731654[1];
uVar9 = DAT_8f731654[4];
uVar5 = uVar9 >> 3;
uVar8 = *(uint *)(DAT_8f731648 + param_1 * 8);
puVar3 = (undefined *)
(uVar5 * DAT_8f73163c * iVar6 * 0xc + *DAT_8f731654 + DAT_8f731638 * uVar5 * 6);
if (0 < iVar6) {
iVar7 = 0;
while( true ) {
if (uVar5 != 0) {
iVar6 = 0;
puVar4 = puVar3;
uVar5 = uVar8;
do {
puVar3 = puVar4 + 1;
*puVar4 = (char)uVar5;
iVar6 = iVar6 + 1;
uVar9 = piVar1[4];
uVar5 = uVar5 >> 8;
puVar4 = puVar3;
} while (iVar6 < (int)(uVar9 >> 3));
iVar6 = piVar1[1];
}
iVar7 = iVar7 + 1;
if (iVar6 <= iVar7) break;
uVar5 = uVar9 >> 3;
}
}
DAT_8f73163c = DAT_8f73163c + 1;
DAT_8f731638 = 0;
if (DAT_8f73163c < DAT_8f731664) {
if (iVar2 == DAT_8f731d80) {
FUN_8f635654();
return;
}
}
else {
DAT_8f73163c = DAT_8f731664 + -1;
if (iVar2 == DAT_8f731d80) {
FUN_8f6356f0();
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6359f8(void)
{
undefined4 *puVar1;
int iVar2;
uint uVar3;
undefined *puVar4;
uint uVar5;
uint uVar6;
int iVar7;
int iVar8;
uint uVar9;
int iVar10;
undefined *puVar11;
iVar2 = DAT_8f731d80;
puVar1 = DAT_8f731654;
iVar10 = DAT_8f731654[2];
iVar8 = DAT_8f731654[1];
DAT_8f731644 = *DAT_8f731648;
uVar9 = DAT_8f731648[1];
puVar11 = (undefined *)*DAT_8f731654;
DAT_8f731640 = uVar9;
if (iVar8 * iVar10 != 0) {
uVar3 = DAT_8f731654[4];
iVar7 = 0;
do {
if (uVar3 >> 3 != 0) {
uVar6 = 0;
puVar4 = puVar11;
uVar5 = uVar9;
do {
puVar11 = puVar4 + 1;
*puVar4 = (char)uVar5;
uVar6 = uVar6 + 1;
uVar3 = puVar1[4];
uVar5 = uVar5 >> 8;
puVar4 = puVar11;
} while (uVar6 < uVar3 >> 3);
}
iVar7 = iVar7 + 1;
} while (iVar7 != iVar8 * iVar10);
}
DAT_8f731638 = 0;
DAT_8f73163c = 0;
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Restarted to delay deadcode elimination for space: ram
void FUN_8f635ad0(uint param_1,int param_2,int param_3)
{
uint uVar1;
int iVar2;
int iVar3;
int iVar4;
uint uVar5;
uint uVar6;
undefined *puVar7;
uint uVar9;
int iVar10;
int iVar11;
int iVar12;
uint uVar13;
undefined *puVar14;
int local_44;
undefined *puVar8;
iVar3 = DAT_8f731d80;
iVar2 = DAT_8f73163c;
if ((DAT_8f731654 != (int *)0x0) && ((param_1 & 0x80) == 0)) {
if (param_1 < 0x20) {
if (param_1 == 10) {
LAB_8f635d2c:
DAT_8f73163c = iVar2 + param_3;
DAT_8f731638 = 0;
if (DAT_8f73163c < DAT_8f731664) {
if (iVar3 == DAT_8f731d80) {
FUN_8f635654();
return;
}
}
else {
DAT_8f73163c = DAT_8f731664 + -1;
if (iVar3 == DAT_8f731d80) {
FUN_8f6356f0();
return;
}
}
goto LAB_8f635e20;
}
if (param_1 == 0xd) {
DAT_8f731638 = 0;
}
}
else if (((DAT_8f731638 != 0) || (param_1 != 0x20)) || (param_2 - 2U < 2)) {
uVar1 = (uint)DAT_8f731654[4] >> 3;
DAT_8f731640 = *(undefined4 *)(DAT_8f731648 + param_2 * 8 + 4);
uVar6 = *(uint *)(DAT_8f731648 + param_2 * 8);
iVar12 = uVar1 * (DAT_8f731654[3] + param_3 * -5);
puVar14 = (undefined *)
(param_3 * DAT_8f731638 * uVar1 * 6 +
uVar1 * DAT_8f73163c * DAT_8f731654[1] * 0xc + *DAT_8f731654);
uVar13 = *(uint *)(&DAT_8f71c78c + (param_1 - 0x20) * 8);
local_44 = 6;
DAT_8f731644 = uVar6;
do {
uVar9 = uVar13;
if (param_3 != 0) {
iVar11 = 0;
do {
iVar10 = 5;
uVar9 = uVar13;
do {
if ((uVar9 & 1) == 0) {
puVar14 = puVar14 + uVar1 * param_3;
}
else {
iVar4 = 0;
puVar8 = puVar14;
do {
puVar14 = puVar8;
if (uVar1 != 0) {
puVar14 = puVar8 + uVar1;
uVar5 = uVar6;
do {
puVar7 = puVar8 + 1;
*puVar8 = (char)uVar5;
uVar5 = uVar5 >> 8;
puVar8 = puVar7;
} while (puVar7 != puVar14);
}
iVar4 = iVar4 + 1;
puVar8 = puVar14;
} while (iVar4 != param_3);
}
iVar10 = iVar10 + -1;
uVar9 = uVar9 >> 1;
} while (iVar10 != 0);
iVar11 = iVar11 + 1;
puVar14 = puVar14 + iVar12;
} while (iVar11 != param_3);
}
uVar13 = uVar9;
local_44 = local_44 + -1;
} while (local_44 != 0);
local_44 = 6;
uVar13 = *(uint *)((param_1 - 0x20) * 8 + -0x708e3870);
do {
uVar9 = uVar13;
if (param_3 != 0) {
iVar11 = 0;
do {
iVar10 = 5;
uVar9 = uVar13;
do {
if ((uVar9 & 1) == 0) {
puVar14 = puVar14 + uVar1 * param_3;
}
else {
iVar4 = 0;
puVar8 = puVar14;
do {
puVar14 = puVar8;
if (uVar1 != 0) {
puVar14 = puVar8 + uVar1;
uVar5 = uVar6;
do {
puVar7 = puVar8 + 1;
*puVar8 = (char)uVar5;
uVar5 = uVar5 >> 8;
puVar8 = puVar7;
} while (puVar7 != puVar14);
}
iVar4 = iVar4 + 1;
puVar8 = puVar14;
} while (iVar4 != param_3);
}
iVar10 = iVar10 + -1;
uVar9 = uVar9 >> 1;
} while (iVar10 != 0);
iVar11 = iVar11 + 1;
puVar14 = puVar14 + iVar12;
} while (iVar11 != param_3);
}
uVar13 = uVar9;
local_44 = local_44 + -1;
} while (local_44 != 0);
iVar11 = DAT_8f731638 + 1;
DAT_8f731638 = iVar11;
iVar12 = FUN_8f66024c(DAT_8f731660,param_3);
if (iVar12 <= iVar11) goto LAB_8f635d2c;
}
}
if (iVar3 == DAT_8f731d80) {
return;
}
LAB_8f635e20:
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f635e74)
void FUN_8f635e38(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f635eb4)
void FUN_8f635e78(void)
{
return;
}
// WARNING: Removing unreachable block (ram,0x8f635ef4)
void FUN_8f635eb8(void)
{
return;
}
void FUN_8f635ef8(int param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
if (param_1 == 0) {
FUN_8f63cce8();
}
DAT_8f731654 = param_1;
if (*(int *)(param_1 + 0x14) == 0) {
DAT_8f731648 = &DAT_8f71c6f4;
}
else if (*(int *)(param_1 + 0x14) == 3) {
DAT_8f731648 = &DAT_8f71c73c;
}
else {
FUN_8f63cbb4(s_unknown_framebuffer_pixel_format_8f6fea34);
FUN_8f63cce8();
}
DAT_8f731650 = DAT_8f731648[0x11];
DAT_8f731644 = *DAT_8f731648;
DAT_8f731640 = DAT_8f731648[1];
DAT_8f731664 = (*(int *)(DAT_8f731654 + 8) - 1U) / 0xc;
DAT_8f731660 = *(uint *)(DAT_8f731654 + 4) / 6;
DAT_8f731638 = 0;
DAT_8f73163c = 0;
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f6360a4)
void FUN_8f636068(void)
{
return;
}
void FUN_8f6361b0(uint *param_1,undefined *param_2)
{
int iVar1;
undefined *puVar2;
uint uVar3;
undefined *puVar4;
iVar1 = DAT_8f731d80;
FUN_8f63e410(param_2,0,0x900000);
uVar3 = *param_1;
while (uVar3 != 1) {
if (uVar3 >> 0x18 != 0) {
puVar4 = param_2 + (uVar3 >> 0x18) * 3;
puVar2 = param_2;
do {
*puVar2 = (char)(uVar3 >> 0x10);
param_2 = puVar2 + 3;
puVar2[1] = (char)(uVar3 >> 8);
puVar2[2] = (char)uVar3;
puVar2 = param_2;
} while (param_2 != puVar4);
}
param_1 = param_1 + 1;
uVar3 = *param_1;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f636250(undefined4 param_1)
{
int iVar1;
int iVar2;
int *piVar3;
undefined *puVar4;
uint uVar5;
uint uVar6;
uint uVar7;
uint uVar8;
int iVar9;
uint uVar10;
DAT_8f73164c = DAT_8f71d76c;
switch(param_1) {
case 4:
puVar4 = &DAT_8f6a4354;
break;
case 5:
puVar4 = &DAT_8f66da68;
goto LAB_8f6362dc;
case 6:
puVar4 = &DAT_8f6df490;
LAB_8f6362dc:
iVar9 = DAT_8f731d80;
FUN_8f6361b0(puVar4);
if (iVar9 != DAT_8f731d80) goto LAB_8f636338;
uVar5 = 0x17b;
uVar7 = 0xb4;
goto LAB_8f6360a8;
case 7:
puVar4 = &DAT_8f6c76c4;
break;
default:
return;
}
iVar9 = DAT_8f731d80;
FUN_8f6361b0(puVar4);
if (iVar9 != DAT_8f731d80) {
LAB_8f636338:
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
uVar5 = 0x800;
uVar7 = 0x600;
LAB_8f6360a8:
iVar2 = DAT_8f731d80;
piVar3 = DAT_8f731654;
iVar9 = DAT_8f73164c;
if (DAT_8f731654 == (int *)0x0) {
FUN_8f63cbb4(s_NULL_configuration__image_cannot_8f6fea58);
return;
}
FUN_8f6359f8();
uVar6 = piVar3[1];
if (((uint)piVar3[4] >> 3 == 3) && (uVar5 != 0)) {
uVar8 = 0;
uVar10 = uVar6 * ((((uint)piVar3[2] >> 1) - 1) - (uVar5 >> 1)) + ((uVar6 >> 1) - (uVar7 >> 1));
while( true ) {
iVar1 = uVar8 * uVar6;
uVar8 = uVar8 + 1;
FUN_8f63e304(*piVar3 + (iVar1 + (uVar10 & ~((int)uVar10 >> 0x1f))) * 3,iVar9,uVar7 * 3);
if (uVar8 == uVar5) break;
uVar6 = DAT_8f731654[1];
piVar3 = DAT_8f731654;
iVar9 = iVar9 + uVar7 * 3;
}
}
if (iVar2 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
FUN_8f635654();
return;
}
void FUN_8f63633c(void)
{
int iVar1;
undefined4 uVar2;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f6359f8();
if (DAT_8f72c194 == 0) {
if ((DAT_8f72d2c4 == 0) && (DAT_8f72d22c != 0)) {
if (iVar1 == DAT_8f731d80) {
FUN_8f636250(6);
return;
}
}
else if (iVar1 == DAT_8f731d80) {
FUN_8f636250();
return;
}
}
else if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f6363fc(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f6359f8();
if (iVar1 == DAT_8f731d80) {
FUN_8f636250(7);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f63643c(int param_1,int param_2)
{
int iVar1;
int *piVar2;
int iVar3;
undefined *puVar4;
undefined4 extraout_r1;
int iVar5;
uint uVar6;
int iVar7;
int iVar8;
undefined *puVar9;
uint uVar10;
int iVar11;
uint uVar12;
iVar3 = DAT_8f731d80;
piVar2 = DAT_8f731654;
iVar1 = param_1 * 5;
if (param_2 == 1) {
uVar10 = *(uint *)(DAT_8f731648 + 0x4c);
}
else {
uVar10 = *(uint *)(DAT_8f731648 + 0x48);
}
if ((DAT_8f731658 == 0) && (DAT_8f73165c == 0)) {
iVar5 = DAT_8f731654[1];
uVar12 = (uint)DAT_8f731654[4] >> 3;
iVar11 = uVar12 * DAT_8f73163c * iVar5 * 0xc;
iVar8 = DAT_8f731638 * uVar12 * 6;
puVar9 = (undefined *)(*DAT_8f731654 + iVar11 + iVar8);
iVar8 = iVar8 + iVar11;
}
else {
iVar5 = DAT_8f731654[1];
uVar12 = (uint)DAT_8f731654[4] >> 3;
iVar8 = (DAT_8f73165c + -100) * iVar5 * uVar12 + DAT_8f731658;
puVar9 = (undefined *)(*DAT_8f731654 + iVar8);
}
iVar11 = 100;
do {
if (0 < iVar1) {
iVar5 = 0;
do {
uVar6 = uVar10;
iVar7 = iVar8;
if (uVar12 != 0) {
do {
puVar4 = puVar9 + 1;
*puVar9 = (char)uVar6;
iVar7 = iVar7 + 1;
uVar12 = (uint)piVar2[4] >> 3;
puVar9 = puVar4;
uVar6 = uVar6 >> 8;
} while (iVar7 - iVar8 < (int)uVar12);
}
iVar8 = iVar7;
iVar5 = iVar5 + 1;
} while (iVar5 != iVar1);
iVar5 = piVar2[1];
}
iVar11 = iVar11 + -1;
iVar7 = (iVar5 + param_1 * -5) * uVar12;
puVar9 = puVar9 + iVar7;
iVar8 = iVar8 + iVar7;
} while (iVar11 != 0);
iVar8 = iVar1 * uVar12 + iVar8;
DAT_8f73165c = FUN_8f66024c(iVar8,uVar12 * iVar5);
FUN_8f6602f4(iVar8,uVar12 * iVar5);
DAT_8f731658 = extraout_r1;
if (iVar3 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
FUN_8f635654();
return;
}
void FUN_8f6365dc(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f63643c(2,0);
FUN_8f63643c(1,1);
FUN_8f63643c(1,0);
FUN_8f63643c(2,1);
FUN_8f63643c(1,0);
FUN_8f63643c(4,1);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(0x68);
}
void FUN_8f63665c(void)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f63643c(2,0);
FUN_8f63643c(3,1);
FUN_8f63643c(3,0);
FUN_8f63643c(1,1);
FUN_8f63643c(1,0);
FUN_8f63643c(1,1);
if (iVar1 == DAT_8f731d80) {
FUN_8f63643c(2,0);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6366e4(uint param_1)
{
byte *pbVar1;
int iVar2;
undefined *puVar3;
int iVar4;
iVar2 = DAT_8f731d80;
if (DAT_8f71c6f0 < 1) {
iVar4 = 0;
}
else {
if (DAT_8f71ca90 == param_1) {
iVar4 = 0;
}
else {
iVar4 = 0;
puVar3 = &DAT_8f71ca8c;
do {
iVar4 = iVar4 + 1;
if (iVar4 == DAT_8f71c6f0) goto LAB_8f63674c;
pbVar1 = puVar3 + 0x24;
puVar3 = puVar3 + 0x20;
} while (*pbVar1 != param_1);
}
FUN_8f63643c((&DAT_8f71ca94)[iVar4 * 8],0);
FUN_8f63643c((&DAT_8f71ca98)[iVar4 * 8],1);
FUN_8f63643c((&DAT_8f71ca9c)[iVar4 * 8],0);
FUN_8f63643c((&DAT_8f71caa0)[iVar4 * 8],1);
FUN_8f63643c((&DAT_8f71caa4)[iVar4 * 8],0);
FUN_8f63643c((&DAT_8f71caa8)[iVar4 * 8],1);
}
LAB_8f63674c:
if (iVar2 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar4);
}
return;
}
void FUN_8f6367c8(void)
{
uint uVar1;
int iVar2;
iVar2 = DAT_8f731d80;
uVar1 = *(uint *)(DAT_8f731654 + 0x10) >> 3;
DAT_8f73163c = FUN_8f66024c((DAT_8f73165c + 2) * *(int *)(DAT_8f731654 + 4) * uVar1 + DAT_8f731658
,uVar1 * *(int *)(DAT_8f731654 + 4) * 0xc);
DAT_8f73165c = 0;
DAT_8f731638 = 5;
DAT_8f731658 = 0;
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f636860(void)
{
undefined4 *puVar1;
int iVar2;
uint uVar3;
undefined *puVar4;
uint uVar5;
int iVar6;
uint uVar7;
int iVar8;
int iVar9;
undefined *puVar10;
iVar2 = DAT_8f731d80;
puVar1 = DAT_8f731654;
iVar6 = DAT_8f731654[2];
iVar9 = DAT_8f731654[1];
puVar10 = (undefined *)*DAT_8f731654;
if (iVar9 * iVar6 != 0) {
uVar3 = DAT_8f731654[4];
iVar8 = 0;
do {
if (uVar3 >> 3 != 0) {
uVar5 = 0xffffff;
uVar7 = 0;
puVar4 = puVar10;
do {
puVar10 = puVar4 + 1;
*puVar4 = (char)uVar5;
uVar7 = uVar7 + 1;
uVar3 = puVar1[4];
uVar5 = uVar5 >> 8;
puVar4 = puVar10;
} while (uVar7 < uVar3 >> 3);
}
iVar8 = iVar8 + 1;
} while (iVar8 != iVar9 * iVar6);
}
DAT_8f731638 = 0;
DAT_8f73163c = 0;
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f636910(int param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
param_1 = param_1 % 0x67;
FUN_8f63643c((&DAT_8f71ca94)[param_1 * 8],0);
FUN_8f63643c((&DAT_8f71ca98)[param_1 * 8],1);
FUN_8f63643c((&DAT_8f71ca9c)[param_1 * 8],0);
FUN_8f63643c((&DAT_8f71caa0)[param_1 * 8],1);
FUN_8f63643c((&DAT_8f71caa4)[param_1 * 8],0);
if (iVar1 == DAT_8f731d80) {
FUN_8f63643c((&DAT_8f71caa8)[param_1 * 8],1);
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6369b4(int param_1)
{
byte bVar1;
int iVar2;
int iVar3;
int iVar4;
byte bVar5;
int iVar6;
int iVar7;
bool bVar8;
bool bVar9;
iVar2 = DAT_8f731d80;
iVar6 = param_1 + 1;
DAT_8f731638 = 0x14;
iVar3 = FUN_8f6365dc();
while( true ) {
bVar1 = *(byte *)(iVar6 + -1);
iVar7 = iVar6 - param_1;
bVar5 = (bVar1 & 0xdf) + 0xbf;
bVar9 = 0x18 < bVar5;
bVar8 = bVar5 == 0x19;
if (0x19 < bVar5) {
bVar9 = 8 < (byte)(bVar1 - 0x30);
bVar8 = (byte)(bVar1 - 0x30) == 9;
}
if (((bVar9 && !bVar8) && (bVar1 != 0x5f)) && (bVar1 != 0x2d)) break;
iVar4 = FUN_8f6366e4();
iVar6 = iVar6 + 1;
iVar3 = iVar7 * iVar4 + iVar3;
}
FUN_8f636910(iVar3);
FUN_8f63665c();
if (iVar2 == DAT_8f731d80) {
FUN_8f6367c8();
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f636a60(int param_1,undefined4 param_2)
{
int iVar1;
int iVar2;
int iVar3;
iVar1 = DAT_8f731d80;
if (param_1 == 0) {
iVar2 = FUN_8f62657c();
if (iVar2 == 0) {
iVar3 = FUN_8f601f44(0,param_2);
if (iVar3 != 0) {
FUN_8f63cbb4(s__s__ldo_control_disable_failed_8f6feadc,s_mdss_edp_panel_power_8f6fed1c);
iVar2 = iVar3;
}
}
else {
FUN_8f63cbb4(s__s__panel_disable_failed_8f6feac0,s_mdss_edp_panel_power_8f6fed1c);
}
}
else {
iVar2 = FUN_8f601f44();
if (iVar2 == 0) {
iVar2 = FUN_8f626544();
if (iVar2 != 0) {
FUN_8f63cbb4(s__s__panel_enable_failed_8f6feaa4,s_mdss_edp_panel_power_8f6fed1c);
}
}
else {
FUN_8f63cbb4(s_LDO_control_enable_failed_8f6fea88);
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f636ba4(void)
{
int iVar1;
uint uVar2;
iVar1 = DAT_8f731d80;
if (((*(short *)(DAT_8f732acc + 0x24) == 0) || (DAT_8f732aec == 0)) ||
(uVar2 = FUN_8f601afc(1,DAT_8f732aec,&DAT_8f731668), uVar2 == 0)) {
uVar2 = (uint)*(ushort *)(DAT_8f732acc + 0x26);
if (uVar2 != 0) {
uVar2 = 0;
FUN_8f613d18();
}
}
else {
FUN_8f63cbb4(s_panel_reset_failed_8f6feafc);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar2);
}
void FUN_8f636c48(int param_1,undefined4 param_2)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
if (param_1 == 0) {
if ((DAT_8f732aec == 0) || (iVar2 = FUN_8f601afc(0,DAT_8f732aec,&DAT_8f731668), iVar2 == 0)) {
iVar2 = FUN_8f601f44(0,param_2);
if (iVar2 != 0) {
FUN_8f63cbb4(s__s__ldo_control_disable_failed_8f6feadc + 4);
}
}
else {
FUN_8f63cbb4(s_panel_reset_disable_failed_8f6feb10);
}
}
else {
iVar2 = FUN_8f601f44();
if (iVar2 == 0) {
if (((*(short *)(DAT_8f732acc + 0x24) == 0) && (iVar2 = DAT_8f732aec, DAT_8f732aec != 0)) &&
(iVar2 = FUN_8f601afc(param_1,DAT_8f732aec,&DAT_8f731668), iVar2 != 0)) {
FUN_8f63cbb4(s_panel_reset_failed_8f6feafc);
}
}
else {
FUN_8f63cbb4(s_LDO_control_enable_failed_8f6fea88);
}
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f636d50(undefined4 param_1,undefined4 param_2)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f639068(param_2);
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f601970(param_1,param_2);
return;
}
}
else {
FUN_8f63cbb4(s_Clock_calculation_failed_8f6feb2c);
if (iVar1 == DAT_8f731d80) {
return;
}
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f636dd0(int param_1)
{
undefined uVar1;
int iVar2;
int iVar3;
int *piVar4;
int iVar5;
undefined4 uVar6;
int iVar7;
uint uVar8;
int iVar9;
longlong lVar10;
iVar2 = DAT_8f731d80;
if (param_1 == 0) {
iVar3 = -1;
goto LAB_8f636dfc;
}
iVar3 = *(int *)(param_1 + 0x2f0);
if (iVar3 == 0) goto LAB_8f636dfc;
iVar3 = FUN_8f607810(s_splash_8f66b34c);
if (iVar3 == -1) {
LAB_8f636eb8:
iVar3 = 0;
}
else {
lVar10 = FUN_8f60793c();
if (lVar10 == 0) {
FUN_8f63cbb4(s_ERROR__splash_Partition_invalid_o_8f6feb48);
}
else {
FUN_8f6079b4(iVar3);
FUN_8f60ff88();
iVar3 = FUN_8f60f6b0();
if (iVar3 == 0) {
FUN_8f63cbb4(s_ERROR_splash_Partition_invalid_b_8f66b484);
}
else {
piVar4 = (int *)FUN_8f63e150(0x40,0x1000);
if (piVar4 == (int *)0x0) {
FUN_8f63cbb4(s_ERROR_splash_Partition_invalid_m_8f6feb70);
}
else {
iVar3 = FUN_8f60f940((int)lVar10,(int)((ulonglong)lVar10 >> 0x20),piVar4,iVar3);
if (iVar3 == 0) {
if ((*piVar4 != 0) && ((uint)piVar4[1] < 0xb)) {
FUN_8f63e304(param_1 + 0x2f0,piVar4,0xfc);
FUN_8f63e200(piVar4);
goto LAB_8f636eb8;
}
FUN_8f63e200(piVar4);
}
else {
FUN_8f63cbb4(s_mmc_read_splash_failure_d_8f6feb98,0x1000);
FUN_8f63e200(piVar4);
}
}
}
}
uVar1 = *(undefined *)(param_1 + 0x277);
if (*(int *)(param_1 + 0x2f4) != 0) {
iVar3 = 0;
uVar8 = 0;
iVar7 = param_1;
iVar9 = param_1;
do {
*(char *)(param_1 + 0x277) = (char)*(undefined4 *)(iVar9 + 0x2f8);
iVar5 = FUN_8f636d50(1,param_1);
if (iVar5 == 0) {
*(undefined4 *)(iVar7 + 800) = 1;
*(uint *)(iVar7 + 0x324) = (uint)*(byte *)(param_1 + 0x277);
*(undefined4 *)(iVar7 + 0x328) = *(undefined4 *)(*(int *)(param_1 + 0x25c) + 0x14);
uVar6 = *(undefined4 *)(param_1 + 0x2b8);
*(undefined4 *)(iVar7 + 0x32c) = *(undefined4 *)(param_1 + 0x2b4);
*(undefined4 *)(iVar7 + 0x330) = uVar6;
FUN_8f636d50(0,param_1);
}
else {
*(undefined4 *)(iVar7 + 800) = 0;
FUN_8f63cbb4(s_frame_rate__d_failed__8f6febb4,*(undefined *)(param_1 + 0x277));
iVar3 = iVar5;
}
uVar8 = uVar8 + 1;
iVar9 = iVar9 + 4;
iVar7 = iVar7 + 0x14;
} while (uVar8 < *(uint *)(param_1 + 0x2f4));
*(undefined *)(param_1 + 0x277) = uVar1;
if (iVar3 != 0) {
FUN_8f63cbb4(s_Cannot_cal_pll_codes__8f6febcc);
goto LAB_8f636dfc;
}
}
iVar3 = FUN_8f607810(s_splash_8f66b34c);
if (iVar3 == -1) goto LAB_8f636eb8;
lVar10 = FUN_8f60793c();
if (lVar10 == 0) {
FUN_8f63cbb4(s_ERROR__splash_Partition_invalid_o_8f6feb48);
iVar3 = -1;
}
else {
FUN_8f6079b4(iVar3);
FUN_8f60ff88();
iVar3 = FUN_8f60f704((int)lVar10,(int)((ulonglong)lVar10 >> 0x20),4,param_1 + 0x2f0);
if (iVar3 == 0) goto LAB_8f636eb8;
FUN_8f63cbb4(s_mmc_write_failed__8f6febe4);
}
FUN_8f63cbb4(s_Cannot_store_pll_codes__8f6febf8);
}
if (*(int *)(param_1 + 1000) != 0) {
FUN_8f63e304(*(int *)(param_1 + 1000),param_1 + 0x2f0,0xfc);
}
LAB_8f636dfc:
if (iVar2 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar3);
}
void FUN_8f63709c(int param_1)
{
int iVar1;
int iVar2;
char *pcVar3;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f6265b4();
if (iVar2 != 0) {
pcVar3 = s_oem_adb_enable_8f66c0b8 + 8;
if (param_1 == 0) {
pcVar3 = s_disable_8f6fec14;
}
FUN_8f63cbb4(s_Backlight__s_failed_8f6fec1c,pcVar3);
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(iVar2);
}
void FUN_8f637194(undefined4 param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f63e304(param_1,&DAT_8f732acc,0xa0);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6371d8(undefined4 param_1,undefined4 param_2,int param_3)
{
int iVar1;
int iVar2;
uint uVar3;
int iVar4;
char *pcVar5;
char *pcVar6;
int iVar7;
int *piVar8;
iVar1 = DAT_8f731d80;
DAT_8f731bec = 0;
iVar2 = FUN_8f602484(param_1,&DAT_8f732acc,&DAT_8f731668,&DAT_8f731ac4);
if (iVar2 == 1) {
FUN_8f601df4(&DAT_8f731ac4);
iVar2 = FUN_8f637774();
piVar8 = DAT_8f732acc;
if (*(int *)(iVar2 + 0x88) != 0) {
uVar3 = DAT_8f732acc[0xc];
if ((uVar3 & 9) == 0) {
iVar2 = FUN_8f63e6f4(DAT_8f732acc[4],s_DISPLAY_1_8f661e90);
if (iVar2 == 0) {
piVar8[0xc] = uVar3 | 0x20;
pcVar6 = &DAT_8f662054;
pcVar5 = s_DISPLAY_2_8f66205c;
}
else {
pcVar6 = s_dsi_0__8f661e74;
pcVar5 = s_DISPLAY_1_8f661e90;
piVar8[0xc] = uVar3 & 0xffffffdf;
}
piVar8[4] = (int)pcVar5;
piVar8[1] = (int)pcVar6;
}
else {
FUN_8f63cbb4(s_DSI_swap_invalid_for_split_DSI_p_8f6fec34);
}
}
iVar2 = FUN_8f637774();
iVar4 = FUN_8f637774();
piVar8 = DAT_8f732acc;
if (((*DAT_8f732acc == 0) || (DAT_8f732acc[0xf] == 0)) ||
(uVar3 = DAT_8f732acc[0xc], (uVar3 & 0x19) == 0)) {
if ((iVar4 + 0x40 == 0) ||
(iVar4 = FUN_8f63e6f4(iVar4 + 0x40,s_IMEI____s_8f666cc0 + 0xc), iVar4 == 0)) {
uVar3 = piVar8[0xc];
goto LAB_8f637340;
}
}
else {
LAB_8f637340:
if ((uVar3 & 0x20) != 0) {
*(undefined4 *)(iVar2 + 0xa0) = 2;
}
}
iVar4 = FUN_8f637774();
piVar8 = DAT_8f732acc;
iVar7 = *DAT_8f732acc;
if (((iVar7 == 0) || (DAT_8f732acc[0xf] == 0)) || ((DAT_8f732acc[0xc] & 0x19U) == 0)) {
if ((iVar4 + 0x40 == 0) ||
(iVar4 = FUN_8f63e6f4(iVar4 + 0x40,s_IMEI____s_8f666cc0 + 0xc), iVar4 == 0)) {
if ((iVar7 != 0) && ((piVar8[0xf] != 0 && ((piVar8[0xc] & 0x19U) != 0)))) goto LAB_8f637378;
if ((DAT_8f731bec != 2) &&
(iVar4 = FUN_8f63e6f4(piVar8[4],s_DISPLAY_1_8f661e90), iVar4 == 0)) {
iVar4 = *(int *)(iVar2 + 0xa0);
if (iVar4 != 2) goto LAB_8f637390;
FUN_8f63cbb4(s_Single_DSI_with_DSI_0_on_28nm_20_8f6fecb0);
*(undefined4 *)(iVar2 + 0xa0) = 1;
piVar8 = DAT_8f732acc;
goto LAB_8f6374b8;
}
goto LAB_8f637540;
}
if (*(int *)(iVar2 + 0xa0) != 0) {
FUN_8f63cbb4(s_Dual_DSI_config_detected_Use_def_8f6fec5c);
*(undefined4 *)(iVar2 + 0xa0) = 0;
}
}
else {
LAB_8f637378:
if (DAT_8f731bec == 2) {
LAB_8f637540:
iVar4 = *(int *)(iVar2 + 0xa0);
if (iVar4 != 2) goto LAB_8f637390;
piVar8[0xc] = piVar8[0xc] | 0x20;
}
else {
iVar4 = *(int *)(iVar2 + 0xa0);
if (iVar4 == 2) {
FUN_8f63cbb4(s_Split_DSI_on_28nm_20nm_Use_DSI_P_8f6fec88);
*(undefined4 *)(iVar2 + 0xa0) = 1;
piVar8 = DAT_8f732acc;
}
else {
LAB_8f637390:
if (iVar4 != 1) goto LAB_8f637398;
}
LAB_8f6374b8:
piVar8[0xc] = piVar8[0xc] & 0xffffffdf;
}
}
LAB_8f637398:
iVar2 = FUN_8f6382f8(&DAT_8f731668,&DAT_8f732acc);
if (iVar2 != 0) {
FUN_8f63cbb4(s_DSI_panel_init_failed__8f6fece4);
DAT_8f731bf0 = '\0';
uVar3 = 0xffffffff;
goto LAB_8f637288;
}
DAT_8f731a80 = DAT_8f73166c;
DAT_8f731a88 = DAT_8f731670;
DAT_8f731aac = FUN_8f636d50;
DAT_8f731aa0 = FUN_8f636c48;
DAT_8f731ab0 = FUN_8f636dd0;
DAT_8f731aa8 = (code *)&LAB_8f637108;
DAT_8f731a8c = (uint)DAT_8f7318aa;
DAT_8f731ab8 = FUN_8f636ba4;
DAT_8f731ac0 = &DAT_8f636b6c;
DAT_8f731a7c = DAT_8f731668;
DAT_8f731a78 = param_3;
if (DAT_8f731958 != 0) {
DAT_8f731a78 = param_3 + 0x1000;
iRam8f731a50 = param_3;
}
DAT_8f7318c0 = &DAT_8f731ac4;
DAT_8f731a84 = DAT_8f731a7c;
}
else {
if (iVar2 != 2) {
FUN_8f63cbb4(s_Target_panel_init_not_found__8f6fecfc);
uVar3 = 0xffffffe8;
DAT_8f731bf0 = '\0';
goto LAB_8f637288;
}
FUN_8f6264d8(&DAT_8f731668);
DAT_8f731aa4 = &DAT_8f636b34;
DAT_8f731aa0 = FUN_8f636a60;
DAT_8f731a8c = 3;
DAT_8f731aa8 = FUN_8f63709c;
DAT_8f731a78 = param_3;
}
DAT_8f731a98 = param_2;
uVar3 = FUN_8f6214fc(&DAT_8f731668);
DAT_8f731bf0 = '\x01' - (char)uVar3;
if (1 < uVar3) {
DAT_8f731bf0 = '\0';
}
LAB_8f637288:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
// WARNING: Removing unreachable block (ram,0x8f637608)
void FUN_8f6375b0(void)
{
if (DAT_8f731bf0 == '\0') {
return;
}
FUN_8f6216f8();
return;
}
void FUN_8f63760c(undefined4 param_1)
{
int iVar1;
uint uVar2;
uint uVar3;
uint uVar4;
iVar1 = DAT_8f731d80;
uVar2 = FUN_8f63e678(param_1,0x3a);
uVar3 = FUN_8f63e678(param_1,0x23);
uVar4 = uVar2;
if (uVar2 != 0) {
uVar4 = 1;
}
if (uVar3 == 0 || uVar2 == 0) {
if (uVar4 != 0) {
uVar3 = uVar2;
}
}
else if (uVar2 <= uVar3) {
uVar3 = uVar2;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar3);
}
void FUN_8f637684(int *param_1,int param_2,int param_3,int **param_4)
{
int iVar1;
int *piVar2;
int iVar3;
iVar1 = DAT_8f731d80;
if (param_2 != 0) {
if (*param_1 == param_3) {
iVar3 = 0;
}
else {
iVar3 = 0;
piVar2 = param_1 + 4;
do {
param_1 = piVar2;
iVar3 = iVar3 + 1;
if (iVar3 == param_2) goto LAB_8f6376d8;
piVar2 = param_1 + 4;
} while (*param_1 != param_3);
}
*param_4 = param_1 + 1;
if (param_2 != iVar3) {
if (iVar1 == DAT_8f731d80) {
return;
}
goto LAB_8f63772c;
}
}
LAB_8f6376d8:
if (iVar1 == DAT_8f731d80) {
FUN_8f63cbb4(s_Sim_mode_not_found_in_lookup_tab_8f6fed34);
return;
}
LAB_8f63772c:
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f637730(undefined4 param_1)
{
int iVar1;
iVar1 = DAT_8f731d80;
FUN_8f63e304(param_1,&DAT_8f71d770,0xa4);
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
// WARNING: Removing unreachable block (ram,0x8f6377ac)
void FUN_8f637774(void)
{
return;
}
void FUN_8f6377b0(int param_1)
{
int iVar1;
int iVar2;
undefined *puVar3;
uint uVar4;
int iVar5;
undefined *puVar6;
undefined *puVar7;
undefined *puVar8;
undefined *puVar9;
undefined *puVar10;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f63ec34(param_1,s___sNumber_s__8f70e0a4 + 0xc);
puVar9 = (undefined *)(param_1 + iVar2);
iVar2 = FUN_8f63eccc(puVar9,s_prim__8f6fed58);
if (iVar2 == 0) {
iVar2 = FUN_8f63eccc(puVar9,&DAT_8f6fed60);
if (iVar2 == 0) {
puVar3 = (undefined *)FUN_8f63760c(puVar9);
if (puVar3 == (undefined *)0x0) {
FUN_8f63e8d8(&DAT_8f71d770,puVar9,0x40);
}
else {
if (puVar9 < puVar3) {
puVar10 = puVar9;
do {
(&DAT_8f71d770)[iVar2] = *puVar10;
iVar2 = iVar2 + 1;
puVar10 = puVar9 + iVar2;
} while (iVar2 != (int)puVar3 - (int)puVar9);
iVar2 = (int)puVar3 - (int)puVar9;
}
(&DAT_8f71d770)[iVar2] = 0;
}
goto LAB_8f637850;
}
}
else {
puVar10 = (undefined *)(iVar2 + 5);
puVar3 = (undefined *)FUN_8f63760c(puVar10);
if (puVar3 == (undefined *)0x0) {
iVar5 = FUN_8f63e9a0(puVar10);
puVar3 = puVar10 + iVar5;
}
if (puVar10 < puVar3) {
puVar7 = (undefined *)0x0;
puVar6 = puVar10;
do {
(&DAT_8f71d770)[(int)puVar7] = *puVar6;
puVar7 = puVar7 + 1;
puVar6 = puVar10 + (int)puVar7;
} while (puVar7 != puVar3 + (-5 - iVar2));
puVar3 = puVar3 + (-5 - iVar2);
}
else {
puVar3 = (undefined *)0x0;
}
(&DAT_8f71d770)[(int)puVar3] = 0;
LAB_8f637850:
iVar2 = FUN_8f63eccc(puVar9,&DAT_8f6fed60);
if (iVar2 == 0) goto LAB_8f6378c4;
}
puVar3 = (undefined *)(iVar2 + 4);
puVar10 = (undefined *)FUN_8f63760c(puVar3);
if (puVar10 == (undefined *)0x0) {
iVar5 = FUN_8f63e9a0(puVar3);
puVar10 = puVar3 + iVar5;
}
if (puVar3 < puVar10) {
puVar6 = (undefined *)(iVar2 + 5);
puVar7 = PTR_DAT_8f637acc;
do {
puVar8 = puVar6 + 1;
puVar7 = puVar7 + 1;
*puVar7 = *puVar3;
puVar3 = puVar6;
puVar6 = puVar8;
} while (puVar8 != puVar10 + 1);
puVar10 = puVar10 + (1 - (int)(undefined *)(iVar2 + 5));
}
else {
puVar10 = (undefined *)0x0;
}
(&DAT_8f71d7b0)[(int)puVar10] = 0;
LAB_8f6378c4:
DAT_8f71d7f4 = FUN_8f63eccc(puVar9,s__skip_8f6fed68);
if (DAT_8f71d7f4 != 0) {
DAT_8f71d7f4 = 1;
}
uVar4 = FUN_8f63eccc(puVar9,s__disable_8f6fed70);
DAT_8f71d7f0 = 1 - uVar4;
if (1 < uVar4) {
DAT_8f71d7f0 = 0;
}
DAT_8f71d7f8 = FUN_8f63eccc(puVar9,s__swap_8f6fed7c);
if (DAT_8f71d7f8 != 0) {
DAT_8f71d7f8 = 1;
}
iVar2 = FUN_8f63eccc(puVar9,s__pll0_8f6fed84);
if (iVar2 == 0) {
iVar2 = FUN_8f63eccc(puVar9,s__pll1_8f6fed8c);
if (iVar2 != 0) {
DAT_8f71d810 = 2;
}
}
else {
DAT_8f71d810 = 1;
}
DAT_8f71d7fc = 0;
iVar2 = FUN_8f63eccc(puVar9,s__sim_hwte_8f6fed94);
if (iVar2 == 0) {
iVar2 = FUN_8f63eccc(puVar9,s__sim_swte_8f6feda0);
if (iVar2 == 0) {
iVar2 = FUN_8f63eccc(puVar9,&DAT_8f6fedac);
if (iVar2 != 0) {
DAT_8f71d7fc = 1;
}
}
else {
DAT_8f71d7fc = 2;
}
}
else {
DAT_8f71d7fc = 3;
}
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f637ad0(int param_1,uint param_2)
{
int iVar1;
undefined4 *puVar2;
int iVar3;
int iVar4;
uint uVar5;
char *pcVar6;
undefined4 *puVar7;
undefined4 *puVar8;
char *pcVar9;
char *pcVar10;
undefined *puVar11;
uint uVar12;
int iVar13;
uint local_e4;
uint local_e0;
undefined4 *local_d0;
uint *local_cc [40];
int local_2c;
local_2c = DAT_8f731d80;
local_d0 = (undefined4 *)0x0;
iVar1 = FUN_8f63e9a0(s__mdss_mdp_panel__8f6fee3c);
FUN_8f637194(local_cc);
puVar2 = (undefined4 *)FUN_8f63e6f4(&DAT_8f71d770,s_sim_video_panel_8f661ce4);
if (puVar2 == (undefined4 *)0x0) {
pcVar10 = s_qcom_mdss_dsi_sim_video_8f6fee24;
puVar8 = puVar2;
LAB_8f637bc0:
pcVar9 = s_dsi_0__8f661e74;
LAB_8f637bc8:
if ((undefined4 *)pcVar10 == (undefined4 *)0x0) {
LAB_8f637f54:
FUN_8f63cbb4(s_panel_node_or_dsi_ctrl_not_prese_8f6feeac);
puVar8 = (undefined4 *)0x0;
goto LAB_8f637eac;
}
if ((((uint)puVar2 & 0x18) != 0) && (puVar8 == (undefined4 *)0x0)) {
FUN_8f63cbb4(s_slave_node_not_present_in_dual_d_8f6feef8);
goto LAB_8f637eac;
}
if (((uint)puVar2 & 0x19) == 0) {
pcVar6 = s_adv7533_1080p_video_8f71d844;
do {
iVar3 = FUN_8f63ea58(PTR_DAT_8f6381a4,pcVar6,0x40);
if (iVar3 == 0) {
puVar8 = (undefined4 *)((int)pcVar6 + 0x40);
if (*(int *)((int)pcVar6 + 0x80) < 0) goto LAB_8f637fa8;
if (*(int *)((int)pcVar6 + 0x80) != 1) goto LAB_8f637fb4;
FUN_8f63cbb4(s_Invalid_config__Secondary_panel_c_8f6fefa4);
goto LAB_8f638034;
}
pcVar6 = (char *)((int)pcVar6 + 0x84);
} while ((undefined4 *)pcVar6 != &DAT_8f71f104);
FUN_8f63cbb4(s_Panel_name__s_not_found_in_looku_8f6fee80,PTR_DAT_8f6381a4);
LAB_8f637fa8:
FUN_8f63cbb4(s_Sec__panel_not_found__Continue_w_8f6fef70);
LAB_8f637fb4:
if (puVar8 != (undefined4 *)0x0) {
FUN_8f63e758(PTR_s_single_dsi_8f6381a0,s_dual_dsi_8f6ff000);
goto LAB_8f637c0c;
}
LAB_8f638034:
FUN_8f63e758(PTR_s_single_dsi_8f6381a0,s_single_dsi_8f6ff00c);
iVar3 = FUN_8f63e9a0(PTR_s_single_dsi_8f6381a0);
iVar3 = iVar3 + 5;
local_e0 = FUN_8f63e9a0(pcVar9);
local_e0 = local_e0 & 0xffff;
local_e4 = FUN_8f63e9a0(pcVar10);
local_e4 = local_e4 & 0xffff;
LAB_8f637c50:
puVar2 = (undefined4 *)&DAT_8f661cdc;
}
else {
FUN_8f63cbb4(s_Invalid_config__Primary_panel_is_8f6fef24);
if (puVar8 == (undefined4 *)0x0) goto LAB_8f638034;
FUN_8f63e758(PTR_s_single_dsi_8f6381a0,s_split_dsi_8f6feff4);
LAB_8f637c0c:
iVar3 = FUN_8f63e9a0(PTR_s_single_dsi_8f6381a0);
iVar3 = iVar3 + 5;
local_e0 = FUN_8f63e9a0(pcVar9);
local_e0 = local_e0 & 0xffff;
local_e4 = FUN_8f63e9a0(pcVar10);
local_e4 = local_e4 & 0xffff;
iVar4 = FUN_8f63e6f4(puVar8,s_IMEI____s_8f666cc0 + 0xc);
puVar2 = puVar8;
if (iVar4 == 0) goto LAB_8f637c50;
}
uVar5 = FUN_8f63e9a0(puVar2);
if (local_cc[0] == (uint *)0x0) {
puVar11 = &DAT_8f6fedcc;
}
else {
iVar4 = FUN_8f63e6f4(local_cc[0][4],s_DISPLAY_2_8f66205c);
puVar11 = &DAT_8f6fedcc;
if (iVar4 == 0) {
puVar11 = &DAT_8f6fedc8;
}
}
iVar4 = FUN_8f63e9a0(puVar11);
uVar12 = iVar3 + 3 + (uVar5 & 0xffff) + local_e0 + iVar1 + local_e4 + iVar4;
if ((DAT_8f71d7f4 == 0) ||
(pcVar6 = (char *)FUN_8f63e6f4(s_single_dsi_8f71d800,s_dual_dsi_8f6ff000),
pcVar6 != (char *)0x0)) {
pcVar6 = DAT_8f71d810;
if (DAT_8f71d810 != (char *)0x0) {
pcVar6 = s__pll1_8f6fed8c;
if (DAT_8f71d810 == (char *)0x1) {
pcVar6 = s__pll0_8f6fed84;
}
iVar3 = FUN_8f63e9a0(pcVar6);
uVar12 = uVar12 + iVar3;
}
}
else {
if (DAT_8f71d810 != (char *)0x0) {
FUN_8f63cbb4(s_Dual_DSI_config_detected__Use_de_8f6ff018);
DAT_8f71d810 = pcVar6;
}
pcVar6 = (char *)0x0;
}
if (DAT_8f71d7fc != 0) {
FUN_8f637684(&DAT_8f71d814,3,DAT_8f71d7fc,&local_d0);
puVar8 = local_d0;
if (local_d0 == (undefined4 *)0x0) {
FUN_8f63cbb4(s_SIM_string_NULL_but_mode_is_not_N_8f6ff044);
goto LAB_8f637eac;
}
iVar3 = FUN_8f63e9a0(local_d0);
uVar12 = uVar12 + 10 + iVar3;
}
if (uVar12 <= param_2) {
FUN_8f63e8d8(param_1,s__mdss_mdp_panel__8f6fee3c,param_2);
uVar12 = param_2 - iVar1 & 0xffff;
iVar13 = param_1 + iVar1 + 2;
iVar4 = iVar13 + local_e0;
FUN_8f63e8d8(param_1 + iVar1,&DAT_8f662058,uVar12);
iVar3 = iVar4 + local_e4;
uVar12 = uVar12 - 2 & 0xffff;
FUN_8f63e8d8(iVar13,pcVar9,uVar12);
uVar12 = uVar12 - local_e0 & 0xffff;
FUN_8f63e8d8(iVar4,pcVar10,uVar12);
uVar12 = uVar12 - local_e4 & 0xffff;
FUN_8f63e8d8(iVar3,puVar11,uVar12);
iVar1 = FUN_8f63e9a0(puVar11);
iVar3 = iVar3 + iVar1;
iVar13 = iVar3 + (uVar5 & 0xffff);
uVar12 = uVar12 - iVar1 & 0xffff;
iVar4 = iVar13 + 5;
FUN_8f63e8d8(iVar3,puVar2,uVar12);
uVar5 = uVar12 - uVar5 & 0xffff;
FUN_8f63e8d8(iVar13,s__cfg__8f6ff06c,uVar5);
uVar5 = uVar5 - 5 & 0xffff;
FUN_8f63e8d8(iVar4,PTR_s_single_dsi_8f6381a0,uVar5);
iVar1 = FUN_8f63e9a0(PTR_s_single_dsi_8f6381a0);
iVar4 = iVar4 + iVar1;
uVar5 = uVar5 - iVar1 & 0xffff;
if (pcVar6 != (char *)0x0) {
FUN_8f63e8d8(iVar4,pcVar6,uVar5);
iVar1 = FUN_8f63e9a0(pcVar6);
iVar4 = iVar4 + iVar1;
uVar5 = uVar5 - iVar1 & 0xffff;
}
if (local_d0 == (undefined4 *)0x0) {
puVar8 = (undefined4 *)0x1;
}
else {
FUN_8f63e8d8(iVar4,s__override__8f6ff074,uVar5);
FUN_8f63e8d8(iVar4 + 10,local_d0,uVar5 - 10 & 0xffff);
puVar8 = (undefined4 *)0x1;
}
goto LAB_8f637eac;
}
}
else {
iVar3 = FUN_8f63e6f4(&DAT_8f71d770,s_sim_dualdsi_video_panel_8f6fee50);
if (iVar3 == 0) {
pcVar10 = s_qcom_mdss_dsi_dual_sim_video_8f6fee04;
puVar2 = (undefined4 *)0x1;
puVar8 = (undefined4 *)pcVar10;
goto LAB_8f637bc0;
}
puVar2 = (undefined4 *)FUN_8f63e6f4(&DAT_8f71d770,s_sim_cmd_panel_8f661cf4);
if (puVar2 == (undefined4 *)0x0) {
pcVar10 = s_qcom_mdss_dsi_sim_cmd_8f6fedec;
puVar8 = puVar2;
goto LAB_8f637bc0;
}
iVar3 = FUN_8f63e6f4(&DAT_8f71d770,s_sim_dualdsi_cmd_panel_8f6fee68);
if (iVar3 == 0) {
pcVar10 = s_qcom_mdss_dsi_dual_sim_cmd_8f6fedd0;
puVar2 = (undefined4 *)0x1;
puVar8 = (undefined4 *)pcVar10;
goto LAB_8f637bc0;
}
if (DAT_8f71d7f4 != 0) {
pcVar10 = s_adv7533_1080p_video_8f71d844;
do {
puVar2 = (undefined4 *)FUN_8f63ea58(&DAT_8f71d770,pcVar10,0x40);
if (puVar2 == (undefined4 *)0x0) {
puVar7 = *(undefined4 **)((int)pcVar10 + 0x80);
pcVar10 = (char *)((int)pcVar10 + 0x40);
if ((int)puVar7 < 0) goto LAB_8f637b88;
puVar8 = puVar2;
if (puVar7 == (undefined4 *)0x1) {
puVar2 = puVar7;
puVar8 = (undefined4 *)pcVar10;
}
goto LAB_8f637bc0;
}
pcVar10 = (char *)((int)pcVar10 + 0x84);
} while ((undefined4 *)pcVar10 != &DAT_8f71f104);
FUN_8f63cbb4(s_Panel_name__s_not_found_in_looku_8f6fee80,&DAT_8f71d770);
}
LAB_8f637b88:
if (local_cc[0] != (uint *)0x0) {
pcVar9 = (char *)local_cc[0][1];
pcVar10 = (char *)*local_cc[0];
puVar8 = (undefined4 *)local_cc[0][0xf];
if (pcVar9 != (char *)0x0) {
puVar2 = (undefined4 *)(local_cc[0][0xc] & 0x1a);
goto LAB_8f637bc8;
}
goto LAB_8f637f54;
}
iVar3 = FUN_8f625f40();
pcVar10 = s_0_dsi_0__8f6fedbc;
if (iVar3 != 0) {
pcVar10 = s_0_edp__8f6fedb4;
}
iVar3 = FUN_8f63e9a0(pcVar10);
if ((uint)(iVar3 + iVar1) <= param_2) {
FUN_8f63e8d8(param_1,s__mdss_mdp_panel__8f6fee3c,param_2);
FUN_8f63e8d8(param_1 + iVar1,pcVar10,param_2 - iVar1 & 0xffff);
puVar8 = (undefined4 *)0x1;
goto LAB_8f637eac;
}
}
FUN_8f63cbb4(s_display_command_line_buffer_is_s_8f6feed0);
puVar8 = (undefined4 *)0x0;
LAB_8f637eac:
if (local_2c != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(puVar8);
}
return;
}
void FUN_8f638218(void)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f626430();
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f60239c();
return;
}
}
else if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f63826c(void)
{
int iVar1;
int iVar2;
iVar1 = DAT_8f731d80;
iVar2 = FUN_8f6264a0();
if (iVar2 == 0) {
if (iVar1 == DAT_8f731d80) {
FUN_8f602408();
return;
}
}
else if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
void FUN_8f6382f8(int *param_1,int *param_2)
{
char cVar1;
ushort uVar2;
ushort uVar3;
ushort uVar4;
ushort uVar5;
ushort uVar6;
ushort uVar7;
ushort uVar8;
ushort uVar9;
ushort uVar10;
int iVar11;
byte *pbVar12;
int iVar13;
int iVar14;
int iVar15;
int iVar16;
int iVar17;
undefined uVar18;
ushort *puVar19;
uint uVar20;
undefined4 uVar21;
int iVar22;
int iVar23;
int iVar24;
int iVar25;
int iVar26;
undefined *puVar27;
int iVar28;
bool bVar29;
iVar11 = DAT_8f731d80;
iVar25 = *param_2;
puVar19 = (ushort *)param_2[1];
uVar2 = puVar19[4];
bVar29 = (*(uint *)(iVar25 + 0x30) & 2) != 0;
uVar3 = puVar19[5];
uVar4 = puVar19[2];
uVar5 = *puVar19;
uVar6 = puVar19[1];
uVar7 = puVar19[7];
uVar8 = puVar19[6];
uVar9 = puVar19[8];
param_1[0x17] = (uint)puVar19[3];
uVar10 = puVar19[9];
param_1[0x18] = (uint)uVar4;
uVar4 = puVar19[10];
param_1[0x19] = (uint)uVar2;
uVar2 = puVar19[0xb];
uVar20 = (uint)puVar19[0xc];
param_1[0x1f] = (uint)uVar3;
iVar23 = (uint)uVar2 + (uint)uVar6 + uVar20;
param_1[0xc] = uVar20;
if (bVar29) {
uVar20 = 1;
}
param_1[0xe] = (uint)uVar4;
param_1[0x1a] = (uint)uVar7;
param_1[0x1b] = (uint)uVar8;
param_1[0x1c] = (uint)uVar9;
param_1[1] = iVar23;
param_1[0xb] = (uint)uVar2;
param_1[0xd] = (uint)uVar10;
*param_1 = (uint)uVar10 + (uint)uVar5 + (uint)uVar4;
if (bVar29) {
*(char *)(param_1 + 0x22) = (char)uVar20;
iVar25 = *param_2;
}
uVar20 = *(uint *)(iVar25 + 0x30);
if ((uVar20 & 4) != 0) {
*(undefined *)((int)param_1 + 0x8a) = 1;
uVar20 = *(uint *)(*param_2 + 0x30);
}
if ((uVar20 & 8) != 0) {
*(undefined *)((int)param_1 + 0x89) = 1;
uVar20 = *(uint *)(*param_2 + 0x30);
}
if ((uVar20 & 0x10) != 0) {
*(undefined *)((int)param_1 + 0x8b) = 1;
}
iVar23 = param_2[2];
param_1[0x1d] = (uint)*(byte *)(iVar23 + 3);
param_1[0x1e] = (uint)*(byte *)(iVar23 + 2);
*(undefined *)((int)param_1 + 0x249) = *(undefined *)(iVar23 + 1);
pbVar12 = (byte *)param_2[2];
uVar20 = (uint)*pbVar12;
param_1[2] = uVar20;
if (uVar20 == 0x10) {
*(undefined *)((int)param_1 + 0x242) = 0;
}
else if (uVar20 == 0x12) {
if (pbVar12[4] == 0) {
uVar18 = 1;
}
else {
uVar18 = 2;
}
*(undefined *)((int)param_1 + 0x242) = uVar18;
}
else {
*(undefined *)((int)param_1 + 0x242) = 3;
}
cVar1 = *(char *)(*param_2 + 0xe);
*(char *)((int)param_1 + 0x235) = cVar1;
if (cVar1 == '\0') {
iVar23 = 8;
}
else {
iVar23 = 9;
}
param_1[3] = iVar23;
iVar25 = *param_2;
iVar23 = *(int *)(iVar25 + 0x14);
param_1[5] = *(int *)(iVar25 + 0x18);
param_1[6] = iVar23;
*(undefined *)((int)param_1 + 0x236) = *(undefined *)(iVar25 + 0x2a);
*(char *)((int)param_1 + 0x289) = (char)*(undefined2 *)(*param_2 + 0x22);
*(char *)((int)param_1 + 0x251) = (char)*(undefined2 *)(*param_2 + 0x20);
*(char *)((int)param_1 + 0x277) = (char)*(undefined2 *)(*param_2 + 0x1c);
*(char *)((int)param_1 + 0x27d) = (char)*(undefined2 *)(*param_2 + 0x28);
iVar23 = *param_2;
uVar20 = *(uint *)(iVar23 + 0x30);
if ((uVar20 & 1) != 0) {
*(undefined *)((int)param_1 + 0x287) = 1;
iVar23 = *param_2;
uVar20 = *(uint *)(iVar23 + 0x30);
}
if ((uVar20 & 0x20) != 0) {
*(undefined *)(param_1 + 0xa2) = 1;
iVar23 = *param_2;
}
*(undefined *)((int)param_1 + 0x28a) = *(undefined *)(iVar23 + 0x38);
iVar25 = *param_2;
iVar23 = *(int *)(iVar25 + 0x2c);
param_1[0x8f] = iVar23;
iVar26 = *(int *)(iVar25 + 0x34);
if (iVar23 != 0) {
param_1[5] = iVar23;
}
uVar21 = *(undefined4 *)(iVar25 + 0x10);
param_1[0xa4] = iVar26;
iVar23 = FUN_8f601e90(0x1a98000);
iVar25 = FUN_8f601e90(0x1a96000);
iVar26 = FUN_8f601e90(0x1a98500);
iVar13 = FUN_8f601e90(0x1a96400);
iVar14 = FUN_8f601e90(0x1a98300);
iVar15 = FUN_8f601e90(0x1a96a00);
iVar16 = FUN_8f601e90(0x1a98780);
iVar17 = FUN_8f63e6f4(uVar21,s_DISPLAY_1_8f661e90);
if (iVar17 == 0) {
param_1[0xa6] = iVar26 + 0x1a98500;
param_1[0xa5] = iVar23 + 0x1a98000;
param_1[0xa7] = iVar25 + 0x1a96000;
param_1[0xa8] = iVar13 + 0x1a96400;
param_1[7] = 1;
if (*(char *)(param_1 + 0xa2) != '\0') {
FUN_8f63cbb4(s__s__Invalid_combination__DSI0_co_8f6ff080,s_dsi_panel_ctl_base_setup_8f6ff100);
*(undefined *)(param_1 + 0xa2) = 0;
}
param_1[0xab] = iVar14 + 0x1a98300;
param_1[0xac] = iVar15 + 0x1a96a00;
}
else {
iVar17 = FUN_8f63e6f4(uVar21,s_DISPLAY_2_8f66205c);
if (iVar17 != 0) {
param_1[7] = 0;
FUN_8f63cbb4(s__s__Unkown_panel_destination___d_8f6ff0c8,s_dsi_panel_ctl_base_setup_8f6ff100);
uVar21 = 0xffffffff;
goto LAB_8f63877c;
}
param_1[0xa8] = iVar26 + 0x1a98500;
param_1[0xa5] = iVar25 + 0x1a96000;
param_1[0xa6] = iVar13 + 0x1a96400;
param_1[0xa7] = iVar23 + 0x1a98000;
param_1[7] = 2;
if (*(char *)(param_1 + 0xa2) == '\0') {
param_1[0xab] = iVar14 + 0x1a98300;
param_1[0xac] = iVar15 + 0x1a96a00;
}
else {
param_1[0xab] = iVar15 + 0x1a96a00;
param_1[0xac] = iVar14 + 0x1a98300;
}
}
puVar27 = (undefined *)param_2[3];
param_1[0xa9] = iVar16 + 0x1a98780;
param_1[0xaa] = iVar16 + 0x1a98780;
*(undefined *)(param_1 + 0x9c) = *puVar27;
*(undefined *)((int)param_1 + 0x271) = *(undefined *)(param_2[3] + 1);
*(undefined *)((int)param_1 + 0x272) = *(undefined *)(param_2[3] + 2);
*(undefined *)((int)param_1 + 0x273) = *(undefined *)(param_2[3] + 3);
*(undefined *)(param_1 + 0x9d) = *(undefined *)(param_2[3] + 4);
*(undefined *)((int)param_1 + 0x275) = *(undefined *)(param_2[3] + 5);
*(undefined *)((int)param_1 + 0x276) = *(undefined *)(param_2[3] + 6);
iVar23 = param_2[4];
param_1[0x8e] = *(int *)(param_2[3] + 8);
*(undefined *)((int)param_1 + 0x279) = *(undefined *)(iVar23 + 0x18);
*(char *)((int)param_1 + 0x27a) = (char)*(undefined4 *)(param_2[4] + 0xc);
*(char *)((int)param_1 + 0x27b) = (char)*(undefined4 *)(param_2[4] + 8);
*(undefined *)(param_1 + 0x9f) = *(undefined *)(param_2[4] + 1);
*(undefined *)((int)param_1 + 0x243) = *(undefined *)param_2[6];
*(undefined *)(param_1 + 0x91) = *(undefined *)(param_2[6] + 2);
*(undefined *)((int)param_1 + 0x245) = *(undefined *)(param_2[6] + 3);
*(undefined *)((int)param_1 + 0x246) = *(undefined *)(param_2[6] + 4);
*(undefined *)((int)param_1 + 0x247) = *(undefined *)(param_2[6] + 5);
*(undefined *)((int)param_1 + 0x286) = *(undefined *)(param_2[6] + 1);
*(undefined *)((int)param_1 + 0x285) = *(undefined *)(param_2[6] + 6);
*(undefined *)((int)param_1 + 0x24f) = *(undefined *)(param_2[7] + 2);
*(undefined *)(param_1 + 0x94) = *(undefined *)(param_2[7] + 3);
*(undefined *)((int)param_1 + 0x27e) = *(undefined *)param_2[7];
*(undefined *)((int)param_1 + 0x27f) = *(undefined *)(param_2[7] + 1);
param_1[0x24] = 1;
if (param_1[8] == 1) {
iVar16 = param_2[0x1d];
iVar15 = param_2[0x1e];
iVar14 = param_2[0x1f];
iVar13 = param_2[0x20];
iVar26 = param_2[0x21];
param_1[0x3b] = param_2[0x22];
iVar17 = param_2[0x23];
param_1[0x36] = param_2[0x26];
param_1[0x44] = param_2[0x1c];
iVar25 = param_2[0x25];
iVar23 = param_2[0x24];
param_1[0x45] = iVar16;
param_1[0x37] = iVar25;
param_1[0x46] = iVar15;
param_1[0x49] = iVar14;
param_1[0x4a] = iVar13;
param_1[0x3a] = iVar26;
param_1[0x43] = iVar17;
param_1[0x3e] = iVar23;
param_1[0x41] = 1;
param_1[0x40] = 0;
param_1[0x3f] = 0;
if ((code *)param_1[0x89] != (code *)0x0) {
(*(code *)param_1[0x89])(param_1);
}
}
else if ((param_1[8] == 2) && (iVar23 = param_2[10], param_1[0x23] = iVar23, iVar23 != 0)) {
iVar17 = param_2[0xc];
iVar16 = param_2[0xd];
iVar26 = param_2[0xe];
iVar15 = param_2[0xf];
iVar14 = param_2[0x10];
iVar13 = param_2[0x11];
iVar28 = param_2[0x12];
iVar23 = param_2[0x13];
param_1[0x2d] = param_2[0x14];
iVar24 = param_2[0x15];
param_1[0x2f] = param_2[0x16];
param_1[0x24] = param_2[0xb];
iVar25 = param_2[0x17];
param_1[0x25] = iVar17;
iVar22 = param_2[0x18];
param_1[0x26] = iVar16;
iVar17 = param_2[0x19];
param_1[0x27] = iVar26;
iVar16 = param_2[0x1a];
iVar26 = param_2[0x1b];
param_1[0x30] = iVar25;
param_1[0x28] = iVar15;
param_1[0x29] = iVar14;
param_1[0x2a] = iVar13;
param_1[0x2b] = iVar28;
param_1[0x2c] = iVar23;
param_1[0x2e] = iVar24;
param_1[0x31] = iVar22;
param_1[0x32] = iVar17;
param_1[0x33] = iVar16;
param_1[0x34] = iVar26;
}
uVar21 = 0;
param_1[0xfe] = (int)&DAT_8f6381a8;
param_1[0xff] = (int)&DAT_8f6381e0;
param_1[0xfc] = (int)FUN_8f638218;
param_1[0xfd] = (int)FUN_8f63826c;
param_1[0x103] = (int)&DAT_8f6382c0;
param_1[0x102] = (int)&LAB_8f638dc8;
LAB_8f63877c:
if (iVar11 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70(uVar21);
}
return;
}
void FUN_8f6389f0(uint *param_1)
{
undefined2 uVar1;
undefined2 uVar2;
int iVar3;
uint uVar4;
uint uVar5;
byte bVar6;
uint uVar7;
uint uVar8;
uint uVar9;
uint uVar10;
uint uVar11;
uint uVar12;
uint uVar13;
iVar3 = DAT_8f731d80;
uVar9 = *param_1;
bVar6 = *(byte *)(param_1 + 0x91);
if (*(char *)((int)param_1 + 0x287) != '\0') {
uVar9 = uVar9 >> 1;
}
if (bVar6 != 0) {
bVar6 = 1;
}
if (*(char *)((int)param_1 + 0x245) != '\0') {
bVar6 = bVar6 | 2;
}
if (*(char *)((int)param_1 + 0x246) != '\0') {
bVar6 = bVar6 | 4;
}
if (*(char *)((int)param_1 + 0x247) != '\0') {
bVar6 = bVar6 | 8;
}
if (param_1[8] == 1) {
uVar9 = param_1[0x50];
}
uVar11 = uVar9 + param_1[0x20];
if ((param_1[0x23] != 0) && (uVar7 = param_1[0x24], uVar7 != 0)) {
uVar9 = FUN_8f66024c(uVar9,uVar7);
uVar11 = FUN_8f66024c(uVar11,uVar7);
}
uVar1 = *(undefined2 *)(param_1 + 0x1b);
uVar8 = (uint)*(ushort *)(param_1 + 0x19);
uVar4 = param_1[1] & 0xffff;
uVar10 = param_1[1] + param_1[0x21] & 0xffff;
uVar5 = uVar8 + param_1[0x17] & 0xffff;
uVar12 = (uint)*(ushort *)(param_1 + 0x1c);
uVar2 = *(undefined2 *)(param_1 + 0x18);
uVar7 = uVar12 + param_1[0x1a] & 0xffff;
uVar13 = (uint)*(byte *)((int)param_1 + 0x272) << 4 | (uint)*(byte *)((int)param_1 + 0x271) << 8 |
(uint)*(byte *)((int)param_1 + 0x273);
FUN_8f622074(param_1,uVar11 & 0xffff,uVar10,uVar9 & 0xffff,uVar4,uVar2,uVar5,uVar1,uVar7,uVar8,
uVar12,*(undefined *)((int)param_1 + 0x242),*(undefined *)((int)param_1 + 0x276),
bVar6,*(undefined *)(param_1 + 0x9c),uVar13,*(undefined *)(param_1 + 0x8e),
*(undefined *)((int)param_1 + 0x236),param_1[0xa5]);
if (*(char *)((int)param_1 + 0x287) != '\0') {
FUN_8f622074(param_1,uVar11 & 0xffff,uVar10,uVar9 & 0xffff,uVar4,uVar2,uVar5,uVar1,uVar7,uVar8,
uVar12,*(undefined *)((int)param_1 + 0x242),*(undefined *)((int)param_1 + 0x276),
bVar6,*(undefined *)(param_1 + 0x9c),uVar13,*(undefined *)(param_1 + 0x8e),
*(undefined *)((int)param_1 + 0x236),param_1[0xa7]);
}
if (iVar3 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f638c44(uint *param_1)
{
int iVar1;
byte bVar2;
uint uVar3;
uint uVar4;
uint uVar5;
uint uVar6;
uint uVar7;
iVar1 = DAT_8f731d80;
uVar3 = *param_1;
bVar2 = *(byte *)(param_1 + 0x91);
if (*(char *)((int)param_1 + 0x287) != '\0') {
uVar3 = uVar3 >> 1;
}
uVar4 = (param_1[2] << 0x15) >> 0x18;
if (bVar2 != 0) {
bVar2 = 1;
}
if (*(char *)((int)param_1 + 0x245) != '\0') {
bVar2 = bVar2 | 2;
}
if (*(char *)((int)param_1 + 0x246) != '\0') {
bVar2 = bVar2 | 4;
}
if (*(char *)((int)param_1 + 0x247) != '\0') {
bVar2 = bVar2 | 8;
}
if (param_1[8] == 1) {
uVar3 = param_1[0x50];
uVar7 = uVar3 + param_1[0x20];
}
else {
uVar7 = uVar3 + param_1[0x20];
if (((param_1[8] == 2) && (param_1[0x23] != 0)) && (uVar5 = param_1[0x24], uVar5 != 0)) {
uVar3 = FUN_8f66024c(uVar3,uVar5);
uVar7 = FUN_8f66024c(uVar7,uVar5);
}
}
uVar6 = param_1[1] + param_1[0x21] & 0xffff;
uVar5 = param_1[1] & 0xffff;
FUN_8f622574(param_1,uVar7 & 0xffff,uVar6,uVar3 & 0xffff,uVar5,
*(undefined *)((int)param_1 + 0x242),uVar4,bVar2,*(undefined *)((int)param_1 + 0x236)
,param_1[0xa5]);
if (*(char *)((int)param_1 + 0x287) != '\0') {
FUN_8f622574(param_1,uVar7 & 0xffff,uVar6,uVar3 & 0xffff,uVar5,
*(undefined *)((int)param_1 + 0x242),uVar4,bVar2,
*(undefined *)((int)param_1 + 0x236),param_1[0xa7]);
}
if (iVar1 != DAT_8f731d80) {
// WARNING: Subroutine does not return
FUN_8f63cd70();
}
return;
}
void FUN_8f638e48(int param_1,int param_2,int param_3)
{
int iVar1;
int iVar2;
undefined4 uVar3;
int iVar4;
iVar1 = DAT_8f731d80;
if (param_3 == 0) {
FUN_8f63cbb4(s_Invalid_panel_name_8f6ff0ec);
uVar3 = 0xfffffffe;
}
else {
if (param_2 != 0) {
iVar4 = 0;
do {
iVar2 = FUN_8f63ea58(param_3,param_1,0x40);
if (iVar2 == 0) {
uVar3 = *(undefined4 *)(param_1 + 0x40);
goto LAB_8f638eb4;
}
iVar4 = iVar4 + 1;
param_1 = param_1 + 0x44;
} while (iVar4 != param_2);
}
uVar3 = 0xfffffffe;
}
LAB_8f638eb4:
if (iVar1 == DAT_8f731d80) {
return;
}
// WARNING: Subroutine does
View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment