Skip to content

Instantly share code, notes, and snippets.

@iNarcissuss
Created December 22, 2017 10:41
Show Gist options
  • Save iNarcissuss/a8490c91a00697640800ff51748983bf to your computer and use it in GitHub Desktop.
Save iNarcissuss/a8490c91a00697640800ff51748983bf to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
/* This file has been generated by the Hex-Rays decompiler.
Copyright (c) 2007-2017 Hex-Rays <info@hex-rays.com>
Detected compiler: GNU C++
*/
#include <defs.h>
//-------------------------------------------------------------------------
// Function declarations
__int64 *sub_1800B0000();
void __fastcall __noreturn sub_1800B0390(int a1);
__int64 __fastcall sub_1800B041C(__int64, int, int, __int64); // weak
void sub_1800B0428();
unsigned __int64 sub_1800B045C();
unsigned __int64 __fastcall sub_1800B0464(unsigned __int64 result);
unsigned __int64 __fastcall sub_1800B0488(unsigned __int64 result);
unsigned __int64 __fastcall sub_1800B0494(unsigned __int64 result);
unsigned __int64 __fastcall sub_1800B04A0(unsigned __int64 result);
unsigned __int64 sub_1800B04AC();
unsigned __int64 sub_1800B04C0();
unsigned __int64 __fastcall sub_1800B04CC(unsigned __int64 result);
unsigned __int64 sub_1800B04D8();
unsigned __int64 __fastcall sub_1800B04E4(unsigned __int64 result);
void sub_1800B04F0();
void sub_1800B0504();
__int64 __fastcall nullsub_22(); // weak
__int64 __fastcall nullsub_28(); // weak
__int64 __fastcall nullsub_1(_QWORD); // weak
__int64 __fastcall nullsub_2(_QWORD); // weak
__int64 nullsub_3(void); // weak
void sub_1800B0528();
__int64 __fastcall nullsub_4(_QWORD); // weak
void sub_1800B0534();
signed __int64 __fastcall sub_1800B053C(__int16 a1);
void sub_1800B0594();
void __noreturn sub_1800B05AC();
__int64 __fastcall sub_1800B05CC(__int64); // weak
void __noreturn sub_1800B05D4();
__int64 __fastcall nullsub_24(); // weak
void sub_1800B05F4();
void __noreturn sub_1800B0604();
signed __int64 sub_1800B060C();
_QWORD *__fastcall sub_1800B0614(_QWORD *result, _QWORD *a2);
signed __int64 sub_1800B062C();
// void __usercall sub_1800B1028(_QWORD *a1@<X0>, __int64 a2@<X4>, __int64 a3@<X5>, __int64 a4@<X6>, __int64 a5@<X7>, __int64 a6@<X8>, __n128 q0_0@<Q0>, __n128 q1_0@<Q1>, __n128 q2_0@<Q2>, __n128 q3_0@<Q3>, __n128 q4_0@<Q4>, __n128 a7@<Q5>, __n128 a8@<Q6>, __n128 a9@<Q7>, __int64 a10@<X1>, __int64 a11@<X2>);
void __fastcall sub_1800B1064(__int64 a1, __n128 a2, __n128 a3, __n128 a4, __n128 a5, __n128 a6, __n128 a7, __n128 a8, __n128 a9, __int64 a10, __int64 a11);
void __noreturn sub_1800B1170();
signed __int64 sub_1800B1188();
void __fastcall sub_1800B11F4(unsigned __int64 a1, unsigned __int64 a2, unsigned __int64 a3, unsigned int a4);
void sub_1800B162C();
void sub_1800B1644();
void sub_1800B165C();
void sub_1800B1674();
void __fastcall sub_1800B1724(int a1);
unsigned __int64 __fastcall sub_1800B1850(unsigned __int64 result, void *a2, void *a3, void *a4, void *a5, void *a6, void *a7);
__int64 __fastcall sub_1800B18F4(int a1);
signed __int64 sub_1800B1994();
bool __fastcall sub_1800B1A00(unsigned int a1);
void sub_1800B1A44();
// void __usercall sub_1800B1BDC(void *a1@<X0>, void *a2@<X1>, void *a3@<X2>, void *a4@<X3>, void *a5@<X4>, void *a6@<X5>, void *a7@<X6>, signed __int64 a8@<X8>);
void __noreturn sub_1800B1D04();
void __fastcall __noreturn sub_1800B1D2C(__int64 a1, void *a2, void *a3, void *a4, void *a5, void *a6, void *a7);
signed __int64 sub_1800B1DF4();
__int64 __fastcall sub_1800B1EDC(int a1);
__int64 sub_1800B1F18();
signed __int64 __fastcall sub_1800B1F38(int *a1, unsigned int *a2);
void sub_1800B1FBC();
__int64 sub_1800B209C();
signed __int64 sub_1800B2134();
__int64 __fastcall sub_1800B2154(__int64 a1);
signed __int64 sub_1800B21F8();
signed __int64 __fastcall sub_1800B222C(int a1, _BYTE *a2);
signed __int64 sub_1800B2338();
__int64 __fastcall sub_1800B2360(__int64 a1, __int64 a2);
signed __int64 sub_1800B272C();
signed __int64 __fastcall sub_1800B27D8(_BYTE *a1, __int64 a2);
signed __int64 sub_1800B2884();
void sub_1800B2A84();
void __fastcall sub_1800B2B44(int a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800B2E1C(unsigned __int8 *a1);
signed __int64 sub_1800B2E74();
void __fastcall sub_1800B3520(__int64 a1);
void *__fastcall sub_1800B35B0(_BYTE **a1, void *a2);
signed __int64 sub_1800B376C();
__int64 __fastcall sub_1800B3A28(__int64 a1, __int64 a2);
signed __int64 sub_1800B3A80();
signed __int64 sub_1800B3D44();
void __fastcall sub_1800B3DE4(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 sub_1800B3E64();
__int64 __fastcall sub_1800B4014(unsigned int a1, unsigned __int64 a2, __int64 a3);
__int64 __fastcall sub_1800B43E0(unsigned int a1);
signed __int64 __fastcall sub_1800B43F8(unsigned int a1, __int64 *a2, unsigned int a3);
signed __int64 __fastcall sub_1800B4410(unsigned int a1, __int64 a2, unsigned int a3);
signed __int64 __fastcall sub_1800B4428(unsigned int a1, _QWORD *a2, unsigned int a3);
signed __int64 __fastcall sub_1800B4440(unsigned int a1, __int64 a2, unsigned int a3);
__int64 __fastcall sub_1800B4458(unsigned int a1);
__int64 __fastcall sub_1800B45C8(int a1);
__int64 __fastcall sub_1800B460C(_QWORD, _QWORD, _QWORD, _QWORD); // weak
__int64 __fastcall sub_1800B46D0(_QWORD); // weak
__int64 __fastcall sub_1800B48F8(_QWORD); // weak
__int64 __fastcall sub_1800B4934(_QWORD); // weak
signed __int64 sub_1800B494C();
__int64 __fastcall sub_1800B5688(unsigned int a1, __int64 a2, __int64 a3);
__int64 sub_1800B56F4();
void sub_1800B57D0();
void sub_1800B5800();
_DWORD *__fastcall sub_1800B5830(_DWORD *result, unsigned int a2, int a3);
_DWORD *__fastcall sub_1800B58B4(_DWORD *result, unsigned int a2, int a3);
__int64 __fastcall sub_1800B5938(unsigned int a1);
void sub_1800B5A04();
__int64 sub_1800B5A38();
_DWORD *__fastcall sub_1800B5A98(_BYTE *a1, _DWORD *a2, unsigned int a3, int a4);
_DWORD *__fastcall sub_1800B5B20(_BYTE *a1, _DWORD *a2, unsigned int a3, int a4);
__int64 __fastcall sub_1800B5BA8(unsigned int a1);
__int64 sub_1800B5BFC();
void sub_1800B5CC0();
__int64 sub_1800B5CEC();
__int64 sub_1800B5D88();
__int64 __fastcall nullsub_5(_QWORD); // weak
__int64 sub_1800B5E28();
__int64 __fastcall sub_1800B5E64(__int64 result);
__int64 __fastcall sub_1800B5EF4(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
void sub_1800B5F70();
void sub_1800B5FA0();
__int64 __fastcall nullsub_6(_QWORD); // weak
__int64 __fastcall sub_1800B5FC0(unsigned int a1);
signed __int64 sub_1800B6010();
__int64 sub_1800B6064();
__int64 sub_1800B60C8();
signed __int64 __fastcall sub_1800B6208(int a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800B62F8(__int64 a1);
signed __int64 __fastcall sub_1800B6F14(int a1, int a2, int a3, unsigned int a4, unsigned int a5);
__int64 __fastcall sub_1800B7098(int a1);
__int64 *sub_1800B70B4();
__int64 __fastcall sub_1800B70E4(__int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800B716C(__int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800B72C0(__int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
bool __fastcall sub_1800B74D4(unsigned __int64 a1);
__int64 __fastcall sub_1800B74E8(int a1, __int64 a2, int a3, int a4, _BYTE *a5);
__int64 __fastcall sub_1800B75BC(int a1, int a2, int a3);
__int64 __fastcall sub_1800B75EC(int a1, __int64 a2, int a3, int a4, _BYTE *a5);
__int64 __fastcall sub_1800B78E8(__int64 a1);
__int64 __fastcall sub_1800B797C(unsigned int a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 sub_1800B7A10();
_DWORD *__fastcall sub_1800B7B2C(_DWORD *result);
void sub_1800B7CF4();
__int64 __fastcall sub_1800B7D30(__int64 a1);
__int64 __fastcall sub_1800B7DA4(__int64 result, unsigned int *a2, unsigned int *a3);
__int64 __fastcall sub_1800B7E1C(__int64 a1, int a2);
__int64 __fastcall sub_1800B7EBC(__int64 result, int a2, unsigned int a3);
__int64 __fastcall sub_1800B7F70(__int64 a1, int a2);
__int64 __fastcall sub_1800B8090(__int64 a1, signed int a2);
__int64 sub_1800B813C();
__int64 sub_1800B81DC();
signed __int64 __fastcall sub_1800B81F4(__int64 a1);
__int64 *__fastcall sub_1800B82D4(int a1, int a2, int a3);
__int64 __fastcall sub_1800B83FC(int a1, _DWORD *a2);
__int64 __fastcall sub_1800B8508(unsigned int a1, int a2);
signed __int64 __fastcall sub_1800B85F4(signed __int64 result, int a2, __int64 a3, __int64 a4, __int64 a5);
signed __int64 __fastcall sub_1800B87E8(unsigned __int64 a1, int a2, __int64 a3, int a4);
signed __int64 __fastcall sub_1800B8874(signed __int64 a1, int a2, __int64 a3);
__int64 __fastcall sub_1800B8888(int *a1, int *a2, int *a3);
signed __int64 __fastcall sub_1800B88B0(int a1, int **a2);
signed __int64 sub_1800B895C();
signed __int64 sub_1800B8990();
__int64 sub_1800B89C4();
signed __int64 __fastcall sub_1800B8AD0(int a1, int a2);
signed __int64 sub_1800B8C50();
signed __int64 __fastcall sub_1800B8C84(int a1, int a2);
signed __int64 __fastcall sub_1800B8CDC(unsigned int a1, int a2, int a3);
signed __int64 __fastcall sub_1800B8E44(int a1, int a2);
char *__fastcall sub_1800B8F78(__int64 a1, unsigned int a2, int a3);
unsigned __int64 __fastcall sub_1800B9000(__int64 a1, unsigned int a2, unsigned int a3, int a4);
signed __int64 __fastcall sub_1800B9074(int a1);
void __fastcall sub_1800B9100(__int64 a1, _BYTE *a2, int a3, unsigned int a4);
void __fastcall sub_1800B91E0(_BYTE *a1, _BYTE *a2);
__int64 __fastcall sub_1800B948C(__int64 a1, _BYTE *a2, int a3, int a4, unsigned int a5, int a6);
void __fastcall sub_1800B96DC(__int64 a1, _BYTE *a2, int a3, int a4, unsigned int a5);
void sub_1800B98B4();
__int64 __fastcall sub_1800B98C8(__int64 result, int a2);
signed __int64 sub_1800B98F8();
__int64 __fastcall sub_1800B9AA4(_BYTE *a1);
void __fastcall sub_1800B9C08(int a1, int a2);
signed __int64 __fastcall sub_1800BA258(__int64 a1, _BYTE *a2, _QWORD *a3, _DWORD *a4);
signed __int64 __fastcall sub_1800BA2A0(unsigned int a1, _QWORD *a2, _QWORD *a3);
__int64 __fastcall sub_1800BA39C(__int64 result, unsigned __int64 a2);
bool __fastcall sub_1800BA3EC(__int64 a1, unsigned __int64 a2);
__int64 __fastcall sub_1800BA43C(unsigned __int16 a1, unsigned __int16 a2);
signed __int64 *__fastcall sub_1800BA5EC(signed __int64 *result, unsigned __int64 a2, __int64 a3, int a4);
signed __int64 *__fastcall sub_1800BA730(__int64 a1, __int64 a2);
__int64 __fastcall sub_1800BA890(signed __int64 *a1, unsigned __int64 a2, __int64 a3, __int64 a4, int a5, int a6);
signed __int64 *__fastcall sub_1800BAA6C(signed __int64 *result);
__int64 __fastcall sub_1800BAA8C(__int64 result);
__int64 __fastcall sub_1800BAB44(signed __int64 *a1, unsigned int a2);
__int64 __fastcall sub_1800BAB80(signed __int64 *a1);
__int64 __fastcall sub_1800BABD0(signed __int64 *a1, int *a2, unsigned int a3);
unsigned __int64 __fastcall sub_1800BAC60(int a1);
unsigned __int64 sub_1800BADA0();
__int64 __fastcall sub_1800BAFFC(int a1);
signed __int64 __fastcall sub_1800BB0B0(__int64 a1);
signed __int64 sub_1800BB34C();
signed __int64 __fastcall sub_1800BB444(__int64 a1, unsigned int a2);
signed __int64 __fastcall sub_1800BB5F4(unsigned int a1);
__int64 __fastcall sub_1800BB6A0(unsigned __int16 a1, unsigned __int16 a2);
void sub_1800BB6C4();
signed __int64 __fastcall sub_1800BB730(unsigned int a1, int a2, __int16 a3, int a4, int a5);
signed __int64 __fastcall sub_1800BB818(unsigned int a1, int a2, __int16 a3, _BYTE *a4);
signed __int64 __fastcall sub_1800BB884(unsigned int a1, __int16 a2, int a3, int a4);
signed __int64 __fastcall sub_1800BB8A4(unsigned int a1, __int16 a2, _BYTE *a3);
signed __int64 __fastcall sub_1800BB8BC(__int64 a1);
signed __int64 __fastcall sub_1800BB930(__int64 a1);
signed __int64 __fastcall sub_1800BB9AC(__int16 a1, _BYTE *a2, __int64 a3);
signed __int64 __fastcall sub_1800BBA24(__int16 a1, _QWORD *a2, unsigned __int64 a3);
__int64 sub_1800BBAB0();
signed __int64 __fastcall sub_1800BBB20(unsigned __int8 a1, int *a2);
signed __int64 __fastcall sub_1800BBC40(char a1, _DWORD *a2);
__int64 sub_1800BBD08();
signed __int64 __fastcall sub_1800BBDF4(signed __int64 result, unsigned int a2);
__int64 sub_1800BBF1C();
signed __int64 __fastcall sub_1800BBFDC(int a1);
signed __int64 __fastcall sub_1800BC0B4(int a1);
signed __int64 __fastcall sub_1800BC18C(_BYTE *a1, bool *a2, _BYTE *a3);
signed __int64 __fastcall sub_1800BC278(unsigned int a1, _BYTE *a2);
signed __int64 __fastcall sub_1800BC320(unsigned int a1, int a2);
signed __int64 __fastcall sub_1800BC3A0(int a1);
void __noreturn sub_1800BC444();
void __fastcall __noreturn sub_1800BC454(int a1);
signed __int64 __fastcall sub_1800BC50C(__int64 a1, unsigned int a2, unsigned int *a3);
signed __int64 sub_1800BC6A8();
signed __int64 sub_1800BC6B0();
signed __int64 __fastcall sub_1800BC910(int a1, int a2);
signed __int64 __fastcall sub_1800BC9E0(_BYTE *a1, _BYTE *a2);
signed __int64 __fastcall sub_1800BCA68(int a1);
_QWORD *__fastcall sub_1800BCB2C(__int64 a1, int a2, __int64 *a3, __int64 a4, int a5);
__int64 __fastcall sub_1800BCC04(__int64 result, __int64 a2);
_QWORD *__fastcall sub_1800BCC2C(__int64 a1, _QWORD *a2);
signed __int64 __fastcall sub_1800BCD80(unsigned int a1);
signed __int64 __fastcall sub_1800BCDD4(_QWORD *a1, __int64 a2);
__int64 __fastcall sub_1800BCF38(__int64 result, char a2, char a3);
signed __int64 __fastcall sub_1800BD078(__int64 a1, int a2);
void __fastcall sub_1800BD9B0(unsigned int a1);
void __fastcall sub_1800BDA6C(__int64 a1);
signed __int64 __fastcall sub_1800BDAB8(__int64 a1);
void sub_1800BDD34();
signed __int64 __fastcall sub_1800BDD68(unsigned int a1, int a2);
signed __int64 __fastcall sub_1800BDE28(__int64 a1);
signed __int64 __fastcall sub_1800BDE64(__int64 a1, __int64 a2, unsigned __int64 a3);
__int64 __fastcall sub_1800BE038(__int64 result, int a2);
__int64 __fastcall sub_1800BE11C(unsigned int a1, int a2, __int64 a3, int a4, __int64 a5);
void sub_1800BE3CC();
signed __int64 __fastcall sub_1800BE3D4(unsigned int a1, __int64 a2);
signed __int64 __fastcall sub_1800BE4F0(unsigned int a1, unsigned int a2, __int64 a3);
__int64 __fastcall sub_1800BE6BC(unsigned int a1);
__int64 __fastcall sub_1800BE6D4(unsigned int a1, __int64 a2);
signed __int64 __fastcall sub_1800BE85C(__int64 a1, int a2);
__int64 __fastcall sub_1800BE998(__int64 result, unsigned int a2, int a3);
__int64 __fastcall sub_1800BE9F0(__int64 result, unsigned int a2, __int64 a3);
__int64 __fastcall sub_1800BEA58(__int64 a1, unsigned int a2);
__int64 __fastcall sub_1800BEAB0(__int64 a1);
__int64 __fastcall sub_1800BEB7C(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
signed __int64 __fastcall sub_1800BEE30(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
signed __int64 __fastcall sub_1800BEE60(__int64 a1, __int64 a2, int a3, int a4);
void __fastcall sub_1800BEED8(__int64 a1, __int64 a2, int a3);
signed __int64 __fastcall sub_1800BEF50(__int64 a1);
__int64 sub_1800BEFBC();
bool sub_1800BF02C();
signed __int64 sub_1800BF04C();
signed __int64 __fastcall sub_1800BFA30(signed __int64 result, signed int *a2);
__int64 sub_1800BFAA8();
__int64 __fastcall sub_1800BFCA8(unsigned int a1);
signed __int64 sub_1800BFCFC();
signed __int64 __fastcall sub_1800BFD64(_DWORD *a1);
signed __int64 __fastcall sub_1800BFDB8(__int64 a1, signed int a2);
signed __int64 __fastcall sub_1800BFE98(_DWORD *a1);
signed __int64 __fastcall sub_1800BFF18(_DWORD *a1, _DWORD *a2, signed int *a3);
signed __int64 __fastcall sub_1800BFFF0(char a1, unsigned __int8 a2);
__int64 sub_1800C0008();
__int64 nullsub_7(void); // weak
signed __int64 sub_1800C0014();
signed __int64 __fastcall sub_1800C005C(int a1, signed __int64 a2, signed __int64 a3);
signed __int64 __fastcall sub_1800C0234(__int64 a1, signed __int64 a2);
signed __int64 sub_1800C02D8();
__int64 __fastcall sub_1800C032C(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800C08E4(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
signed __int64 __fastcall sub_1800C0994(int a1);
signed __int64 __fastcall sub_1800C0ADC(int a1);
__int64 __fastcall sub_1800C0B20(int a1, unsigned __int8 a2, unsigned __int8 a3);
signed __int64 __fastcall sub_1800C0B78(int a1, unsigned __int8 *a2, _DWORD *a3);
signed __int64 __fastcall sub_1800C0CB4(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
signed __int64 __fastcall sub_1800C0DF4(__int64 a1, __int64 a2, unsigned int *a3, _DWORD *a4);
signed __int64 __fastcall sub_1800C0F4C(unsigned __int64 *a1, __int64 a2, unsigned __int64 *a3, int a4);
signed __int64 __fastcall sub_1800C0F88(unsigned __int64 *a1, unsigned __int64 *a2);
signed __int64 __fastcall sub_1800C100C(unsigned __int64 *a1, _BYTE *a2);
signed __int64 __fastcall sub_1800C1108(__int64 a1, __int64 a2, int a3, __int64 a4);
signed __int64 __fastcall sub_1800C1698(__int64 a1, __int64 a2);
__int64 __fastcall sub_1800C16B0(_QWORD *a1, __int64 a2, unsigned __int64 a3, int a4);
void **__fastcall sub_1800C1958(int a1);
signed __int64 __fastcall sub_1800C1994(unsigned int *a1, __int64 a2, unsigned int a3, unsigned int *a4, char *a5, unsigned __int64 a6, unsigned __int64 *a7);
signed __int64 __fastcall sub_1800C22D4(__int64 a1, _QWORD *a2, unsigned __int64 a3);
_QWORD *sub_1800C24D4();
__int64 __fastcall sub_1800C2544(int a1);
__int64 __fastcall sub_1800C256C(__int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800C25FC(__int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800C268C(int a1, __int64 a2, __int64 a3, unsigned __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
_QWORD *__fastcall sub_1800C274C(_QWORD *result);
signed __int64 sub_1800C2778();
signed __int64 __fastcall sub_1800C28DC(signed __int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
signed __int64 __fastcall sub_1800C299C(signed __int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
signed __int64 __fastcall sub_1800C2A5C(signed __int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
_QWORD *sub_1800C2B24();
signed __int64 __fastcall sub_1800C2B9C(int a1, __int64 a2, __int64 a3, unsigned __int64 a4);
signed __int64 __fastcall sub_1800C2C50(__int64 a1, __int64 a2, int a3);
signed __int64 __fastcall sub_1800C2CC8(__int64 a1, __int64 a2, _BYTE *a3, __int64 a4);
__int64 __fastcall sub_1800C2D6C(__int64 a1);
signed __int64 __fastcall sub_1800C3C68(_BYTE *a1);
signed __int64 __fastcall sub_1800C49A8(_BYTE *a1, __int64 a2, int a3);
__int64 __fastcall sub_1800C4A74(_QWORD *a1);
unsigned __int64 __fastcall sub_1800C4B00(unsigned __int64 a1);
signed __int64 __fastcall sub_1800C4B88(__int64 a1, _BYTE *a2, _QWORD *a3, _QWORD *a4);
__int64 __fastcall sub_1800C4C1C(unsigned int a1);
__int64 __fastcall sub_1800C4C70(__int64 a1);
signed __int64 __fastcall sub_1800C4CC8(_BYTE *a1, __int64 a2, __int64 a3);
bool __fastcall sub_1800C4D58(_DWORD *a1);
signed __int64 __fastcall sub_1800C4D70(__int64 a1, __int64 a2, __int64 a3, _QWORD *a4, unsigned __int64 *a5, _QWORD *a6, _QWORD *a7, __int64 a8);
_DWORD *__fastcall sub_1800C5284(__int64 a1);
_DWORD *__fastcall sub_1800C52C0(__int64 a1, signed __int64 a2);
signed __int64 __fastcall sub_1800C532C(__int64 a1, __int64 a2);
__int64 __fastcall sub_1800C5374(__int64 result, __int64 a2);
__int64 sub_1800C53DC();
__int64 sub_1800C5534();
__int64 __fastcall sub_1800C5550(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 sub_1800C55A8();
void sub_1800C55C4();
__int64 sub_1800C55E0();
signed __int64 sub_1800C55F8();
__int64 sub_1800C5624();
__int64 sub_1800C5648();
__int64 sub_1800C57D4();
void __fastcall sub_1800C57EC(__int64 a1, void *a2, void *a3, void *a4, void *a5, void *a6, void *a7);
unsigned __int64 sub_1800C58E4();
__int64 __fastcall sub_1800C5950(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 sub_1800C59D0();
signed __int64 sub_1800C5A20();
signed __int64 sub_1800C5A64();
signed __int64 sub_1800C5A6C();
__int64 __fastcall sub_1800C5A74(int a1);
__int64 __fastcall sub_1800C5B48(int a1);
__int64 __fastcall sub_1800C5E08(__int64 result, int a2);
__int64 sub_1800C5E80();
__int64 sub_1800C5E98();
void __fastcall sub_1800C5EB0(int a1);
__int64 sub_1800C5FF8();
__int64 sub_1800C6014();
void __noreturn sub_1800C6030();
signed __int64 sub_1800C605C();
__int64 sub_1800C6084();
__int64 sub_1800C6708();
__int64 sub_1800C678C();
signed __int64 sub_1800C67A8();
__int64 sub_1800C67B0();
bool sub_1800C6818();
unsigned __int64 sub_1800C6838();
bool sub_1800C6898();
bool sub_1800C68B8();
signed __int64 __fastcall sub_1800C68D8(int a1, _DWORD *a2);
bool __fastcall sub_1800C6930(int a1, int a2);
__int64 sub_1800C6960(void); // weak
__int64 sub_1800C6964();
__int64 sub_1800C696C();
__int64 __fastcall sub_1800C69C4(__int64 result, unsigned __int16 a2, char a3, char a4);
signed __int64 sub_1800C6A08();
signed __int64 __fastcall sub_1800C6A18(_DWORD *a1);
__int64 __fastcall sub_1800C6A94(int *a1);
signed __int64 __fastcall sub_1800C6AF0(_DWORD *a1);
__int64 __fastcall sub_1800C6B74(__int64 a1);
int *__fastcall sub_1800C6BF4(int *result, __int64 a2);
void sub_1800C6CAC();
__int64 sub_1800C6CC8();
__int64 __fastcall sub_1800C6CE0(__int64 result);
signed __int64 __fastcall sub_1800C6D08(unsigned int a1, unsigned int a2, unsigned int *a3);
signed __int64 __fastcall sub_1800C6D9C(_QWORD *a1, _DWORD *a2);
_DWORD *sub_1800C6DE8();
signed __int64 __fastcall sub_1800C6E38(unsigned int a1);
signed __int64 sub_1800C6E68();
__int64 sub_1800C6E70();
signed __int64 sub_1800C6E78();
signed __int64 sub_1800C6EB0();
void __fastcall sub_1800C6F10(__int64 a1, _QWORD *a2, _QWORD *a3, _QWORD *a4);
__int64 __fastcall sub_1800C6F90(); // weak
signed __int64 *__fastcall sub_1800C70F0(__int64 a1);
signed __int64 *__fastcall sub_1800C71FC(__int64 a1, signed __int64 *a2, __int64 a3, void (__fastcall *a4)(__int64, signed __int64 *, __int64));
signed __int64 *__fastcall sub_1800C72B0(__int64 a1, __int64 a2, int a3);
__int64 __fastcall nullsub_18(); // weak
__int64 __fastcall nullsub_19(); // weak
__int64 __fastcall nullsub_20(); // weak
__int64 __fastcall sub_1800C72C8(__int64 result, signed __int64 *a2, int a3);
__int64 __fastcall nullsub_21(); // weak
signed __int64 *__fastcall sub_1800C7504(signed __int64 *result, signed __int64 *a2, int a3);
__int64 __fastcall sub_1800C783C(int a1, unsigned __int8 a2, unsigned int a3);
signed __int64 *__fastcall sub_1800C784C(signed __int64 *a1, int a2);
__int64 __fastcall sub_1800C7864(__int64 result);
signed __int64 __fastcall sub_1800C787C(__int64 a1);
__int64 __fastcall sub_1800C7F30(__int64 result);
__int64 sub_1800C7FA4();
__int64 sub_1800C7FC8();
void __fastcall sub_1800C800C(__int64 a1);
__int64 sub_1800C81B0();
void __fastcall sub_1800C81C0(__int64 a1);
__int64 __fastcall sub_1800C8468(__int64 result);
signed __int64 __fastcall sub_1800C8470(unsigned __int64 a1, __int64 a2);
bool sub_1800C84D4();
__int64 sub_1800C84F0();
void sub_1800C8520();
__int64 sub_1800C853C();
__int64 sub_1800C8554();
__int64 sub_1800C856C();
__int64 sub_1800C8584();
signed __int64 sub_1800C859C();
__int64 sub_1800C85A4();
unsigned __int64 sub_1800C85C4();
unsigned __int64 sub_1800C85E0();
__int64 sub_1800C85FC();
__int64 __fastcall sub_1800C8614(__int64 result);
__int64 sub_1800C8678();
__int64 sub_1800C8690();
__int64 sub_1800C86A8();
__int64 __fastcall sub_1800C86B0(int a1);
__int64 __fastcall sub_1800C8744(int a1);
__int64 __fastcall nullsub_9(_QWORD, _QWORD); // weak
_DWORD *sub_1800C8850();
_DWORD *sub_1800C8E8C();
__int64 *__fastcall sub_1800C8F48(_DWORD *a1);
void sub_1800C8F60();
_DWORD *__fastcall sub_1800C9014(_DWORD *result, int a2);
signed __int64 *__fastcall sub_1800C9550(unsigned int *a1);
signed __int64 *__fastcall sub_1800C959C(unsigned int *a1);
__int64 __fastcall sub_1800C9DC8(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall nullsub_10(_QWORD); // weak
__int64 sub_1800C9E2C();
signed __int64 sub_1800CA218();
__int64 __fastcall sub_1800CA3DC(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800CAB14(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800CABF0(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 sub_1800CAD5C();
__int64 __fastcall sub_1800CAF3C(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 sub_1800CAF54();
__int64 __fastcall sub_1800CB1A8(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 sub_1800CB1D4();
__int64 __fastcall nullsub_11(_QWORD); // weak
__int64 sub_1800CB318();
__int64 __fastcall sub_1800CB350(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800CB3A8(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800CB3E8(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 sub_1800CB430();
__int64 sub_1800CB580();
__int64 __fastcall sub_1800CB5B8(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800CB610(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800CB700(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800CB7C0(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 sub_1800CB814();
__int64 sub_1800CBAD4();
signed __int64 __fastcall sub_1800CBB54(int a1, int a2, int a3);
void sub_1800CBDDC();
__int64 __fastcall sub_1800CBE44(__int64 a1, int a2, int a3);
__int64 __fastcall sub_1800CBEE8(__int64 a1, int a2, int a3, int a4);
__int64 __fastcall sub_1800CBFA0(__int64 a1, unsigned __int16 a2);
__int64 __fastcall sub_1800CC038(__int64 a1, unsigned __int16 a2);
__int64 __fastcall sub_1800CC0D0(__int64 a1, unsigned __int16 a2);
__int64 __fastcall sub_1800CC168(__int64 result, int a2, int a3);
__int64 __fastcall sub_1800CC1BC(__int64 result);
void sub_1800CC218();
__int64 __fastcall sub_1800CCC0C(__int64 result, int a2);
__int64 __fastcall sub_1800CCCD0(__int64 result, int a2);
__int64 __fastcall sub_1800CCD74(__int64 a1);
__int64 __fastcall sub_1800CCE0C(__int64 result);
__int64 __fastcall sub_1800CCE40(__int64 result);
__int64 __fastcall sub_1800CCEF8(__int64 a1);
__int64 __fastcall sub_1800CCFFC(int a1, unsigned int a2, int a3, int a4);
__int64 __fastcall sub_1800CD0A0(__int64 a1);
__int64 __fastcall sub_1800CD138(__int64 a1, int a2, int a3, int a4, unsigned int a5);
void sub_1800CD8E8();
__int64 __fastcall sub_1800CDA4C(__int64 a1);
__int64 __fastcall sub_1800CDB48(__int64 a1);
__int64 __fastcall sub_1800CDC54(__int64 result, unsigned int a2);
__int64 __fastcall sub_1800CDCD0(__int64 result, int a2);
void sub_1800CDD74();
__int64 __fastcall sub_1800CE280(__int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8, double a9, double a10);
__int64 __fastcall sub_1800CF548(__int64 result);
void sub_1800CFF00();
__int64 __fastcall sub_1800D0B88(__int64 result, char a2);
_DWORD *__fastcall sub_1800D0DF0(_DWORD *result, int a2, int a3, int a4, int a5);
_DWORD *__fastcall sub_1800D0E98(_DWORD *result);
_DWORD *__fastcall sub_1800D0ED0(__int64 a1, int a2, unsigned int a3, __int64 a4, __int64 a5, int *a6, int *a7, _DWORD *a8, int *a9, int *a10);
__int64 __fastcall sub_1800D10AC(__int64 a1, unsigned int a2);
__int64 __fastcall sub_1800D1198(__int64 a1, unsigned int a2);
__int64 __fastcall sub_1800D1284(__int64 a1, unsigned int a2);
__int64 __fastcall sub_1800D13CC(__int64 a1, int a2);
__int64 __fastcall sub_1800D14C4(int a1, int a2);
__int64 __fastcall sub_1800D1544(unsigned int a1, int a2, __int16 a3, double a4, double a5);
__int64 __fastcall sub_1800D1610(__int64 a1);
signed __int64 __fastcall sub_1800D16A8(unsigned int a1, unsigned int a2, unsigned int a3, double a4, double a5);
__int64 __fastcall sub_1800D1704(unsigned int a1, int a2, __int16 a3, double a4, double a5);
__int64 __fastcall sub_1800D17D0(__int64 a1, int a2);
__int64 __fastcall sub_1800D1870(__int64 a1, int a2, int a3);
__int64 __fastcall sub_1800D1924(__int64 a1, char a2);
__int64 __fastcall sub_1800D19D8(__int64 result, char a2, int a3, int a4);
signed __int64 __fastcall sub_1800D1A24(char a1, int a2);
__int64 __fastcall sub_1800D1B54(__int64 a1, int a2, int a3);
__int64 __fastcall sub_1800D1BF0(__int64 result);
bool __fastcall sub_1800D1C50(int a1, int a2, unsigned int a3);
__int64 __fastcall sub_1800D1CDC(__int64 result, char a2, int a3);
bool __fastcall sub_1800D1D78(int a1, int a2, int a3);
__int64 __fastcall sub_1800D1E0C(int a1, int a2, int a3, int a4, __int64 a5);
__int64 __fastcall sub_1800D1FD0(__int64 a1);
void sub_1800D2088();
void sub_1800D2118();
void __noreturn sub_1800D2180();
__int64 sub_1800D21B8();
__int64 sub_1800D21C0();
__int64 __fastcall sub_1800D21D8(int a1);
signed __int64 __fastcall sub_1800D2228(int a1, unsigned int a2, __int64 a3, unsigned int a4);
__int64 __fastcall sub_1800D2538(int a1, int a2);
__int64 __fastcall sub_1800D26D8(int a1, unsigned int a2);
signed __int64 __fastcall sub_1800D2938(int a1, unsigned int a2, _DWORD *a3, _DWORD *a4);
unsigned __int64 __fastcall sub_1800D2B24(signed int a1);
signed __int64 __fastcall sub_1800D2BE0(_BYTE *a1);
__int64 __fastcall sub_1800D2CBC(_QWORD); // weak
__int64 sub_1800D2CC0();
__int64 sub_1800D2CD8();
__int64 sub_1800D2DF4();
unsigned int *__fastcall sub_1800D3190(int a1);
__int64 __fastcall sub_1800D3518(int a1, int a2);
unsigned int *__fastcall sub_1800D3668(unsigned int *result, int a2);
unsigned int *sub_1800D3684();
signed __int64 __fastcall sub_1800D368C(int a1);
__int64 __fastcall sub_1800D37E8(__int64 result, unsigned int a2);
_QWORD *__fastcall sub_1800D386C(_QWORD *a1, unsigned int a2);
__int64 __fastcall sub_1800D389C(int a1);
__int64 __fastcall sub_1800D3988(__int64 result);
__int64 __fastcall sub_1800D39CC(__int64 result, int a2);
__int64 __fastcall sub_1800D3AEC(__int64 result);
void __fastcall sub_1800D3B2C(char a1);
__int64 sub_1800D3B48();
__int64 __fastcall sub_1800D3BDC(__int64 result);
__int64 __fastcall sub_1800D3C2C(__int64 result, int a2);
__int64 sub_1800D3D1C();
__int64 __fastcall sub_1800D4030(); // weak
__int64 __fastcall sub_1800D438C(unsigned int a1, unsigned int a2);
unsigned int *__fastcall sub_1800D446C(unsigned int *result, unsigned int a2, int a3);
__int64 __fastcall sub_1800D44CC(__int64 result, unsigned int a2);
// void __usercall __noreturn sub_1800D456C(void *a1@<X0>, void *a2@<X1>, void *a3@<X2>, void *a4@<X3>, void *a5@<X4>, void *a6@<X5>, void *a7@<X6>, signed __int64 a8@<X8>);
__int64 sub_1800D46BC();
signed __int64 sub_1800D4728();
signed __int64 __fastcall sub_1800D4788(char a1);
__int64 __fastcall sub_1800D47DC(__int64 result);
__int64 __fastcall sub_1800D47F0(int a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800D4848(__int64 a1);
__int64 __fastcall nullsub_12(_QWORD); // weak
// void __usercall __noreturn sub_1800D489C(const char *a1@<X1>, _BYTE *a2@<X0>, __int64 a3, ...);
__int64 sub_1800D49F4();
void __noreturn sub_1800D4A5C();
void __fastcall __noreturn sub_1800D4B0C(__int64 a1, __int64 a2, __int64 a3, unsigned __int64 a4);
signed __int64 sub_1800D4B50();
_DWORD *sub_1800D4BA0();
__int64 __fastcall sub_1800D4C18(int a1);
_QWORD *__fastcall sub_1800D4CE0(_QWORD *a1, unsigned __int64 a2);
unsigned __int64 __fastcall sub_1800D4D34(unsigned __int64 result, __int64 a2, int a3);
bool __fastcall sub_1800D4D84(int a1);
void sub_1800D4DD8();
signed __int64 __fastcall sub_1800D4DFC(unsigned __int64 a1, __int64 a2);
bool sub_1800D4E44();
bool sub_1800D4E54();
__int64 __fastcall sub_1800D4E6C(__int64 result);
__int64 __fastcall sub_1800D4E90(int a1);
_QWORD *__fastcall sub_1800D4EB8(_QWORD *result);
__int64 __fastcall sub_1800D4EF4(__int64 result);
void sub_1800D4F18();
__int64 sub_1800D4F30();
signed __int64 sub_1800D4F44();
__int64 __fastcall sub_1800D4FC8(int a1);
unsigned __int64 __fastcall sub_1800D50B0(unsigned __int64 result, __int64 a2);
__int64 sub_1800D5104();
__int64 sub_1800D5158();
unsigned __int64 __fastcall sub_1800D51AC(unsigned __int64 result, __int64 a2, int a3);
void __noreturn sub_1800D522C();
void __noreturn sub_1800D528C();
void sub_1800D52D8();
unsigned __int64 sub_1800D5338();
_DWORD *__fastcall sub_1800D534C(__int64 a1);
_DWORD *__fastcall sub_1800D53D4(_DWORD *a1, __int64 a2, __int64 a3, __int64 a4);
unsigned __int64 sub_1800D55FC();
_DWORD *__fastcall sub_1800D5648(__int64 a1, __int64 a2, __int64 a3, unsigned __int64 a4);
void __fastcall sub_1800D56B8(__int64 a1);
_QWORD *__fastcall sub_1800D5758(_QWORD *result);
void __fastcall sub_1800D57CC(__int64 a1);
_QWORD *__fastcall sub_1800D5904(__int64 a1);
void __fastcall sub_1800D5940(__int64 a1);
void __fastcall __noreturn sub_1800D5984(int a1);
__int64 __fastcall sub_1800D59F0(_QWORD *a1);
__int64 __fastcall sub_1800D5A60(__int64 a1);
void __fastcall sub_1800D5A94(_QWORD *a1);
_QWORD *__fastcall sub_1800D5AD0(_QWORD *result, _QWORD *a2);
void __fastcall sub_1800D5B44(__int64 a1);
_QWORD *__fastcall sub_1800D5BAC(__int64 a1, __int64 a2);
signed __int64 __fastcall sub_1800D5BBC(__int64 a1);
__int64 __fastcall sub_1800D5C08(__int64 a1);
__int64 __fastcall sub_1800D5C40(__int64 result, int a2, char a3);
void __fastcall sub_1800D5C54(_BYTE *a1);
_BYTE *__fastcall sub_1800D5CA0(_BYTE *result);
void __fastcall sub_1800D5D18(_BYTE *a1);
bool __fastcall sub_1800D5D78(__int64 a1, __int64 a2);
void sub_1800D5F0C();
unsigned __int64 __fastcall sub_1800D5F1C(__int64 a1);
bool __fastcall sub_1800D5F30(__int64 a1, unsigned __int64 a2);
__int64 __fastcall sub_1800D5F60(__int64 a1);
__int64 sub_1800D60D8();
signed __int64 sub_1800D61EC();
signed __int64 sub_1800D623C();
void sub_1800D63A4();
__int64 sub_1800D63C4();
__int64 sub_1800D64AC();
__int64 nullsub_13(void); // weak
__int64 nullsub_14(void); // weak
__int64 sub_1800D6570();
signed __int64 sub_1800D6578();
signed __int64 __fastcall sub_1800D6598(_BYTE *a1);
__int64 __fastcall sub_1800D65E4(int a1);
signed __int64 sub_1800D6614();
__int64 *sub_1800D6648();
signed __int64 sub_1800D66C4();
signed __int64 sub_1800D66CC();
__int64 sub_1800D66D4();
__int64 __fastcall sub_1800D69B8(int a1, __int64 a2);
signed __int64 __fastcall sub_1800D6B14(char a1, __int64 a2, __int64 a3, unsigned __int64 a4, int a5, __int64 a6, _QWORD *a7);
__int64 __fastcall sub_1800D6C78(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6);
signed __int64 __fastcall sub_1800D6D3C(__int64 a1, int a2, __int64 a3);
__int64 __fastcall sub_1800D6E3C(__int64 a1);
__int64 __fastcall sub_1800D6E70(__int64 result, int a2);
__int64 __fastcall sub_1800D6E90(__int64 result, _QWORD *a2, char a3);
__int64 __fastcall sub_1800D6F14(__int64 a1);
void __fastcall sub_1800D6F74(__int64 a1);
void __fastcall sub_1800D6F98(__int64 a1);
__int64 __fastcall sub_1800D7274(__int64 a1);
void __fastcall sub_1800D72C8(__int64 a1);
void __fastcall sub_1800D72F0(__int64 a1);
signed __int64 __fastcall sub_1800D7568(unsigned int a1);
signed __int64 __fastcall sub_1800D75CC(unsigned int a1);
signed __int64 sub_1800D7624();
void sub_1800D7648();
void sub_1800D769C();
void sub_1800D76BC();
signed __int64 sub_1800D7778();
__int64 sub_1800D7790();
void sub_1800D77CC();
__int64 sub_1800D77DC();
__int64 sub_1800D77E8();
signed __int64 __fastcall sub_1800D77F8(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
void sub_1800D7870();
void sub_1800D7880();
void sub_1800D7890();
__int64 __fastcall sub_1800D78D0(_QWORD); // weak
void sub_1800D78D4();
void __noreturn sub_1800D79BC();
void __noreturn sub_1800D7A04();
void __noreturn sub_1800D7A34();
__int64 __fastcall sub_1800D7A64(__int64 a1, int a2);
signed __int64 sub_1800D7A80();
signed __int64 __fastcall sub_1800D7A9C(char *a1, int a2, __int64 a3, signed int *a4, _DWORD *a5);
__int64 __fastcall sub_1800D7B54(unsigned int a1);
__int64 __fastcall sub_1800D7BA8(__int64 a1, unsigned __int64 a2, int a3);
signed __int64 __fastcall sub_1800D7CA8(unsigned int *a1, unsigned int *a2, unsigned int a3, unsigned int *a4, char *a5, unsigned __int64 a6, unsigned __int64 *a7);
__int64 __fastcall sub_1800D7E64(_QWORD); // weak
__int64 __fastcall sub_1800D7E68(_QWORD); // weak
signed __int64 __fastcall sub_1800D7E6C(__int64 a1, int a2, int a3);
signed __int64 __fastcall sub_1800D7EC0(_BYTE *a1, char *a2, unsigned __int64 a3, unsigned __int64 *a4, unsigned int *a5, unsigned int a6, unsigned int *a7, int a8);
void __fastcall sub_1800D8014(_QWORD *a1);
signed __int64 __fastcall sub_1800D8034(__int64 a1, int a2, char *a3, unsigned __int64 a4, unsigned __int64 *a5, unsigned int *a6, unsigned int a7, unsigned int *a8, int a9);
signed __int64 __fastcall sub_1800D80D4(char *a1, unsigned __int64 a2, unsigned __int64 *a3, int a4);
__int64 sub_1800D8184(void); // weak
__int64 sub_1800D8188();
__int64 __fastcall sub_1800D8198(int a1, int a2, int a3, char a4);
__int64 __fastcall sub_1800D834C(__int64 a1, int a2);
signed __int64 __fastcall sub_1800D8380(int a1);
__int64 sub_1800D83EC();
__int64 sub_1800D8410();
__int64 sub_1800D8634();
signed __int64 sub_1800D863C();
void sub_1800D8644();
__int64 sub_1800D88B8();
bool sub_1800D88D0();
signed __int64 sub_1800D8A88();
signed __int64 sub_1800D8B10();
_DWORD *__fastcall sub_1800D8B1C(_DWORD *result, __int64 a2);
__int64 __fastcall sub_1800D8B4C(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800D8B94(__int64 result);
signed __int64 sub_1800D8BAC();
void __noreturn sub_1800D9274();
signed __int64 __fastcall sub_1800D9294(int a1);
__int64 sub_1800D9830();
__int64 sub_1800D98B0();
__int64 sub_1800D9918();
signed __int64 sub_1800D9988();
signed __int64 __fastcall sub_1800D99A0(unsigned int a1);
__int64 __fastcall sub_1800D99E0(unsigned int a1);
signed __int64 sub_1800D9A1C();
signed __int64 sub_1800D9AA4();
signed __int64 sub_1800D9AE4();
signed __int64 __fastcall sub_1800D9B3C(_BYTE *a1, bool *a2, _BYTE *a3);
signed __int64 __fastcall sub_1800D9BFC(signed __int64 a1);
__int64 __fastcall sub_1800D9C30(__int64 a1);
signed __int64 __fastcall sub_1800D9CEC(int a1, signed int a2);
void __fastcall sub_1800D9E6C(char a1, unsigned __int64 a2, __int64 a3);
__int64 __fastcall sub_1800D9F80(_QWORD); // weak
__int64 sub_1800D9F84();
bool sub_1800D9FD0();
bool sub_1800D9FF0();
__int64 sub_1800DA024();
const char *sub_1800DA058();
signed __int64 __fastcall sub_1800DA084(__int64 a1);
void __fastcall __noreturn sub_1800DA1F0(__int64 a1, __int64 a2, unsigned __int64 a3);
signed __int64 __fastcall sub_1800DA25C(int a1);
__int64 sub_1800DA418();
signed __int64 __fastcall sub_1800DA4AC(__int64 a1, __int64 a2, void (__fastcall *a3)(__int64, __int64));
signed __int64 __fastcall sub_1800DA55C(int a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 sub_1800DA63C();
__int64 __fastcall sub_1800DA6B4(unsigned __int64 *a1, _QWORD *a2);
void sub_1800DA754();
__int64 sub_1800DA7B8();
void __noreturn sub_1800DA7C0();
bool sub_1800DA7F8();
__int64 __fastcall sub_1800DA8B4(__int64 a1, __int64 a2, unsigned __int64 a3, unsigned __int64 a4);
__int64 __fastcall sub_1800DA908(unsigned int *a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
bool __fastcall sub_1800DAB64(__int64 a1, __int64 a2);
__int64 __fastcall sub_1800DACD0(__int64 a1, unsigned int *a2, __int64 a3, int a4);
signed __int64 __fastcall sub_1800DB0B8(__int64 a1, unsigned __int64 a2, _QWORD *a3, __int64 *a4);
signed __int64 __fastcall sub_1800DB3B8(__int64 a1, unsigned __int64 a2, _QWORD *a3);
__int64 __fastcall sub_1800DB408(__int64 a1);
signed __int64 __fastcall sub_1800DBAE8(__int64 a1, _QWORD *a2, int a3, _QWORD *a4, int a5, _DWORD *a6);
void __fastcall sub_1800DBB50(_QWORD *a1);
__int64 *__fastcall sub_1800DBB7C(__int64 a1, __int64 a2);
signed __int64 __fastcall sub_1800DBEF8(_QWORD *a1, __int64 a2, unsigned int a3, _QWORD *a4, unsigned int a5, signed int *a6);
signed __int64 __fastcall sub_1800DC10C(__int64 *a1, __int64 a2, _QWORD *a3);
__int64 __fastcall sub_1800DC21C(__int64 a1, __int64 a2, signed __int64 a3);
signed __int64 __fastcall sub_1800DC2D8(__int64 a1, __int64 a2, unsigned __int64 a3);
signed __int64 __fastcall sub_1800DC3A0(__int64 a1, __int64 a2);
signed __int64 __fastcall sub_1800DC3BC(__int64 a1, __int64 a2);
signed __int64 __fastcall sub_1800DC3E0(__int64 *a1, const char *a2, __int64 a3, unsigned int a4, _QWORD *a5, __int64 a6);
signed __int64 __fastcall sub_1800DC74C(__int64 *a1, __int64 a2, _QWORD *a3, _DWORD *a4);
signed __int64 __fastcall sub_1800DC998(__int64 *a1, __int64 a2, _QWORD *a3, unsigned __int64 a4, unsigned __int64 a5);
__int64 __fastcall sub_1800DCB40(unsigned int *a1, unsigned int *a2, unsigned __int64 a3, unsigned __int64 a4);
__int64 __fastcall sub_1800DCB78(unsigned int *a1, unsigned __int64 a2, unsigned __int64 a3);
__int64 __fastcall sub_1800DCC24(unsigned int *a1, int a2);
__int64 __fastcall sub_1800DCC7C(__int64 *a1, __int64 a2, unsigned __int64 a3, unsigned __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800DD2C8(__int64 a1, __int64 a2, __int64 a3, signed __int64 a4, unsigned __int64 a5);
signed __int64 __fastcall sub_1800DD39C(__int64 *a1, __int64 a2, int a3, unsigned __int64 a4, signed __int64 a5, unsigned __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800DD468(__int64 result, int a2, int a3, int a4, int a5, int a6, int a7, __int64 a8, __int64 a9);
signed __int64 __fastcall sub_1800DD480(__int64 a1, _DWORD *a2, __int64 a3, int a4, int a5);
signed __int64 __fastcall sub_1800DD5B0(__int64 *a1, __int64 a2, signed __int64 a3, unsigned int a4, _QWORD *a5, unsigned int *a6, unsigned int a7, _QWORD *a8, unsigned int *a9);
signed __int64 __fastcall sub_1800DDDAC(__int64 *a1, __int64 a2, signed __int64 a3, unsigned int a4, _QWORD *a5, unsigned int *a6, unsigned int a7, _QWORD *a8, unsigned int *a9);
signed __int64 __fastcall sub_1800DE234(__int64 a1, __int64 a2, int a3, _QWORD *a4);
signed __int64 __fastcall sub_1800DE2BC(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, int *a6, signed int *a7);
signed __int64 __fastcall sub_1800DE3F0(__int64 a1, __int64 a2, int a3, _QWORD *a4, _DWORD *a5);
signed __int64 __fastcall sub_1800DE480(__int64 a1, __int64 a2, int a3, signed __int64 *a4, signed int *a5);
signed __int64 __fastcall sub_1800DE580(__int64 *a1, _BYTE *a2, char a3);
void __fastcall sub_1800DE658(_QWORD ***a1);
__int64 __fastcall sub_1800DE68C(__int64 a1, __int64 a2);
_QWORD *__fastcall sub_1800DE6A4(__int64 **a1, const char *a2);
signed __int64 __fastcall sub_1800DE77C(__int64 a1, _QWORD *a2, unsigned __int64 a3);
__int64 __fastcall sub_1800DE7E8(_QWORD *a1, _QWORD *a2);
signed __int64 __fastcall sub_1800DE810(__int64 a1, signed __int64 a2, int a3);
__int64 __fastcall sub_1800DE85C(__int64 **a1, const char *a2);
signed __int64 __fastcall sub_1800DE92C(__int64 a1, __int64 a2);
_QWORD *__fastcall sub_1800DEAC4(__int64 a1);
void __fastcall sub_1800DEB0C(__int64 a1);
_QWORD *__fastcall sub_1800DEB34(_QWORD *result, unsigned int a2);
__int64 __fastcall sub_1800DEBCC(__int64 a1, _QWORD *a2, __int64 a3, __int64 a4, int a5);
signed __int64 __fastcall sub_1800DED94(__int64 a1);
__int64 __fastcall sub_1800DEF6C(unsigned __int8 *a1);
unsigned __int64 __fastcall sub_1800DEF90(unsigned __int8 *a1);
signed __int64 __fastcall sub_1800DEFD4(__int64 a1, unsigned int a2, int a3, signed __int64 a4, int a5, _QWORD *a6, int a7);
signed __int64 __fastcall sub_1800DF25C(unsigned __int8 *a1, __int64 a2);
signed __int64 __fastcall sub_1800DF2B8(__int64 a1, __int64 a2, int *a3, _QWORD *a4, unsigned __int64 *a5);
signed __int64 __fastcall sub_1800DF330(__int64 a1, int *a2, __int64 a3, int a4, _QWORD *a5, _QWORD *a6, unsigned __int64 *a7);
signed __int64 __fastcall sub_1800DF560(__int64 a1, __int64 a2, _QWORD *a3, signed __int64 a4, unsigned __int64 a5);
signed __int64 __fastcall sub_1800DF6F4(__int64 a1, __int64 a2, __int64 *a3, _BYTE *a4, __int64 a5, __int64 a6, _QWORD *a7, unsigned __int64 *a8);
signed __int64 sub_1800DFA58();
signed __int64 __fastcall sub_1800DFA68(unsigned __int8 *a1, int *a2, _QWORD *a3, unsigned __int64 *a4);
signed __int64 __fastcall sub_1800DFBA4(unsigned int a1, __int64 a2, _QWORD *a3, _QWORD *a4);
signed __int64 __fastcall sub_1800E0000(unsigned int a1, unsigned __int64 a2, unsigned int a3, _QWORD *a4, unsigned __int64 *a5);
signed __int64 __fastcall sub_1800E0084(unsigned __int8 *a1, unsigned __int64 a2);
__int64 __fastcall sub_1800E0618(__int64 a1);
void __fastcall __noreturn sub_1800E0628(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 sub_1800E06D4();
const char *sub_1800E0704();
signed __int64 __fastcall sub_1800E077C(_QWORD *a1, _DWORD *a2);
_DWORD *__fastcall sub_1800E07DC(int a1);
signed __int64 __fastcall sub_1800E086C(int a1);
void sub_1800E0964();
unsigned __int64 __fastcall sub_1800E096C(int a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800E0A38(__int64 a1, unsigned int a2);
_QWORD *__fastcall sub_1800E0B84(__int64 a1, unsigned int a2, _QWORD *a3, __int64 a4);
bool sub_1800E0CBC();
bool sub_1800E0CDC();
bool sub_1800E0D14();
signed __int64 sub_1800E0D64();
__int64 sub_1800E0DB0();
void sub_1800E0DBC();
__int64 __fastcall sub_1800E0DCC(unsigned int a1);
__int64 __fastcall sub_1800E0E10(__int64 result);
_QWORD *__fastcall sub_1800E0E48(_QWORD *a1, _QWORD *a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8, __int64 a9);
unsigned __int64 __fastcall sub_1800E0EDC(unsigned __int64 result);
unsigned __int64 sub_1800E0EE4();
unsigned __int64 sub_1800E0F20();
__int64 sub_1800E10FC();
unsigned __int64 sub_1800E1118();
__int64 __fastcall sub_1800E1188(_QWORD); // weak
void sub_1800E118C();
__int64 sub_1800E11E8();
__int64 __fastcall sub_1800E129C(__int64 a1);
unsigned __int64 __fastcall sub_1800E12C4(unsigned int a1);
bool __fastcall sub_1800E1300(int a1);
__int64 __fastcall sub_1800E148C(unsigned int a1);
signed __int64 __fastcall sub_1800E16CC(int a1);
void __noreturn sub_1800E1710();
_QWORD *sub_1800E1780();
signed __int64 sub_1800E17B8();
void sub_1800E1AEC();
__int64 __fastcall sub_1800E1B88(int a1, int a2, __int64 a3, __int64 a4, __int64 a5);
__int64 __fastcall sub_1800E1E04(__int64 a1, unsigned int *a2);
__int64 sub_1800E1F08();
__int64 __fastcall sub_1800E1F34(int a1);
void __fastcall sub_1800E2038(unsigned int a1);
__int64 sub_1800E204C();
__int64 __fastcall sub_1800E20C8(unsigned __int8 a1, __int16 a2);
__int64 __fastcall sub_1800E20F0(__int64 result, int a2, __int64 a3);
__int64 __fastcall sub_1800E2204(__int64 a1, unsigned int a2);
signed __int64 __fastcall sub_1800E2268(unsigned int a1, int a2, unsigned __int8 *a3, __int64 a4, _BYTE *a5, __int64 a6, int a7);
signed __int64 __fastcall sub_1800E2408(unsigned int a1, char a2, unsigned __int8 *a3, __int64 a4);
signed __int64 sub_1800E2550();
__int64 __fastcall sub_1800E267C(unsigned int a1);
__int64 __fastcall sub_1800E26D0(unsigned int a1);
signed __int64 __fastcall sub_1800E272C(int a1);
signed __int64 __fastcall sub_1800E2914(__int64 a1, __int64 a2, __int64 a3);
__int64 sub_1800E2E3C(void); // weak
__int64 __fastcall sub_1800E2EDC(int a1);
signed __int64 sub_1800E2EFC();
signed __int64 __fastcall sub_1800E2F20(unsigned __int8 *a1, __int64 a2, unsigned __int64 a3);
signed __int64 __fastcall sub_1800E2FD0(unsigned int a1, int a2, __int16 a3, _BYTE *a4, __int64 a5);
void __fastcall sub_1800E3040(__int64 a1, int a2);
signed __int64 __fastcall sub_1800E314C(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800E337C(unsigned int a1);
signed __int64 sub_1800E33D0();
signed __int64 __fastcall sub_1800E33E0(int a1);
signed __int64 __fastcall sub_1800E3534(char a1, _BYTE *a2);
signed __int64 __fastcall sub_1800E35A8(char a1, char a2);
signed __int64 __fastcall sub_1800E3608(__int64 a1);
signed __int64 __fastcall sub_1800E36D0(int a1);
__int64 sub_1800E371C();
signed __int64 __fastcall sub_1800E37A8(__int64 a1);
__int64 sub_1800E3990();
__int64 sub_1800E3A20(void); // weak
__int64 __fastcall sub_1800E3A24(__int64 a1, unsigned int a2, int a3, int a4, __int64 a5, __int64 a6, __int64 a7);
__int64 __fastcall sub_1800E3ABC(__int64 a1, unsigned int a2, unsigned __int64 a3);
__int64 __fastcall sub_1800E3DD4(__int64 a1, int a2, int a3);
__int64 __fastcall sub_1800E3E3C(__int64 a1, int a2);
__int64 __fastcall sub_1800E3E54(__int64 a1, int a2);
__int64 __fastcall sub_1800E3EC4(__int64 a1, int a2, int a3);
__int64 __fastcall sub_1800E3F30(_WORD *a1, int a2);
__int64 __fastcall sub_1800E4028(__int64 a1, int a2);
__int64 __fastcall sub_1800E4098(__int64 a1);
__int64 __fastcall sub_1800E412C(__int64 a1, int a2, char a3);
__int64 __fastcall sub_1800E4198(__int64 a1, int a2);
__int64 __fastcall sub_1800E41D8(__int64 a1, int a2, __int16 a3);
void __fastcall sub_1800E4244(__int64 a1);
__int64 __fastcall sub_1800E4304(__int64 a1);
__int64 __fastcall sub_1800E430C(__int64 a1);
__int64 __fastcall sub_1800E4314(__int64 a1, int a2);
__int64 __fastcall sub_1800E4354(__int64 a1, int a2);
__int64 __fastcall sub_1800E4394(__int64 a1, unsigned int a2);
unsigned __int64 __fastcall sub_1800E43A0(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
signed __int64 __fastcall sub_1800E4524(__int64 a1, __int64 a2);
__int64 __fastcall sub_1800E462C(__int64 a1, int a2, unsigned int a3);
__int64 __fastcall sub_1800E46A0(_WORD *a1, char a2);
__int64 __fastcall sub_1800E4708(__int64 a1);
__int64 __fastcall sub_1800E47F0(__int64 a1);
__int64 __fastcall sub_1800E4920(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800E4BB4(__int64 a1);
__int64 __fastcall sub_1800E4E28(signed int a1);
signed __int64 __fastcall sub_1800E4E98(signed __int64 *a1, __int64 a2);
__int64 __fastcall sub_1800E4EE0(signed int a1, int a2);
__int64 __fastcall sub_1800E4F30(signed int a1, int a2);
__int64 __fastcall sub_1800E4F84(signed int a1, int a2);
__int64 __fastcall sub_1800E51B0(signed int a1, int a2);
unsigned __int64 __fastcall sub_1800E5258(signed int a1, char a2);
unsigned __int64 __fastcall sub_1800E52AC(signed int a1, __int64 a2, unsigned __int64 a3);
signed __int64 __fastcall sub_1800E5384(signed int a1, int a2);
__int64 __fastcall sub_1800E5584(signed int a1, int a2);
__int64 __fastcall sub_1800E55C0(signed int a1);
__int64 __fastcall sub_1800E55E4(__int64 result, char a2);
void **sub_1800E5634();
__int64 sub_1800E5640();
void sub_1800E5798();
void __fastcall sub_1800E5898(char a1);
bool sub_1800E58D0();
void __fastcall sub_1800E590C(unsigned int a1, int a2, unsigned int a3, int a4);
void __fastcall sub_1800E5A64(__int64 a1);
void __fastcall sub_1800E5B08(char a1, int a2);
void __fastcall sub_1800E5B9C(int a1);
__int64 __fastcall sub_1800E5BF8(int a1);
void __fastcall sub_1800E5C60(char a1);
void __fastcall sub_1800E5C98(__int64 a1);
void __fastcall sub_1800E5E48(char a1);
signed __int64 sub_1800E5F50();
__int64 __fastcall sub_1800E62B8(__int64 a1);
void sub_1800E644C();
void __fastcall sub_1800E6478(unsigned int a1);
unsigned __int64 __fastcall sub_1800E64D4(int a1, unsigned int a2);
void __fastcall sub_1800E6530(int a1);
void sub_1800E65C4();
void __fastcall sub_1800E6938(unsigned int a1);
__int64 __fastcall sub_1800E6A44(__int64 result, __int64 a2);
__int64 __fastcall sub_1800E6A64(__int64 result);
void __fastcall sub_1800E6C50(unsigned int a1);
signed __int64 sub_1800E6D44();
signed __int64 __fastcall sub_1800E6F2C(_BYTE *a1);
signed __int64 __fastcall sub_1800E6FA4(char a1, _BYTE *a2);
signed __int64 sub_1800E7018();
signed __int64 __fastcall sub_1800E707C(char a1, char a2);
__int64 sub_1800E70DC();
__int64 sub_1800E7134();
__int64 sub_1800E713C();
signed __int64 sub_1800E7144();
void __fastcall sub_1800E71B8(__int64 a1, unsigned int a2, unsigned int *a3);
__int64 __fastcall nullsub_15(_QWORD); // weak
signed __int64 sub_1800E7364();
signed __int64 sub_1800E736C();
signed __int64 __fastcall sub_1800E7374(_DWORD *a1);
signed __int64 __fastcall sub_1800E7428(int a1);
__int64 sub_1800E752C();
signed __int64 __fastcall sub_1800E75D8(char a1, _BYTE *a2, unsigned int a3);
__int64 sub_1800E7650();
__int64 __fastcall sub_1800E76E0(_QWORD *a1);
__int64 sub_1800E7728();
__int64 sub_1800E7770();
__int64 sub_1800E77BC();
__int64 sub_1800E7808();
__int64 sub_1800E7854();
__int64 sub_1800E78A0();
__int64 sub_1800E7984();
__int64 sub_1800E7B4C();
signed __int64 __fastcall sub_1800E7B58(char a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 sub_1800E7C0C();
void sub_1800E7C40();
__int64 __fastcall sub_1800E7CA0(__int64 a1, int a2, __int64 a3);
signed __int64 __fastcall sub_1800E7D08(char *a1);
__int64 __fastcall sub_1800E7E28(__int64 result);
__int64 __fastcall sub_1800E7E54(__int64 a1);
_BYTE *__fastcall sub_1800E7F6C(__int64 a1);
__int64 __fastcall sub_1800E8000(__int64 a1);
__int64 sub_1800E8050();
__int64 __fastcall sub_1800E8398(__int64 result);
__int64 __fastcall sub_1800E83C0(__int64 result, char a2, unsigned int a3, bool *a4);
void __fastcall sub_1800E8A54(int a1);
bool sub_1800E8B84();
void __fastcall sub_1800E8BA0(__int64 a1);
__int64 __fastcall sub_1800E8BD0(int a1, __int64 a2, int a3, __int64 a4);
__int64 __fastcall sub_1800E8C54(_QWORD, _QWORD, _QWORD, _QWORD); // weak
__int64 __fastcall sub_1800E8C58(_QWORD); // weak
__int64 __fastcall sub_1800E8C5C(__int64 a1);
__int64 sub_1800E8C80();
void sub_1800E8CE0();
__int64 __fastcall sub_1800E8D78(__int64 a1, int a2);
__int64 sub_1800E8DD4();
signed __int64 __fastcall sub_1800E8EEC(char *a1, _QWORD *a2);
void __fastcall sub_1800E9130(unsigned int a1);
void sub_1800E921C();
signed __int64 sub_1800E9290();
__int64 sub_1800E9320();
signed __int64 sub_1800E9378();
void sub_1800E9440();
signed __int64 __fastcall sub_1800E94A8(int a1);
__int64 sub_1800E95A8();
unsigned __int64 __fastcall sub_1800E95B4(char a1);
unsigned __int64 __fastcall sub_1800E964C(int a1, unsigned int a2);
void __fastcall sub_1800E97BC(_DWORD *a1);
__int64 sub_1800E9864();
__int64 sub_1800E98AC();
__int64 sub_1800E994C();
__int64 sub_1800E9954();
signed __int64 __fastcall sub_1800E9984(__int64 a1);
__int64 nullsub_16(void); // weak
void __fastcall sub_1800E9A24(int a1, __int64 a2, int a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800E9B5C(unsigned int a1);
__int64 sub_1800E9BB0();
void sub_1800E9D58();
signed __int64 __fastcall sub_1800E9DAC(_BYTE *a1);
__int64 sub_1800E9DEC();
__int64 __fastcall sub_1800E9DF8(__int64 a1);
__int64 __fastcall sub_1800E9E00(_QWORD *a1);
__int64 sub_1800E9E18();
__int64 __fastcall sub_1800E9E70(__int64 a1, __int64 a2, __int64 a3, unsigned __int64 a4);
__int64 __fastcall sub_1800E9F88(__int64 a1, __int64 a2, unsigned int a3, __int64 a4);
signed __int64 __fastcall sub_1800EA0A8(__int64 a1, __int64 a2, __int64 a3);
__int64 __fastcall sub_1800EA0D0(__int64 a1, unsigned int a2);
__int64 __fastcall sub_1800EA0FC(__int64 a1, __int64 a2, unsigned __int64 a3, unsigned int a4);
unsigned __int64 __fastcall sub_1800EA1A8(__int64 a1, unsigned __int64 a2, unsigned __int64 a3, unsigned __int64 a4);
signed __int64 __fastcall sub_1800EA4A8(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
unsigned __int64 __fastcall sub_1800EA4E8(__int64 a1, _QWORD *a2, unsigned __int64 a3, unsigned __int64 a4);
signed __int64 __fastcall sub_1800EA760(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
signed __int64 __fastcall sub_1800EA7A0(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800EA7E0(__int64 a1);
_QWORD *__fastcall sub_1800EA860(__int64 a1, __int64 a2, __int64 a3, unsigned __int64 a4, unsigned int a5);
__int64 __fastcall sub_1800EA8F8(_QWORD *a1, __int64 a2, unsigned __int64 a3, __int64 a4);
__int64 __fastcall sub_1800EA968(__int64 a1, __int64 a2, int a3, int a4);
__int64 __fastcall sub_1800EA978(_QWORD *a1, __int64 a2, unsigned __int64 a3, unsigned __int64 a4);
__int64 __fastcall sub_1800EA9E4(__int64 a1, __int64 a2, int a3, int a4);
_QWORD *__fastcall sub_1800EA9F4(__int64 a1, __int64 a2, unsigned __int64 a3, unsigned int a4);
unsigned __int64 __fastcall sub_1800EAA68(__int64 a1, _QWORD *a2, unsigned __int64 a3, unsigned __int64 a4);
__int64 __fastcall sub_1800EAB00(__int64 a1, _QWORD *a2, unsigned int a3, unsigned int a4);
signed __int64 __fastcall sub_1800EAB94(unsigned __int64 a1, __int64 a2);
void __fastcall sub_1800EAC14(_QWORD **a1);
signed __int64 __fastcall sub_1800EAC4C(__int64 a1, char a2);
signed __int64 __fastcall sub_1800EACD4(__int64 a1, _BYTE *a2);
__int64 __fastcall sub_1800EAD68(unsigned __int8 *a1, signed __int64 a2);
__int64 __fastcall sub_1800EAF28(__int64 a1, __int64 a2, int a3);
__int64 __fastcall sub_1800EAFBC(__int64 a1, int a2);
__int64 __fastcall sub_1800EAFE4(__int64 a1, __int64 a2, int a3);
__int64 __fastcall sub_1800EB06C(__int64 result, int a2);
signed __int64 *__fastcall sub_1800EB0A8(signed __int64 *result, _QWORD *a2, __int64 a3, _QWORD *a4);
void sub_1800EB418();
void __fastcall sub_1800EB454(_QWORD *a1);
__int64 sub_1800EB478();
__int64 *__fastcall sub_1800EB488(__int64 a1, __int64 a2);
signed __int64 __fastcall sub_1800EB534(__int64 *a1, _DWORD **a2, __int64 a3);
void __fastcall sub_1800EBA74(_QWORD *a1);
__int64 __fastcall sub_1800EBB38(__int64 a1, __int64 a2, unsigned __int64 a3);
__int64 __fastcall sub_1800EBBE4(__int64 result, _DWORD **a2, unsigned __int64 a3);
__int64 sub_1800EBDE4();
signed __int64 __fastcall sub_1800EBDF4(__int64 a1, _BYTE *a2, _QWORD *a3);
signed __int64 __fastcall sub_1800EBFC8(__int64 a1, _BYTE **a2, _QWORD *a3, _DWORD *a4);
signed __int64 __fastcall sub_1800EC060(__int64 a1, _BYTE *a2, _QWORD *a3);
signed __int64 __fastcall sub_1800EC0DC(__int64 a1, _BYTE *a2, _QWORD *a3, _DWORD *a4);
signed __int64 __fastcall sub_1800EC160(__int64 a1, _BYTE *a2);
signed __int64 __fastcall sub_1800EC16C(__int64 a1, _BYTE *a2, _QWORD *a3, unsigned int a4);
signed __int64 __fastcall sub_1800EC320(__int64 a1, _BYTE *a2, int a3);
signed __int64 __fastcall sub_1800EC374(__int64 a1, _BYTE *a2, __int64 a3);
signed __int64 __fastcall sub_1800EC3C8(__int64 a1, _BYTE *a2, __int64 a3);
signed __int64 __fastcall sub_1800EC41C(__int64 a1, _BYTE *a2, __int64 a3);
signed __int64 __fastcall sub_1800EC460(__int64 *a1, _BYTE *a2);
void sub_1800EC538();
signed __int64 __fastcall sub_1800EC548(__int64 a1, unsigned int a2);
signed __int64 sub_1800EC5A0();
__int64 __fastcall sub_1800EC680(unsigned int a1);
__int64 sub_1800EC6D4();
signed __int64 __fastcall sub_1800EC730(_BYTE *a1);
signed __int64 __fastcall sub_1800EC82C(_BYTE *a1);
void **__fastcall sub_1800ECAA0(_BYTE *a1);
void **__fastcall sub_1800ECB14(_BYTE *a1);
void **__fastcall sub_1800ECB70(_BYTE *a1);
void *__fastcall sub_1800ECB8C(_BYTE *a1, void *a2);
bool __fastcall sub_1800ECBB8(_BYTE *a1, _BOOL8 a2);
signed __int64 __fastcall sub_1800ECC0C(_BYTE *a1, _DWORD *a2);
signed __int64 __fastcall sub_1800ECD24(_BYTE *a1, __int64 a2);
signed __int64 __fastcall sub_1800ECE44(unsigned __int8 *a1, __int64 a2, int a3);
signed __int64 __fastcall sub_1800ECFB0(_BYTE *a1);
signed __int64 __fastcall sub_1800ED05C(unsigned __int8 *a1, __int64 a2, int a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
unsigned __int64 __fastcall sub_1800ED0E0(__int64 a1, unsigned __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
__int64 __fastcall sub_1800ED18C(__int64 a1, unsigned __int64 a2);
bool __fastcall sub_1800ED2E8(_BYTE *a1);
void **__fastcall sub_1800ED47C(_BYTE *a1, const char **a2);
__int64 __fastcall sub_1800ED508(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
void __fastcall sub_1800ED6D8(_BYTE *a1);
_QWORD *__fastcall sub_1800ED760(_QWORD *result);
signed __int64 __fastcall sub_1800ED7D4(_BYTE *a1, __int64 a2);
signed __int64 sub_1800ED8A4();
_QWORD *__fastcall sub_1800ED8E4(_QWORD *result);
__int64 __fastcall sub_1800ED964(int a1, __int64 a2, __int64 a3);
void **__fastcall sub_1800ED9A4(int a1);
__int64 __fastcall sub_1800ED9DC(int a1, __int64 a2);
__int64 __fastcall sub_1800EDA14(int a1);
signed __int64 __fastcall sub_1800EDA60(_BYTE *a1, _QWORD *a2, unsigned __int64 *a3);
__int64 __fastcall sub_1800EDBB8(int a1);
signed __int64 __fastcall sub_1800EDBF4(unsigned __int64 a1);
signed __int64 sub_1800EDD24();
unsigned __int64 __fastcall sub_1800EDD80(unsigned __int64 a1);
__int64 __fastcall sub_1800EDDD8(__int64 result, unsigned __int64 a2);
signed __int64 *__fastcall sub_1800EDF8C(_QWORD *a1);
void __fastcall sub_1800EE010(_QWORD *a1);
signed __int64 *__fastcall sub_1800EE248(signed __int64 *a1);
signed __int64 __fastcall sub_1800EE264(unsigned __int64 a1, unsigned __int64 a2);
signed __int64 __fastcall sub_1800EE538(signed __int64 *a1, unsigned __int64 a2, unsigned __int64 a3);
void __noreturn sub_1800EE5C0();
__int64 __fastcall sub_1800EE5F8(__int64 result);
signed __int64 *__fastcall sub_1800EE664(signed __int64 *a1);
void __fastcall sub_1800EE724(_QWORD *a1, unsigned __int64 a2, int a3);
void sub_1800EE938();
__int64 *__fastcall sub_1800EE984(__int64 *result);
__int64 sub_1800EE9F0();
bool sub_1800EEA08();
signed __int64 sub_1800EEA28();
__int64 __fastcall sub_1800EEAD0(__int64 result, unsigned __int64 a2);
signed __int64 __fastcall sub_1800EED24(unsigned __int64 a1);
__int64 __fastcall sub_1800EED2C(_QWORD); // weak
_QWORD *__fastcall sub_1800EED30(_QWORD *a1, _QWORD *a2, unsigned __int64 a3, unsigned __int64 a4);
signed __int64 *__fastcall sub_1800EED5C(signed __int64 *a1, unsigned __int8 a2, unsigned __int64 a3, unsigned __int64 a4);
char *__fastcall sub_1800EED88(_QWORD *a1, __int64 *a2);
_QWORD *__fastcall sub_1800EEFCC(_QWORD *result, __int64 a2);
char *__fastcall sub_1800EF018(__int64 a1, __int64 *a2);
__int64 __fastcall sub_1800EF110(unsigned __int8 a1);
unsigned int __fastcall sub_1800EF128(unsigned int a1);
unsigned int __fastcall sub_1800EF130(unsigned int a1);
__int64 __fastcall sub_1800EF138(unsigned int a1);
__int64 __fastcall sub_1800EF150(signed __int64 *a1, unsigned __int64 a2, unsigned __int8 a3, unsigned __int64 a4);
__int64 __fastcall sub_1800EF16C(signed __int64 *a1, unsigned __int64 a2, unsigned __int8 a3, unsigned __int64 a4, unsigned __int64 a5);
__int64 __fastcall sub_1800EF1F4(__int64 a1, _DWORD *a2);
__int64 __fastcall sub_1800EF260(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8, __int64 a9);
__int64 __fastcall sub_1800EF2B4(__int64 a1, __int64 a2);
__int64 __fastcall sub_1800EF2C4(void (__fastcall **a1)(_QWORD, signed __int64), __int64 a2, _DWORD *a3);
__int64 __fastcall sub_1800EFAD0(char *a1, signed __int64 a2, __int64 a3, _DWORD *a4);
_QWORD *__fastcall sub_1800EFB50(_QWORD *result, int a2);
__int64 __fastcall sub_1800EFB88(__int64 a1, signed __int64 a2, int a3, int a4, int a5);
signed __int64 __fastcall sub_1800EFC3C(__int64 a1, unsigned __int64 a2, int a3, int a4);
__int64 __fastcall sub_1800EFC74(char *a1, unsigned __int64 a2, __int64 a3, unsigned __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8, __int64 a9);
__int64 __fastcall sub_1800EFD00(char *a1, unsigned __int64 a2, __int64 a3, unsigned __int64 a4, __int64 a5, _DWORD *a6);
__int64 __fastcall sub_1800EFD4C(_BYTE *a1);
__int64 __fastcall sub_1800EFD88(__int64 a1);
signed __int64 sub_1800EFDC0();
signed __int64 __fastcall sub_1800EFDE4(__int64 a1, __int64 a2, unsigned __int64 a3, unsigned __int64 a4);
signed __int64 __fastcall sub_1800EFE14(__int64 a1, __int64 a2, unsigned __int64 a3, unsigned __int64 a4);
unsigned __int64 __fastcall sub_1800EFE44(unsigned __int8 *a1, signed __int64 *a2, signed int a3);
unsigned __int64 __fastcall sub_1800F001C(unsigned __int8 *a1, signed __int64 *a2, signed int a3);
unsigned __int64 __fastcall sub_1800F01F8(unsigned __int8 *a1, signed __int64 *a2, signed int a3);
_QWORD *__fastcall sub_1800F03F0(_QWORD *result, _QWORD *a2, unsigned __int64 a3);
_QWORD *__fastcall sub_1800F05A0(_QWORD *result, unsigned __int64 a2);
signed __int64 *__fastcall sub_1800F0620(signed __int64 *result, unsigned __int8 a2, unsigned __int64 a3);
__int64 __fastcall sub_1800F06C4(__int64 result, __int64 a2);
unsigned __int64 __fastcall sub_1800F06E8(__int64 a1, unsigned __int8 a2, unsigned __int64 a3);
__int64 __fastcall sub_1800F0718(_BYTE *a1, _BYTE *a2, __int64 a3);
_BYTE *__fastcall sub_1800F074C(_BYTE *result, char a2);
__int64 __fastcall sub_1800F0770(unsigned __int8 *a1, _BYTE *a2);
_QWORD *__fastcall sub_1800F07A0(__int64 a1);
signed __int64 __fastcall sub_1800F08E8(__int64 a1);
__int64 __fastcall sub_1800F0900(_BYTE *a1, _BYTE *a2, __int64 a3);
__int64 __fastcall sub_1800F0938(__int64 a1, __int64 a2);
_BYTE *__fastcall sub_1800F095C(signed __int64 *a1, unsigned __int8 *a2);
_BYTE *__fastcall sub_1800F09AC(_BYTE *a1, __int64 a2);
_BYTE *__fastcall sub_1800F0A2C(_BYTE *a1, __int64 a2, char *a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8, __int64 a9);
__int64 __fastcall sub_1800F0B24(unsigned int a1);
__int64 __fastcall sub_1800F0B60(unsigned int a1);
unsigned int *__fastcall sub_1800F0D2C(unsigned int a1, int a2, _DWORD *a3);
signed __int64 __fastcall sub_1800F0DB0(unsigned int *a1, _DWORD *a2);
// signed __int64 __usercall sub_1800F0DD0@<X0>(unsigned int *a1@<X0>, int a2@<W1>, _DWORD *a3@<X8>);
unsigned int *__fastcall sub_1800F0E34(unsigned int a1, int a2, _DWORD *a3);
signed __int64 __fastcall sub_1800F0E80(unsigned int a1, _QWORD *a2, _QWORD *a3, _QWORD *a4);
signed __int64 __fastcall sub_1800F0ECC(unsigned int a1, _QWORD *a2, _QWORD *a3, _QWORD *a4);
signed __int64 __fastcall sub_1800F0FF4(__int64 a1, __int64 *a2);
_QWORD *__fastcall sub_1800F10EC(_QWORD *result, _QWORD *a2, _QWORD *a3, _QWORD *a4);
__int64 __fastcall sub_1800F1114(unsigned int a1);
__int64 __fastcall sub_1800F11BC(__int64 result, int a2, _DWORD *a3);
signed __int64 __fastcall sub_1800F1274(unsigned __int64 *a1);
__int64 __fastcall sub_1800F1304(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
void sub_1800F14AC();
__int64 __fastcall sub_1800F1514(__int64 a1, unsigned __int8 *a2);
_QWORD *__fastcall sub_1800F156C(_QWORD *result, _QWORD *a2);
__int64 __fastcall sub_1800F166C(__int64 a1, int a2);
signed __int64 __fastcall sub_1800F1948(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8);
signed __int64 __fastcall sub_1800F1A44(__int64 a1, __int64 a2);
__int64 __fastcall sub_1800F1BBC(unsigned __int8 *a1);
_QWORD *__fastcall sub_1800F1BF8(_QWORD *result, _QWORD *a2);
signed __int64 __fastcall sub_1800F1C6C(__int64 a1, __int64 a2, __int64 a3);
__int64 __fastcall sub_1800F1CE4(__int16 a1, __int16 a2, __int16 a3);
void __fastcall sub_1800F1D3C(__int64 a1);
void sub_1800F1D70();
unsigned int *__fastcall sub_1800F1D7C(__int64 a1, int a2, int a3);
unsigned __int64 __fastcall sub_1800F1F28(__int64 a1, unsigned __int64 a2);
signed __int64 __fastcall sub_1800F1F48(_BYTE *a1, unsigned __int64 a2);
signed __int64 __fastcall sub_1800F23D0(_BYTE *a1, int a2);
_QWORD *sub_1800F24C8();
__int64 sub_1800F2544();
__int64 __fastcall sub_1800F2980(__int64 a1);
__int64 sub_1800F2A74();
__int64 __fastcall sub_1800F2AD0(unsigned int a1);
void __fastcall sub_1800F2B24(int a1, __int64 a2, _DWORD *a3, _DWORD *a4, _DWORD *a5);
__int64 __fastcall sub_1800F308C(__int64 result, _DWORD *a2, __int64 a3);
unsigned __int64 __fastcall sub_1800F3194(_QWORD *a1);
__int64 __fastcall sub_1800F31E4(__int64 result, __int64 a2, __int64 a3, unsigned int a4, int a5, __int64 a6);
signed __int64 __fastcall sub_1800F32AC(unsigned int a1);
__int64 __fastcall sub_1800F36B4(int a1);
__int64 __fastcall sub_1800F36C4(char a1);
__int64 sub_1800F36E0();
__int64 sub_1800F36F0();
__int64 sub_1800F3700();
void __fastcall sub_1800F371C(__int64 a1, __int64 a2, __int64 a3, int a4, int a5, int a6, int a7);
__int64 __fastcall sub_1800F3B0C(); // weak
__int64 __fastcall sub_1800F3B7C(); // weak
__int64 __fastcall sub_1800F3BD0(); // weak
__int64 __fastcall sub_1800F3C20(); // weak
__int64 __fastcall sub_1800F3CC4(); // weak
__int64 __fastcall sub_1800F3D40(); // weak
__int64 __fastcall sub_1800F3DC4(); // weak
__int64 __fastcall sub_1800F3DF0(); // weak
__int64 __fastcall sub_1800F3E08(); // weak
__int64 __fastcall sub_1800F3E44(); // weak
signed __int64 __fastcall sub_1800F3E88(__int64 a1);
__int64 __fastcall sub_1800F3F74(__int64 result);
__int64 __fastcall sub_1800F3F9C(__int64 a1);
void __fastcall sub_1800F3FE4(unsigned __int8 a1);
__int64 sub_1800F40D8();
__int64 sub_1800F4130();
__int64 sub_1800F4188();
signed __int64 sub_1800F44F0();
__int64 __fastcall sub_1800F4518(__int64 a1, __int64 a2);
signed __int64 __fastcall sub_1800F4788(__int64 a1);
__int64 __fastcall sub_1800F4B08(__int64 a1, __int64 a2, __int64 a3);
__int64 sub_1800F4DC0();
__int64 __fastcall sub_1800F4F4C(unsigned int a1);
__int64 sub_1800F4FA0();
signed __int64 __fastcall sub_1800F4FFC(_BYTE *a1);
__int64 __fastcall sub_1800F50D0(unsigned int a1);
signed __int64 __fastcall sub_1800F5124(_QWORD *a1, _QWORD *a2);
__int64 __fastcall sub_1800F520C(__int64 result, unsigned __int64 a2);
void __fastcall sub_1800F5240(__int64 a1, unsigned __int64 a2);
__int64 sub_1800F53E8();
void sub_1800F5440();
__int64 __fastcall sub_1800F5490(_QWORD *a1, unsigned __int64 a2, __int64 a3, unsigned __int64 a4);
__int64 __fastcall sub_1800F5684(_QWORD *a1, unsigned __int64 a2);
signed __int64 __fastcall sub_1800F56A4(__int64 a1, _DWORD *a2);
void __noreturn sub_1800F594C();
__int64 __fastcall sub_1800F598C(__int64 result);
__int64 sub_1800F5A54();
__int64 __fastcall sub_1800F5AC0(__int64 result);
void sub_1800F5B8C();
__int64 __fastcall sub_1800F5BF4(__int64 result, int a2);
void __fastcall sub_1800F5CAC(unsigned __int8 *a1);
void __fastcall sub_1800F5CF0(unsigned __int8 *a1);
void __fastcall sub_1800F5E68(_QWORD *a1, __int64 a2, __int64 a3, __int64 a4);
signed __int64 __fastcall sub_1800F5F30(_QWORD *a1);
signed __int64 __fastcall sub_1800F5F40(_QWORD *a1);
_QWORD *__fastcall sub_1800F5F64(_QWORD *result, _QWORD *a2);
unsigned __int64 sub_1800F5FD8();
signed __int64 __fastcall sub_1800F6010(_QWORD *a1);
void __fastcall sub_1800F6044(__int64 a1);
_QWORD *__fastcall sub_1800F60B8(_QWORD *result);
unsigned __int64 sub_1800F612C();
void sub_1800F61B4();
unsigned __int64 sub_1800F6220();
unsigned __int64 sub_1800F62F0();
unsigned __int64 sub_1800F6364();
__int64 *__fastcall sub_1800F63C0(unsigned __int64 a1, _QWORD *a2);
__int64 __fastcall sub_1800F6434(unsigned __int64 a1);
void sub_1800F6498();
signed __int64 __fastcall sub_1800F64C8(_BYTE *a1);
unsigned __int64 __fastcall sub_1800F661C(int a1, _QWORD *a2, unsigned __int64 a3);
signed __int64 __fastcall sub_1800F66A4(int a1, _QWORD *a2);
signed __int64 __fastcall sub_1800F67C8(int a1, _QWORD *a2, _DWORD *a3);
__int64 __fastcall nullsub_25(_QWORD); // weak
__int64 sub_1800F6850(void); // weak
__int64 sub_1800F6854(void); // weak
__int64 sub_1800F6858(void); // weak
__int64 __fastcall sub_1800F685C(_QWORD); // weak
signed __int64 sub_1800F6860();
__int64 __fastcall sub_1800F6884(_QWORD); // weak
__int64 __fastcall sub_1800F6888(_QWORD); // weak
__int64 __fastcall sub_1800F688C(_QWORD); // weak
__int64 sub_1800F6890(void); // weak
__int64 sub_1800F6894(void); // weak
__int64 __fastcall sub_1800F6898(_QWORD); // weak
__int64 sub_1800F689C(void); // weak
signed __int64 sub_1800F68A0();
const char *sub_1800F68B0();
__int64 sub_1800F68BC();
__int64 nullsub_17(void); // weak
__int64 sub_1800F68C8();
__int64 sub_1800F68D0();
__int64 sub_1800F68D8();
__int64 sub_1800F68E0();
__int64 __fastcall sub_1800F68E8(_QWORD); // weak
__int64 __fastcall sub_1800F68EC(_QWORD); // weak
__int64 sub_1800F68F0();
signed __int64 sub_1800F68F8();
__int64 sub_1800F6904();
signed __int64 sub_1800F690C();
long double __fastcall sub_1800F6914(__int64 a1, __int64 a2, __int64 a3, long double *a4);
long double __fastcall sub_1800F6968(__int64 *a1, __int64 a2, long double *a3);
signed __int64 __fastcall sub_1800F69AC(__int64 a1, unsigned int a2);
signed __int64 __fastcall sub_1800F6A1C(unsigned __int64 *a1, _QWORD *a2);
signed __int64 __fastcall sub_1800F6ADC(unsigned __int64 *a1, _QWORD *a2);
signed __int64 __fastcall sub_1800F6BA4(unsigned __int64 *a1, _QWORD *a2);
unsigned __int64 *__fastcall sub_1800F6C40(unsigned __int64 *result, _QWORD *a2);
signed __int64 __fastcall sub_1800F6CB8(unsigned __int64 *a1, __int64 a2, __int64 a3);
void __fastcall sub_1800F6DAC(__int64 *a1, __int64 a2, __int64 a3, char **a4);
void __fastcall sub_1800F6E84(__int64 a1, unsigned __int64 a2, unsigned __int64 a3);
signed __int64 __fastcall sub_1800F6F60(__int64 a1, __int64 a2);
signed __int64 __fastcall sub_1800F6FA4(__int64 a1, _DWORD *a2);
signed __int64 __fastcall sub_1800F7004(__int64 a1, __int64 a2);
signed __int64 __fastcall sub_1800F7048(__int64 a1, bool *a2);
signed __int64 __fastcall sub_1800F7080(_QWORD *a1, _DWORD *a2, _DWORD *a3);
__int64 __fastcall sub_1800F714C(__int64 a1, _QWORD *a2, unsigned __int64 a3, __int64 (__fastcall **a4)(_QWORD, _QWORD, char *, unsigned __int64, _QWORD));
signed __int64 __fastcall sub_1800F724C(__int64 a1, bool *a2);
__int64 __fastcall sub_1800F7274(__int64 a1, _QWORD *a2, unsigned __int64 a3, __int64 (**a4)(void));
signed __int64 __fastcall sub_1800F735C(_QWORD *a1, unsigned int a2, char *a3);
void __fastcall sub_1800F73BC(_QWORD *a1, __int64 a2, _QWORD *a3, _QWORD *a4);
void __fastcall sub_1800F7468(_QWORD *a1, unsigned int a2, __int64 a3, __int64 a4, __int64 a5);
signed __int64 __fastcall sub_1800F753C(__int64 a1, __int64 a2, unsigned __int64 *a3);
signed __int64 __fastcall sub_1800F75B8(__int64 a1, __int64 a2, bool *a3);
signed __int64 __fastcall sub_1800F7624(__int64 a1, __int64 a2, _QWORD *a3, _DWORD *a4);
void __fastcall sub_1800F76CC(__int64 a1);
__int64 __fastcall sub_1800F78BC(__int64 *a1, __int64 a2, __int64 (__fastcall *a3)(unsigned __int64, __int64 *, __int64, __int64), __int64 a4);
long double __fastcall sub_1800F79B4(__int64 a1, __int64 a2, _QWORD *a3);
void __fastcall sub_1800F7A70(unsigned int a1, __int64 a2, __int64 (__fastcall **a3)(unsigned __int64, __int64 *, __int64, __int64), __int64 a4, __int64 a5);
signed __int64 __fastcall sub_1800F7CD0(__int64 a1, unsigned __int8 *a2, __int64 a3, __int64 a4, __int64 a5);
signed __int64 __fastcall sub_1800F7E44(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7);
signed __int64 __fastcall sub_1800F7ED8(unsigned __int64 *a1, unsigned __int64 a2, unsigned __int64 *a3, _QWORD *a4, signed __int64 *a5, _QWORD *a6);
__int64 __fastcall sub_1800F809C(_QWORD *a1, _QWORD *a2, _QWORD *a3);
signed __int64 __fastcall sub_1800F8358(__int64 a1, __int64 a2, _QWORD *a3, _QWORD *a4, _QWORD *a5, _QWORD *a6, _QWORD *a7);
signed __int64 __fastcall sub_1800F8364(__int128 *a1, _QWORD *a2, unsigned __int64 a3);
__int64 __fastcall sub_1800F8398(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5);
// __int64 __usercall sub_1800F83E4@<X0>(__int64 a1@<X0>, unsigned __int64 a2@<X1>, __int64 a3@<X8>);
signed __int64 __fastcall sub_1800F840C(__int128 *a1, __int64 a2, unsigned __int64 a3);
signed __int64 __fastcall sub_1800F84BC(__int64 a1, _QWORD *a2);
signed __int64 __fastcall sub_1800F85F4(unsigned __int64 *a1, unsigned __int64 *a2);
signed __int64 __fastcall sub_1800F85FC(unsigned __int64 *a1, unsigned __int64 *a2, unsigned __int64 *a3);
signed __int64 __fastcall sub_1800F8754(unsigned __int64 *a1, unsigned __int64 *a2, int a3);
__int64 __fastcall sub_1800F887C(__int64 a1, signed __int64 *a2, _BYTE *a3);
signed __int64 __fastcall sub_1800F88BC(unsigned __int8 **a1, bool *a2);
signed __int64 __fastcall sub_1800F88F8(char **a1, _DWORD *a2);
signed __int64 __fastcall sub_1800F8944(char **a1, unsigned __int64 *a2);
signed __int64 __fastcall sub_1800F89C8(unsigned __int64 *a1, unsigned __int64 *a2, _QWORD *a3);
__int64 __fastcall sub_1800F8A3C(__int64 *a1, __int64 *a2);
signed __int64 __fastcall sub_1800F8A58(unsigned __int64 *a1, unsigned __int64 *a2);
signed __int64 __fastcall sub_1800F8AC0(unsigned __int64 *a1, unsigned __int64 a2, __int64 a3, _QWORD *a4, unsigned __int64 a5);
signed __int64 __fastcall sub_1800F8B40(__int64 *a1, unsigned __int64 a2, __int64 a3, _QWORD *a4, unsigned __int64 a5);
bool __fastcall sub_1800F8D28(__int64 a1, __int64 a2);
// bool __usercall sub_1800F8D48@<W0>(_BYTE **a1@<X1>, __int64 a2@<X2>, _BYTE **a3@<X8>);
signed __int64 __fastcall sub_1800F8D80(unsigned __int8 *a1);
signed __int64 __fastcall sub_1800F8F84(_WORD *a1, __int64 a2, __int64 a3);
signed __int64 __fastcall sub_1800F90A4(__int64 a1, __int64 a2, unsigned __int64 a3, __int64 a4);
signed __int64 __fastcall sub_1800F93C4(_QWORD *a1, __int64 a2);
char **__fastcall sub_1800F94FC(char **result);
__int64 __fastcall sub_1800F9A40(__int64 a1, __int64 a2, _QWORD *a3, __int64 a4);
signed __int64 __fastcall sub_1800FA140(char **a1, unsigned __int64 a2, unsigned __int64 a3, unsigned __int8 **a4, unsigned __int64 a5);
signed __int64 __fastcall sub_1800FA300(int8x16_t **a1, unsigned __int64 a2, unsigned __int64 a3, unsigned __int8 **a4, unsigned __int64 a5);
signed __int64 __fastcall sub_1800FA710(__int64 a1);
double __fastcall sub_1800FA9A0(_QWORD *a1);
signed __int64 __fastcall sub_1800FAA10(_DWORD *a1, __int64 a2, __int64 a3, __int64 a4, struct _TEB **a5, void *a6, double a7);
_QWORD *__fastcall sub_1800FADC0(_QWORD *result, signed int a2);
signed __int64 __fastcall sub_1800FB8E0(_QWORD **a1);
signed __int64 __fastcall sub_1800FC6DC(signed int a1);
__int64 __fastcall sub_1800FC728(_QWORD, _QWORD, _QWORD, _QWORD, _QWORD, _QWORD); // weak
__int64 __fastcall sub_1800FC788(__int64 a1, __int64 a2, __int64 a3, _QWORD *a4, __int64 a5, __int64 a6, __int64 a7);
__int64 *sub_1800FCFEC();
__int64 *sub_1800FCFF8();
__int64 *sub_1800FD004();
__int64 *sub_1800FD010();
signed __int64 __fastcall sub_1800FD01C(signed __int64 result, unsigned __int64 *a2, unsigned __int64 *a3);
__int64 __fastcall nullsub_26(_QWORD); // weak
__int64 __fastcall sub_1800FD060(__int64 result, __int64 a2, __int64 a3, __int64 a4);
__int64 __fastcall sub_1800FD108(__int64 a1, unsigned __int8 *a2, unsigned __int8 *a3);
__int64 __fastcall sub_1800FD13C(__int64 a1, unsigned __int64 a2, _QWORD *a3, __int64 a4);
_QWORD *__fastcall sub_1800FD434(__int64 a1, _QWORD *a2);
_QWORD *__fastcall sub_1800FD478(_QWORD *result, _QWORD *a2, unsigned __int64 a3, _QWORD *a4);
__int64 __fastcall sub_1800FD5AC(__int64 a1, unsigned __int64 a2, _QWORD *a3, __int64 a4, __int64 a5, __int64 a6);
__int64 __fastcall sub_1800FD68C(__int64 a1, _QWORD *a2, __int64 a3);
__int64 __fastcall sub_1800FD70C(__int64 a1, _QWORD *a2, unsigned __int64 a3, _QWORD *a4);
__int64 __fastcall sub_1800FD8D0(_QWORD, _QWORD, _QWORD, _QWORD); // weak
__int64 __fastcall sub_1800FD8D4(__int64 result, signed __int64 *a2, signed __int64 *a3, __int64 a4, __int64 a5);
__int64 __fastcall sub_1800FDC6C(__int64 result, __int64 *a2, __int64 *a3, __int64 *a4);
__int64 __fastcall sub_1800FDD20(__int64 a1, __int64 *a2);
__int64 __fastcall sub_1800FDD58(unsigned __int64 **a1, unsigned __int64 a2, unsigned __int64 *a3, unsigned __int64 *a4, __int64 a5);
__int64 __fastcall sub_1800FE00C(unsigned __int64 a1, __int64 a2, unsigned __int64 a3, unsigned __int8 *a4);
// __int64 __usercall sub_1800FE034@<X0>(__int64 a1@<X1>, __int64 a2@<X8>);
_QWORD *__fastcall sub_1800FE0DC(__int64 a1, _QWORD *a2, _QWORD *a3);
__int64 __fastcall sub_1800FE100(__int64 result, unsigned __int64 *a2, unsigned __int64 *a3, unsigned __int64 *a4);
unsigned __int64 __fastcall sub_1800FE1B4(__int64 a1, __int64 *a2);
__int64 __fastcall sub_1800FE1D0(unsigned __int64 a1, signed __int64 *a2);
signed __int64 __fastcall sub_1800FE1E8(unsigned __int64 a1, unsigned __int8 *a2, __int64 a3, unsigned __int8 *a4, unsigned __int8 *a5);
_QWORD *__fastcall sub_1800FE354(unsigned __int64 **a1, __int64 a2, _QWORD *a3, __int64 *a4);
signed __int64 __fastcall sub_1800FE72C(__int64 *a1, unsigned __int64 *a2, unsigned __int64 *a3);
signed __int64 __fastcall sub_1800FE7D0(__int64 *a1, unsigned __int8 *a2, __int64 a3, unsigned __int8 *a4, unsigned __int64 a5, unsigned __int8 *a6, _BYTE *a7);
__int64 *sub_1800FE934();
__int64 __fastcall sub_1800FED80(__int64 result, int8x16_t *a2, int8x16_t *a3, __int64 a4);
__int64 __fastcall sub_1800FEEB0(signed __int64 a1, unsigned __int64 *a2, unsigned __int64 *a3, unsigned __int64 *a4);
__int64 __fastcall sub_1800FF1C4(); // weak
__int64 __fastcall sub_1800FF2C0(); // weak
__int64 __fastcall sub_1800FF330(); // weak
__int64 __fastcall sub_1800FF498(); // weak
_QWORD *__fastcall sub_1800FF4A8(_QWORD *result, __int64 a2);
signed __int64 __fastcall sub_1800FF4DC(signed __int64 *a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7);
signed __int64 __fastcall sub_1800FF7B4(__int64 *a1);
_QWORD *__fastcall sub_1800FF7D4(unsigned __int64 **a1, unsigned __int64 *a2, _QWORD *a3, unsigned __int64 *a4);
__int64 __fastcall sub_1800FF99C(unsigned __int64 **a1, unsigned __int64 *a2, __int64 a3, unsigned __int64 *a4, __int64 a5);
__int64 __fastcall sub_1800FFA10(_QWORD *a1, unsigned __int64 *a2, __int64 a3, unsigned __int64 *a4);
__int64 *sub_180100E94();
_QWORD *__fastcall sub_180100EA0(_QWORD *result, unsigned __int64 a2, _QWORD *a3, unsigned __int64 *a4);
signed __int64 __fastcall sub_180100FE4(int a1, __int64 a2, __int64 a3);
__int64 __fastcall sub_180101004(__int64 result, __int64 *a2);
//-------------------------------------------------------------------------
// Data declarations
_UNKNOWN sub_1800B0800; // weak
_UNKNOWN loc_1800B11FC; // weak
_UNKNOWN loc_1800B498C; // weak
_UNKNOWN loc_1800B49A4; // weak
_UNKNOWN loc_1800B49CC; // weak
_UNKNOWN loc_1800B4B54; // weak
_UNKNOWN loc_1800B4EC0; // weak
_UNKNOWN loc_1800B52A0; // weak
_UNKNOWN loc_1800B5534; // weak
_UNKNOWN loc_1800B55B0; // weak
_UNKNOWN loc_1800B55EC; // weak
_UNKNOWN loc_1800B562C; // weak
_UNKNOWN loc_1800B5644; // weak
_UNKNOWN loc_1800BC5F8; // weak
_UNKNOWN loc_1800BC81C; // weak
_UNKNOWN loc_1800BE124; // weak
_UNKNOWN loc_1800BE748; // weak
_UNKNOWN loc_1800BF090; // weak
_UNKNOWN loc_1800BF0D0; // weak
_UNKNOWN loc_1800BF248; // weak
_UNKNOWN loc_1800BF254; // weak
_UNKNOWN loc_1800BF934; // weak
_UNKNOWN loc_1800BF9AC; // weak
_UNKNOWN loc_1800C3DEC; // weak
_UNKNOWN loc_1800C3F48; // weak
_UNKNOWN loc_1800D4A94; // weak
_UNKNOWN locret_1800D4E68; // weak
_UNKNOWN loc_1800D54FC; // weak
_UNKNOWN loc_1800D5CA8; // weak
_UNKNOWN loc_1800D5E8C; // weak
_UNKNOWN loc_1800D76CC; // weak
_UNKNOWN loc_1800D7860; // weak
_UNKNOWN locret_1800D7A98; // weak
_UNKNOWN loc_1800DA014; // weak
_UNKNOWN loc_1800DA880; // weak
_UNKNOWN loc_1800DB120; // weak
_UNKNOWN loc_1800DB174; // weak
_UNKNOWN loc_1800DB2E8; // weak
_UNKNOWN loc_1800E0874; // weak
_UNKNOWN loc_1800E0D08; // weak
_UNKNOWN loc_1800E1120; // weak
_UNKNOWN loc_1800E2B04; // weak
_UNKNOWN loc_1800E5030; // weak
_UNKNOWN loc_1800E7938; // weak
_UNKNOWN loc_1800E79D0; // weak
_UNKNOWN loc_1800E7A1C; // weak
_UNKNOWN loc_1800E7A68; // weak
_UNKNOWN loc_1800E7AB4; // weak
_UNKNOWN loc_1800E9758; // weak
_UNKNOWN loc_1800E9C0C; // weak
__int64 qword_1800EB3F0[4] =
{
1808788007904223008LL,
1230066625199609624LL,
651345242494996240LL,
72623859790382856LL
}; // weak
_UNKNOWN loc_1800EDE2C; // weak
_UNKNOWN loc_1800EDE80; // weak
_UNKNOWN loc_1800EE72C; // weak
_UNKNOWN loc_1800EEB08; // weak
_UNKNOWN loc_1800EEB7C; // weak
_UNKNOWN loc_1800EEC04; // weak
_UNKNOWN loc_1800F069C; // weak
_UNKNOWN loc_1800F0C78; // weak
_UNKNOWN loc_1800F1DC8; // weak
_UNKNOWN loc_1800F3314; // weak
_UNKNOWN sub_1800F3A2C; // weak
_UNKNOWN sub_1800F3A64; // weak
_UNKNOWN sub_1800F3A9C; // weak
_UNKNOWN sub_1800F3AD4; // weak
_UNKNOWN sub_1800F3B44; // weak
_UNKNOWN sub_1800F3C8C; // weak
_UNKNOWN loc_1800F4A58; // weak
_UNKNOWN loc_1800F6294; // weak
_UNKNOWN locret_1800F8400; // weak
_UNKNOWN locret_1800F8D68; // weak
__int64 qword_1800F9D40[64] =
{
-184368922991985296LL,
-134826664211186320LL,
-184368922991985296LL,
-134829516069470864LL,
-184368922991985296LL,
-134829516069470864LL,
-184368922991985296LL,
-134826612671578768LL,
-184368922991985296LL,
-134826612671578768LL,
-184368922991985296LL,
-134826612671578768LL,
-184368922991985296LL,
-134826612671578768LL,
-184368922991985296LL,
-134826612671578768LL,
-184368922991985296LL,
-134828777335095952LL,
-184368922991985296LL,
-134828777335095952LL,
-184368922991985296LL,
-134828777335095952LL,
-184368922991985296LL,
-134828777335095952LL,
-184368922991985296LL,
-134828777335095952LL,
-184368922991985296LL,
-134828777335095952LL,
-6474023250100248LL,
-6474023250100248LL,
-6474023250100248LL,
-6474023250100248LL,
-184368922991985296LL,
-134828777335095952LL,
-184368922991985296LL,
-134828777335095952LL,
-184368922991985296LL,
-134828777335095952LL,
-184368922991985296LL,
-134828777335095952LL,
-116813897773547936LL,
-116813897773547936LL,
-116813897773547936LL,
-116813897773547936LL,
-116813897773547936LL,
-116813897773547936LL,
-116813897773547936LL,
-116813897773547936LL,
-184368922991985296LL,
-134828777335095952LL,
-184368922991985296LL,
-134828777335095952LL,
-6474023250100248LL,
-6474023250100248LL,
-6474023250100248LL,
-6474023250100248LL,
-71777214294589680LL,
-71777214294589696LL,
-71777214294589696LL,
-71777214294589696LL,
-98799224381964592LL,
-98799224381964640LL,
-98799224381964640LL,
-98799224381964640LL
}; // weak
__int64 qword_1800FA500[8] = { 0LL, 0LL, 0LL, 0LL, 0LL, 0LL, 0LL, 0LL }; // weak
__int64 qword_1800FA700[2] = { 2026089936937033760LL, 2169637811238345488LL }; // weak
__int64 qword_1800FAB10[] = { 0LL }; // weak
char byte_180101040 = '\0'; // weak
int dword_180103A68[] = { 1634495855 }; // weak
__int64 qword_180104640[2] = { 8623816704LL, 8624865280LL }; // weak
__int64 qword_180104650[4] = { 25769803780LL, 51539607560LL, 103079215120LL, 32LL }; // weak
__int64 qword_180104670[4] = { 8842641408LL, 208LL, 8859353088LL, 88LL }; // weak
int dword_180104690[] = { 0 }; // weak
int dword_180104890[] = { 0 }; // weak
__int64 qword_180104C10[35] =
{
-17179868995500LL,
-15032385391710LL,
-12884901776670LL,
-10737418153440LL,
-8589934524210LL,
-6442450890540LL,
-4294967253550LL,
-2147483614070LL,
27280LL,
2147483670070LL,
4294967313960LL,
6442450958700LL,
8589934604090LL,
10737418250000LL,
12884901896310LL,
15032385542940LL,
17179869189830LL,
19327352836910LL,
21474836484160LL,
23622320131540LL,
25769803779020LL,
27917287426590LL,
30064771074230LL,
32212254721920LL,
34359738369670LL,
36507222017450LL,
38654705665270LL,
40802189313110LL,
42949672960980LL,
45097156608860LL,
47244640256760LL,
49392123904670LL,
51539607552600LL,
53687091200530LL,
0LL
}; // weak
char byte_180104D28[] = { '\0' }; // weak
int dword_180104D44 = 33619983; // weak
char byte_180104D70[] = { '\0' }; // weak
int dword_180104D8C[] = { 4278520160 }; // weak
__int64 qword_180104F30[2] = { 12884901888LL, 0LL }; // weak
__int64 qword_180104FA0[16] =
{
1407443838369919LL,
7078000LL,
8758493184LL,
936302870579LL,
8758509568LL,
940597837876LL,
8758525952LL,
944892805173LL,
8758542336LL,
949187772470LL,
8758558720LL,
953482739767LL,
8758575104LL,
957777707064LL,
8758591488LL,
962072674361LL
}; // weak
__int64 qword_180105020[3] = { 17179869184LL, 2LL, 0LL }; // weak
__int64 qword_180105050[2] = { 4294967297LL, 0LL }; // weak
__int64 qword_1801057F0[512] =
{
1737272352888196109LL,
90194313217LL,
8589934599LL,
1737272352888212493LL,
90194313217LL,
8589934599LL,
1737272352888245261LL,
90194313217LL,
8589934599LL,
1737272352888228877LL,
90194313217LL,
8589934599LL,
1735880461361741949LL,
3323408160397143321LL,
1787102550640763425LL,
-5547515501668986610LL,
4496260410626LL,
1787102550035271944LL,
8287467787896248590LL,
4495455113730LL,
1787102550035271944LL,
-935904248824309490LL,
2306406360981504002LL,
3470914294074781477LL,
3396425777938454LL,
6416601486176620621LL,
-8214284232680079349LL,
3396425777938454LL,
1735880461361758333LL,
3323408160397143321LL,
1787102550640763425LL,
-5547515501668986610LL,
4496260410626LL,
1787102550035271944LL,
8287467787896248590LL,
4495455113730LL,
1787102550035271944LL,
-935904248824309490LL,
2306476729725681666LL,
3470914294074781477LL,
3396425777938454LL,
6416601486176620621LL,
-8214284232680079349LL,
3396425777938454LL,
1735880461361774717LL,
3323408160397143321LL,
1787102550640763425LL,
-5547515501668986610LL,
4496260410626LL,
1787102550035271944LL,
8287467787896248590LL,
4495455113730LL,
1787102550035271944LL,
-935904248824309490LL,
2306547098469859330LL,
3470914294074781477LL,
3396425777938454LL,
6416601486176620621LL,
-8214284232680079349LL,
3396425777938454LL,
1735880461361791101LL,
3323408160397143321LL,
1787102550640763425LL,
-5547515501668986610LL,
4496260410626LL,
1787102550035271944LL,
8287467787896248590LL,
4495455113730LL,
1787102550035271944LL,
-935904248824309490LL,
2306617467214036994LL,
3470914294074781477LL,
3396425777938454LL,
6416601486176620621LL,
-8214284232680079349LL,
3396425777938454LL,
-4991755619602915111LL,
127418416825744589LL,
70646912130482688LL,
7156491249843699808LL,
70646912130482688LL,
-4991755619602898727LL,
127418416825744589LL,
70646912130482688LL,
7156491249843699808LL,
70646912130482688LL,
-4991755619602882343LL,
127418416825744589LL,
70646912130482688LL,
7156491249843699808LL,
70646912130482688LL,
-4991755619602865959LL,
127418416825744589LL,
70646912130482688LL,
7156491249843699808LL,
70646912130482688LL,
38638078476293LL,
1688875630067731LL,
537002049LL,
2306476607084433645LL,
1144510000136192LL,
537034817LL,
2306617344572788973LL,
1144510000136192LL,
-6800204745509044163LL,
-1016139093310384989LL,
4841733307095509LL,
1703195052089862LL,
292474388286470LL,
2308113566825318415LL,
-6986965307431649120LL,
1877016930167029878LL,
4760590713513574412LL,
2614340043518773512LL,
2306406222502604818LL,
-2605344604171872525LL,
-1664107666337307681LL,
4667140995475832899LL,
653584981888729858LL,
219714498578LL,
144682554342114306LL,
2882409391993454597LL,
5911373942882355LL,
5550027729025852102LL,
874016370717840520LL,
-3255591355929198567LL,
1171253120826338003LL,
4822483770422151LL,
4803500014899394LL,
85887397342028322LL,
-6800204745509027779LL,
-1016139093310384989LL,
4841733307095509LL,
1703195052089862LL,
292474388286470LL,
2308113566825318415LL,
-6986965307431649120LL,
1877016930167029878LL,
4760590713513574412LL,
2614340043518773512LL,
2306476591246782482LL,
-2605344604171872525LL,
-1664107666337307681LL,
4667140995475832899LL,
653584981888729858LL,
219714498578LL,
144682554342114306LL,
2882409391993454597LL,
5911373942882355LL,
5550027729025852102LL,
874016370717840520LL,
-3255591355929182183LL,
1171253120826338003LL,
4822483770422151LL,
4803500014899394LL,
85887397342028322LL,
-6800204745509011395LL,
-1016139093310384989LL,
4841733307095509LL,
1703195052089862LL,
292474388286470LL,
2308113566825318415LL,
-6986965307431649120LL,
1877016930167029878LL,
4760590713513574412LL,
2614340043518773512LL,
2306546959990960146LL,
-2605344604171872525LL,
-1664107666337307681LL,
4667140995475832899LL,
653584981888729858LL,
219714498578LL,
144682554342114306LL,
2882409391993454597LL,
5911373942882355LL,
5550027729025852102LL,
874016370717840520LL,
-3255591355929165799LL,
1171253120826338003LL,
4822483770422151LL,
4803500014899394LL,
85887397342028322LL,
-6800204745508995011LL,
-1016139093310384989LL,
4841733307095509LL,
1703195052089862LL,
292474388286470LL,
2308113566825318415LL,
-6986965307431649120LL,
1877016930167029878LL,
4760590713513574412LL,
2614340043518773512LL,
2306617328735137810LL,
-2605344604171872525LL,
-1664107666337307681LL,
4667140995475832899LL,
653584981888729858LL,
219714498578LL,
144682554342114306LL,
2882409391993454597LL,
5911373942882355LL,
5550027729025852102LL,
874016370717840520LL,
-3255591355929149415LL,
1171253120826338003LL,
4822483770422151LL,
4803500014899394LL,
85887397342028322LL,
784717055529189457LL,
105969728094217LL,
4294967552LL,
35184372088832LL,
784717055529205841LL,
105969728094217LL,
4294967552LL,
35184372088832LL,
784717055529222225LL,
105969728094217LL,
4294967552LL,
35184372088832LL,
784717055529238609LL,
105969728094217LL,
4294967552LL,
35184372088832LL,
537001985LL,
2306476332206260226LL,
8589934592LL,
537034753LL,
2306617069694615554LL,
8589934592LL,
60666544257LL,
2306476881962074133LL,
90194313230LL,
60666577025LL,
2306617619450429461LL,
90194313230LL,
69256478785LL,
2306476607436685312LL,
1514053899726618640LL,
69256511553LL,
2306617344925040640LL,
1514053899726618640LL,
36706650769457161LL,
25442LL,
2306476366566023520LL,
109272566491265LL,
107064944754688LL,
36706650769489929LL,
25442LL,
2306617104054378848LL,
109272566491265LL,
107064944754688LL,
438623674369LL,
2306511516591456656LL,
56296713329049702LL,
438623707137LL,
2306652254079811984LL,
56296713329049702LL,
438623676417LL,
2306458740033323408LL,
56296713329049702LL,
438623692801LL,
2306529108777501072LL,
56296713329049702LL,
438623709185LL,
2306599477521678736LL,
56296713329049702LL,
438623725569LL,
2306669846265856400LL,
56296713329049702LL,
537010177LL,
2306511516578349057LL,
4294967296LL,
537042945LL,
2306652254066704385LL,
4294967296LL,
537012225LL,
2306458740020215809LL,
4294967296LL,
537028609LL,
2306529108764393473LL,
4294967296LL,
537044993LL,
2306599477508571137LL,
4294967296LL,
537061377LL,
2306669846252748801LL,
4294967296LL,
275414917313LL,
2306512341212070080LL,
824633720896LL,
275414950081LL,
2306653095880294592LL,
824633737536LL,
2306441972467892416LL,
824633720897LL,
279709900993LL,
2306582709956247744LL,
824633720897LL,
825170733185LL,
2306459289788219392LL,
52354345668182208LL,
825170749569LL,
2306529658532397056LL,
52354345668182208LL,
825170765953LL,
2306600027276574720LL,
52354345668182208LL,
825170782337LL,
2306670396020752384LL,
52354345668182208LL,
829465700481LL,
2306459289790382080LL,
61643019899633857LL,
829465716865LL,
2306529658534559744LL,
61643019899633857LL,
829465733249LL,
2306600027278737408LL,
61643019899633857LL,
829465749633LL,
2306670396022915072LL,
61643019899633857LL,
833760667777LL,
2306459289776029696LL,
194LL,
833760684161LL,
2306529658520207360LL,
194LL,
833760700545LL,
2306600027264385024LL,
194LL,
833760716929LL,
2306670396008562688LL,
194LL,
838055635073LL,
2306459289776029696LL,
195LL,
838055651457LL,
2306529658520207360LL,
195LL,
838055667841LL,
2306600027264385024LL,
195LL,
838055684225LL,
2306670396008562688LL,
195LL,
421443805185LL,
2306511516611905536LL,
144123984168878178LL,
421443837953LL,
2306652254100260864LL,
144123984168878178LL,
421443807233LL,
2306458740053772288LL,
144123984168878178LL,
421443823617LL,
2306529108797949952LL,
144123984168878178LL,
421443840001LL,
2306599477542127616LL,
144123984168878178LL,
421443856385LL,
2306669846286305280LL,
144123984168878178LL,
850940534849LL,
2306511791506785029LL,
217020527053635782LL,
850940567617LL,
2306652528995140357LL,
217020527053635782LL,
580357597249LL,
2306459014898319365LL,
844446404968583LL,
580357613633LL,
2306529383642497029LL,
844446404968583LL,
580357630017LL,
2306599752386674693LL,
844446404968583LL,
580357646401LL,
2306670121130852357LL,
844446404968583LL,
558882760769LL,
2306459014914834434LL,
71776127651152002LL,
558882777153LL,
2306529383659012098LL,
71776127651152002LL,
558882793537LL,
2306599752403189762LL,
71776127651152002LL,
558882809921LL,
2306670121147367426LL,
71776127651152002LL,
558882760770LL,
2LL,
558882762818LL,
2LL,
558882777154LL,
2LL,
558882779202LL,
2LL,
558882793538LL,
2LL,
558882795586LL,
2LL,
558882809922LL,
2LL,
558882811970LL,
2LL,
558882760769LL,
2306459014914834432LL,
71776119061217410LL,
558882777153LL,
2306529383659012096LL,
71776119061217410LL,
558882793537LL,
2306599752403189760LL,
71776119061217410LL,
558882809921LL,
2306670121147367424LL,
71776119061217410LL,
550292826177LL,
2306459019176312834LL,
-72057585447993216LL,
550292842561LL,
2306529387920490498LL,
-72057585447993216LL,
550292858945LL,
2306599756664668162LL,
-72057585447993216LL,
550292875329LL,
2306670125408845826LL,
-72057585447993216LL,
550292826178LL,
2LL,
550292828226LL,
2LL,
550292842562LL,
2LL,
550292844610LL,
2LL,
550292858946LL,
2LL,
550292860994LL,
2LL,
550292875330LL,
2LL,
550292877378LL,
2LL,
550292826177LL,
2306459019176312832LL,
-72057594037927808LL,
550292842561LL,
2306529387920490496LL,
-72057594037927808LL,
550292858945LL,
2306599756664668160LL,
-72057594037927808LL,
550292875329LL,
2306670125408845824LL,
-72057594037927808LL,
537010305LL,
2306512066350875135LL,
71778313789505536LL,
537043073LL,
2306652803839230463LL,
71778313789505536LL,
537010306LL,
256LL,
537026690LL,
256LL,
537043074LL,
256LL,
537059458LL,
256LL,
537010305LL,
2306512066350874879LL,
71777214277877760LL,
537043073LL,
2306652803839230207LL,
71777214277877760LL,
438623674369LL,
2306511516591456656LL,
56296713329049702LL,
438623707137LL,
2306652254079811984LL,
56296713329049702LL,
438623676417LL,
2306458740033323408LL,
56296713329049702LL,
438623692801LL,
2306529108777501072LL,
56296713329049702LL,
438623709185LL,
2306599477521678736LL,
56296713329049702LL,
438623725569LL,
2306669846265856400LL,
56296713329049702LL,
674846875841LL,
2306512341313132036LL,
434058620523511965LL,
674846908609LL,
2306653078801487364LL,
434058620523511965LL,
412853872833LL,
2306459564754998788LL,
434058620523511904LL,
412853889217LL,
2306529933499176452LL
}; // weak
__int64 qword_180108438[103] =
{
438623674369LL,
2306511516579594259LL,
5348106161881190LL,
438623707137LL,
2306652254067949587LL,
5348106161881190LL,
438623676417LL,
2306458740021461011LL,
5348106161881190LL,
438623692801LL,
2306529108765638675LL,
5348106161881190LL,
438623709185LL,
2306599477509816339LL,
5348106161881190LL,
438623725569LL,
2306669846253994003LL,
5348106161881190LL,
4831977473LL,
2306511518894653441LL,
-8498292492553158655LL,
4832010241LL,
2306652256383008769LL,
-8498292492553158655LL,
855235502145LL,
2306511791456256001LL,
4294967495LL,
855235534913LL,
2306652528944611329LL,
4294967495LL,
593242499137LL,
2306459014898122753LL,
4294967434LL,
593242515521LL,
2306529383642300417LL,
4294967434LL,
593242531905LL,
2306599752386478081LL,
4294967434LL,
593242548289LL,
2306670121130655745LL,
4294967434LL,
430033741825LL,
2306458740020281344LL,
281474976710756LL,
430033758209LL,
2306529108764459008LL,
281474976710756LL,
430033774593LL,
2306599477508636672LL,
281474976710756LL,
430033790977LL,
2306669846252814336LL,
281474976710756LL,
425738774529LL,
2306458740020215809LL,
4294967395LL,
425738790913LL,
2306529108764393473LL,
4294967395LL,
425738807297LL,
2306599477508571137LL,
4294967395LL,
425738823681LL,
2306669846252748801LL,
4294967395LL,
425738774530LL,
1LL,
425738776578LL,
1LL,
425738790914LL,
1LL,
425738792962LL,
1LL,
425738807298LL,
1LL,
425738809346LL,
1LL,
425738823682LL,
1LL,
425738825730LL,
1LL,
112155018010629LL,
56296715644305408LL,
112155018027013LL,
56296715644305408LL,
112155018043397LL,
56296715644305408LL,
112155018059781LL,
56296715644305408LL,
438623676417LL,
2306458740033323408LL,
56296713329049702LL,
438623692801LL,
2306529108777501072LL,
56296713329049702LL,
438623709185LL,
2306599477521678736LL,
56296713329049702LL,
438623725569LL,
2306669846265856400LL,
56296713329049702LL,
64977190913LL
}; // weak
int dword_180108774 = 537010369; // weak
__int64 qword_180108958[183] =
{
4294967297LL,
4294967297LL,
2LL,
4294967297LL,
4294967297LL,
2LL,
2LL,
2LL,
-1LL,
2305843150947614719LL,
1099511628032LL,
72057590279831588LL,
2305843215374286844LL,
3943961094721295LL,
-1LL,
2305843150947614719LL,
1099511628032LL,
72057590279831588LL,
2305843215374286844LL,
3943961094721295LL,
-1LL,
2305843150947614719LL,
1099511628032LL,
72057590279831588LL,
2305843215374286844LL,
3943961094721295LL,
-1LL,
2305843150947614719LL,
1099511628032LL,
72057590279831588LL,
2305843215374286844LL,
3943961094721295LL,
-1LL,
2305843666343690239LL,
15LL,
70086170226196836LL,
2305852767379390464LL,
21474836485LL,
-1LL,
2305843666343690239LL,
15LL,
70086170226196836LL,
2305852767379390464LL,
21474836485LL,
-1LL,
2305843666343690239LL,
15LL,
70086170226196836LL,
2305852767379390464LL,
21474836485LL,
-1LL,
2305843666343690239LL,
15LL,
70086170226196836LL,
2305852767379390464LL,
21474836485LL,
-1LL,
2305843631983951871LL,
171798692095LL,
56371446064LL,
2305844332063621125LL,
4294967297LL,
140183974445368LL,
2305844366423359488LL,
8589934594LL,
32651093540340032LL,
-4287607733LL,
-1LL,
1095753531536LL,
2305844314883751976LL,
21474836493LL,
4831838516LL,
2305844349243490305LL,
32639LL,
9126805820LL,
2305844383603228674LL,
31609082405453823LL,
-1LL,
2305843631983951871LL,
171798692095LL,
56371446064LL,
2305844332063621125LL,
4294967297LL,
140183974445368LL,
2305844366423359488LL,
8589934594LL,
32651093540340032LL,
-4287607733LL,
-1LL,
1095753531536LL,
2305844314883751976LL,
21474836493LL,
4831838516LL,
2305844349243490305LL,
32639LL,
9126805820LL,
2305844383603228674LL,
31609082405453823LL,
-1LL,
2305843047868399615LL,
2139062143LL,
2039865189335052LL,
2305843077933448960LL,
1792LL,
72057590279831576LL,
2305843129473567072LL,
10084583219199LL,
1095753531436LL,
2305843266911731721LL,
2147483648LL,
3535325776742187264LL,
2305844143101837312LL,
1799LL,
2039865189335308LL,
2305844177445076736LL,
4294967313LL,
30601642260LL,
2305844211804536832LL,
1195169139867455LL,
230528277045838112LL,
2305844314901643279LL,
64424509695LL,
545997717816LL,
2305844658481135678LL,
72057594861060112LL,
7727183036808LL,
2305844710020743168LL,
1195169139867455LL,
230528277045838240LL,
2305844864657457167LL,
64424509695LL,
545997717944LL,
2305845208236949566LL,
72057594861060112LL,
7727183036936LL,
2305845259776557056LL,
1195169139867455LL,
230528277045838368LL,
2305845414413271055LL,
64424509695LL,
545997718072LL,
2305845757992763454LL,
72057594861060112LL,
7727183037064LL,
2305845809532370944LL,
1195169139867455LL,
230528277045838496LL,
2305845964169084943LL,
64424509695LL,
545997718200LL,
-4294967234LL,
-1LL,
69256347904LL,
2305844658481135632LL,
16LL,
69256348160LL,
2305845757992763392LL,
16LL,
-1LL,
1970354901745663LL,
3659217647501320LL,
4785143324540942LL,
1970350608023570LL,
3659217647501320LL,
4785143324540942LL,
14073959290241042LL,
15481355650793523LL,
562954248388664LL,
18858844914712579LL,
19703531842109508LL,
1970350610645058LL,
8444369562173448LL,
10696195145990175LL,
12385083662073876LL,
1970350609858605LL,
8162894585462792LL,
11822159477342239LL,
281474979659820LL,
6755498226745365LL,
19140586180837401LL,
18577657704480829LL,
19985015408623675LL,
16607307098488892LL
}; // weak
__int64 qword_180108F18 = 117449215LL; // weak
int dword_180109998 = 66846726; // weak
__int64 qword_180109AA0[3] = { 0LL, 0LL, 0LL }; // weak
int dword_180109B8C[] = { 810150725 }; // weak
char byte_180109CB9[7] = { '\b', '\x10', '\0', '\0', '\0', '\xA0', '\x86' }; // weak
__int64 qword_18010A348[36] =
{
254LL,
8860730116LL,
8860730117LL,
257LL,
254LL,
8860730120LL,
8860730121LL,
257LL,
254LL,
8825716736LL,
8825716737LL,
257LL,
254LL,
8825077760LL,
8825079808LL,
256LL,
254LL,
8623489024LL,
8639348736LL,
257LL,
254LL,
8639348928LL,
8639348929LL,
256LL,
254LL,
8639479808LL,
8639512576LL,
257LL,
254LL,
8639513632LL,
8639741952LL,
257LL,
4294967295LL,
-1LL,
-1LL,
0LL
}; // weak
__int64 qword_18010C428[4] = { 4294967295LL, -1LL, -1LL, 0LL }; // weak
__int64 qword_18010D1B0 = 8592031748LL; // weak
int dword_18010D5F0[] = { 1 }; // weak
int dword_18010D608 = 1; // weak
__int64 qword_18010D690[63] =
{
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL
}; // weak
__int64 qword_18010E378[7] = { 8825078272LL, 562958543486977LL, 281496451612675LL, 0LL, 0LL, 0LL, 0LL }; // weak
__int64 qword_18010E7A0[68] =
{
-9146810843189477309LL,
-8930638061075693500LL,
-8930638061075693499LL,
-8930638061075693498LL,
-9002695655113621433LL,
-9002695655113621432LL,
-9146810843189477303LL,
-9002695655113621430LL,
-9146810843189477301LL,
-9074753249151549364LL,
-9146810843189477299LL,
59LL,
60LL,
61LL,
62LL,
-9007199237561122753LL,
-9007199237561122752LL,
-9007199237561122751LL,
-8786522872999837687LL,
-8858580467037765622LL,
-8858580467037765621LL,
220676381741154316LL,
-8858580467037765619LL,
-8858580467037765618LL,
-9218868437227405297LL,
-8858580467037765616LL,
-8858580467037765615LL,
-8858580467037765614LL,
-8858580467037765613LL,
-8858580467037765612LL,
-8858580467037765611LL,
-8786522872999837674LL,
-9218868437227405289LL,
-8858580467037765608LL,
-8858580467037765607LL,
-8858580467037765606LL,
-8786522872999837669LL,
-8786522872999837668LL,
-8786522872999837667LL,
-9146810843189477346LL,
-9074753249151549409LL,
-9002695655113621472LL,
-8786522872999837663LL,
-8786522872999837662LL,
-8570350090886053853LL,
-8786522872999837660LL,
-8786522872999837659LL,
-8786522872999837658LL,
-8786522872999837657LL,
-8642407684923981784LL,
-8786522872999837655LL,
-8786522872999837654LL,
-8858580467037765589LL,
-8786522872999837652LL,
-8714465278961909715LL,
-8642407684923981778LL,
-8570350090886053841LL,
-8858580467037765584LL,
-8858580467037765583LL,
-8858580467037765582LL,
-8858580467037765581LL,
-8858580467037765580LL,
-8858580467037765579LL,
-8858580467037765578LL,
-8858580467037765577LL,
-8858580467037765576LL,
-8858580467037765575LL,
-8858580467037765574LL
}; // weak
__int64 qword_18010E9C0[99] =
{
8860991488LL,
8860991496LL,
8860991504LL,
8860991512LL,
8860991520LL,
8860991528LL,
8860991536LL,
8860991544LL,
8860991552LL,
8860991560LL,
8860991568LL,
8860991576LL,
8860991584LL,
8860991592LL,
8860991600LL,
8860991608LL,
8860991616LL,
8825340160LL,
8825340168LL,
8825340176LL,
8825340184LL,
8825340192LL,
8825340200LL,
8825340208LL,
8825340216LL,
8825340224LL,
8825340232LL,
8825340240LL,
8825340256LL,
8825340264LL,
8825340272LL,
8825340280LL,
8825340288LL,
8825340296LL,
8825340304LL,
8825340312LL,
8825340320LL,
8825340328LL,
8825340336LL,
8825340344LL,
8825340352LL,
8825340360LL,
8825340368LL,
8825340376LL,
8825340384LL,
8825340392LL,
8825340400LL,
8825340408LL,
8825340416LL,
8825340424LL,
8825340432LL,
8825340440LL,
8825340448LL,
8825340456LL,
8825340464LL,
8825340472LL,
8825340480LL,
8825340488LL,
8825340496LL,
8825340504LL,
8825340512LL,
8825340520LL,
8825340528LL,
8825340536LL,
8825340544LL,
8825340552LL,
8825340560LL,
8825340568LL,
8825340576LL,
8825340584LL,
8825340592LL,
8825340600LL,
8825340608LL,
8825340616LL,
8825340624LL,
8825340632LL,
8825340640LL,
8825340648LL,
8825340656LL,
8825340664LL,
8825340672LL,
8825340688LL,
8825340696LL,
8825340704LL,
8825340712LL,
8825339904LL,
8825339912LL,
8825339968LL,
8825340928LL,
8825356288LL,
8825356296LL,
8825356304LL,
8825356312LL,
8825356320LL,
8825356328LL,
8825372672LL,
8825372680LL,
8825372688LL,
8825372696LL
}; // weak
__int64 qword_18010ECD8[] = { 8825585664LL }; // weak
__int64 qword_18010ED98[13] =
{
322122547284LL,
330712481868LL,
356482285649LL,
373662154838LL,
438086664293LL,
446676598887LL,
416611827792LL,
408021893218LL,
425201762400LL,
281475010265856LL,
0LL,
0LL,
0LL
}; // weak
__int64 qword_18010F100[6] =
{
3221225472LL,
3221225472LL,
2147483648LL,
2147483648LL,
3221225472LL,
3221225472LL
}; // weak
__int64 qword_18010F130 = 377957122256LL; // weak
__int64 qword_18010F138[42] =
{
2119918548353038LL,
2124316594915342LL,
20195889713217550LL,
38210288226893838LL,
20126070720661646LL,
38210837978529934LL,
2191936560007566LL,
2111122459558286LL,
2122194893652512LL,
2196961671760416LL,
20198166045884960LL,
38142195811191328LL,
2188715342938656LL,
20198715797523104LL,
2194212901077664LL,
2122057446310816LL,
20127659858577920LL,
2122607202124288LL,
20128209614391936LL,
2123706713752192LL,
20199677870197632LL,
2122066032035330LL,
20127668448512514LL,
38212435706364418LL,
38212985462178434LL,
20127672743463427LL,
1302123110791086595LL,
1230936360439316753LL,
1736145456534061343LL,
83318797081717505LL,
1230064434432180481LL,
3103562962032529938LL,
1302123037784604929LL,
1184274LL,
85052726261579776LL,
1302104539629486337LL,
1230064451878785306LL,
868082207722316826LL,
1311130305741979648LL,
305271313LL,
0LL,
0LL
}; // weak
char byte_18010FB4C[] = { 'D' }; // weak
__int64 qword_18010FB70[7] =
{
4294967296500LL,
9019431322600LL,
2400LL,
1154328879523972352LL,
0LL,
0LL,
0LL
}; // weak
__int64 qword_18010FE48 = 144122884690805760LL; // weak
char byte_18010FE50 = '\x04'; // weak
int dword_18010FE54 = 1033; // weak
char byte_18010FE5D[3] = { '\a', '!', '\x01' }; // weak
int dword_18010FE64 = 66569; // weak
__int16 word_18010FE76 = 1287; // weak
int dword_18010FE84 = 1033; // weak
char byte_18010FE8D[3] = { '\a', '\x05', '\x04' }; // weak
__int64 qword_18010FEB8[20] =
{
578721382704613384LL,
578756705054631944LL,
578721382704613384LL,
578721382704613384LL,
1157442765409226912LL,
1157442765409226768LL,
289360691352306692LL,
1157442765409223684LL,
90425216047595792LL,
72340172838076673LL,
72340172838076673LL,
1157442765408239873LL,
162765388885672464LL,
144680345676153346LL,
144680345676153346LL,
580982013104882178LL,
0LL,
0LL,
0LL,
0LL
}; // weak
__int64 qword_18010FFB8[2] = { 3978425819141910832LL, 7378413942531504440LL }; // weak
int dword_18010FFE4 = 3481833578; // weak
int dword_18010FFF4 = 430279089; // weak
__int64 qword_180110018 = 0LL; // weak
__int64 qword_180110078 = 0LL; // weak
__int64 qword_180110108 = 0LL; // weak
__int64 qword_180110180 = 0LL; // weak
__int64 qword_1801101B0 = 0LL; // weak
__int64 qword_1801101E8[172] =
{
4756788775613727280LL,
5910976718553875360LL,
3514726322745729813LL,
-610720958394071539LL,
5417830373402935565LL,
312159074100717361LL,
7308339922746608643LL,
2334397830365795104LL,
8029726959970774850LL,
5125145992504746100LL,
6125746589044781362LL,
7813868778131556868LL,
806476812862955621LL,
1370787899750353200LL,
3534506700982932738LL,
3544388127960478004LL,
3761364507733012787LL,
3688782561975284273LL,
3469796236915781681LL,
2165108837999380005LL,
7301215040880799809LL,
8029709367533270371LL,
4836994021753757812LL,
1382941841643348033LL,
867510641391702320LL,
5269323080440758538LL,
434931663645860718LL,
6004707958897005827LL,
650221696581796400LL,
72354425775621674LL,
4224882069996801LL,
72763489260831280LL,
-1031899625021517056LL,
-3580393709544411539LL,
657827344553564693LL,
-1558868037682983602LL,
1384757377810616822LL,
-2551553398311106790LL,
5374745051271399035LL,
7147384406155179796LL,
859161692904902394LL,
7578794861164552861LL,
-8270116721228554376LL,
-3041358410057286231LL,
-6690169309610212618LL,
8155561993791795995LL,
1417379760185852255LL,
4369965657978660009LL,
1624128567850304000LL,
-2042101610318898330LL,
-585512028413380118LL,
-8182594046820327110LL,
4112954757392075145LL,
-6754732812220677503LL,
-1316835405769172118LL,
3899073137928037948LL,
-3687696887269151365LL,
-7756008917034878916LL,
-8790104076382917559LL,
-7303746073810698834LL,
-2644938931189844796LL,
-170204569176610637LL,
-5543151001473664303LL,
7109688521358975516LL,
-8488097754334663110LL,
-1603113939927573582LL,
3332942531419887820LL,
6642759900067556227LL,
7275383430290835961LL,
-309371685293555090LL,
-6322423481895938583LL,
8822005133425490416LL,
-3037720455194084404LL,
7307115040821634211LL,
-3105588480026611481LL,
493778119407404921LL,
1490754834807050942LL,
-5758854203144062077LL,
8126490643660720871LL,
-5035659825352314861LL,
7334586602286900628LL,
733974673602410844LL,
5896794616133736931LL,
-7627555720473373964LL,
6771154453465939585LL,
78858130392866678LL,
-469335023438794801LL,
7910892366308685615LL,
3660054279753611948LL,
1281559005820043969LL,
-3414790190289973556LL,
-8552091768385948167LL,
-300150723116684915LL,
6214734359515289794LL,
-8308050809987694232LL,
3568423875746314164LL,
4801682727235682959LL,
2113598924914704432LL,
6478823974126355470LL,
-4305448908706724528LL,
1413705193557392422LL,
1377350532520161428LL,
72954817084850433LL,
2113598924663095041LL,
144964032510624015LL,
-8779194602009655807LL,
363666773951088200LL,
9116974499995190016LL,
5565591150241914549LL,
-3193504848480628157LL,
7130696312303815973LL,
9164628024599971876LL,
3524097747853993481LL,
3172615686321866853LL,
2355997893137146559LL,
3285447508809631676LL,
-2492563401224434252LL,
-4939211960389499324LL,
-4956508190566935734LL,
5870613410620235272LL,
671705723255890455LL,
-6787840577419869498LL,
2345869027201003245LL,
621270619919627055LL,
-574305758161757519LL,
-1505833147730704244LL,
6347212536979161595LL,
1828898012739009181LL,
4944389785209790599LL,
-1020151088455445485LL,
-7373239486053776690LL,
7686111583138346613LL,
1119018430661610777LL,
-5011570789023749434LL,
-7669344905000980009LL,
-1681079921547023812LL,
-3518837767283030937LL,
-978155614310050419LL,
3786688732809448119LL,
-8758178896715779591LL,
8683434654854776133LL,
7113402491119849110LL,
-527894901961234900LL,
-3908639094415457744LL,
-2889341571433954829LL,
8614761875172280701LL,
8715494249697813705LL,
-3508982174031567787LL,
-1183959544207698745LL,
-7719083147239333407LL,
-5366278441120798996LL,
3393355407027074123LL,
7336308860984407404LL,
-3973203615680462098LL,
-323913740844433543LL,
-4068803238785871811LL,
3130839350733028769LL,
-6053039971547103777LL,
-8169708442345960418LL,
7378640361148048592LL,
3888686490111821631LL,
8498538126551648789LL,
3452837704206760598LL,
-2731934552265537874LL,
-6742295732273633767LL,
4110149992505297272LL,
-3915165057470421812LL,
129180554112638704LL,
-8016824438193889667LL,
-3359426574797339495LL,
-6941242196438478574LL,
237090821411436LL
}; // weak
__int64 qword_180110750 = 0LL; // weak
__int64 qword_1801107A0 = 0LL; // weak
__int64 qword_180110898 = 0LL; // weak
__int64 qword_1801108E8 = 0LL; // weak
__int64 qword_180110920 = 0LL; // weak
__int64 qword_180110958 = 0LL; // weak
__int64 qword_1801109C0[8] = { 0LL, 0LL, 0LL, 0LL, 0LL, 0LL, 0LL, 0LL }; // weak
__int64 qword_180110A00[58] =
{
72058693566333184LL,
72058693566333184LL,
72058693566333184LL,
72058693566333184LL,
72059797356282112LL,
564049498669058LL,
144396671659278849LL,
-279271658356480LL,
216736831629295872LL,
216736831629295872LL,
216736831629295872LL,
216736831629295872LL,
144396680282898688LL,
1129207048438787LL,
216736831646138881LL,
-277064011677692LL,
72063108826398976LL,
216736831662981890LL,
361417177238078724LL,
-275960188239616LL,
1694364648734976LL,
72064212649837057LL,
144396688906519298LL,
-4193975293LL,
506097522914230528LL,
506097522914230528LL,
506097522914230528LL,
506097522914230528LL,
506097522914230528LL,
433757350076153864LL,
361417177238079495LL,
-16251130LL,
506097522914230528LL,
361417177238079752LL,
216736831730353926LL,
-271544894487292LL,
506097522914230528LL,
289077004400724232LL,
-270441071049211LL,
-1LL,
506097522914230528LL,
216736831764039944LL,
795458214266537220LL,
-1LL,
506097522914230528LL,
144396714777381128LL,
723118041428460547LL,
-62453LL,
506097522914230528LL,
72071939413903624LL,
650777868590383874LL,
-4076074230LL,
506097522914230528LL,
3954995049924872LL,
578437695752307201LL,
-266025777296887LL,
2026090005656510464LL,
2169637811238345504LL
}; // weak
__int64 qword_180110CC0[4] =
{
577027009465680642LL,
1009372573693248258LL,
577027009465680642LL,
1009372573693248258LL
}; // weak
__int64 qword_180110CE0[48] =
{
-71772820459159040LL,
-71772820442381824LL,
-71772820425604608LL,
-71772820408827392LL,
-9205322385119247871LL,
8896716353537324571LL,
3127469775214570482LL,
9063919531145811966LL,
-5790832327319397894LL,
2779844360667309212LL,
-1016224494706540746LL,
-4385442791779346319LL,
-2125679200260745704LL,
1886026420613949419LL,
-5488133869840732645LL,
-1368864130090409175LL,
4160986763402279968LL,
-312173544037921718LL,
9152151469753060675LL,
-8124314156659688368LL,
2439463070858780050LL,
-1435789778054021360LL,
4431163544024946527LL,
-2571694610957378204LL,
1493205263179590178LL,
736957430357515998LL,
7110290743434151497LL,
7869979770361255313LL,
-1516492149820041843LL,
3325196640287881829LL,
2266680504310081052LL,
7400890215734951243LL,
-5091542162739952824LL,
1268036943008874886LL,
-1619291887455250071LL,
975488420713878990LL,
1093698790722037439LL,
7441392446882927792LL,
-7441392446773286007LL,
-4336155070024231818LL,
-3766243637369397544LL,
7105036623409894663LL,
-7973340178411365097LL,
1526699215303891257LL,
7436329637833083697LL,
-8163818279084223215LL,
-2662702644619276377LL,
5167115440072839076LL
}; // weak
__int64 qword_1801110E0[] = { 6443504103LL }; // weak
__int64 qword_180111100 = 6443504125LL; // weak
__int64 qword_1801111E8[] = { 6443504174LL }; // weak
__int64 qword_180111430[3] = { 6443605012LL, 6443605020LL, 6443605016LL }; // weak
__int64 (__fastcall *off_180111448[2])() = { &sub_1800C1108, &sub_1800C1698 }; // weak
__int64 qword_180111498[5] = { 17LL, 8858370048LL, 6443520096LL, 0LL, 0LL }; // weak
void *off_1801114E8 = (void *)0x180105108LL; // weak
void *off_180111508 = &unk_180105240; // weak
__int64 (*off_180111538)[45] = &qword_180105408; // weak
void *off_180111558 = (void *)0x180105540LL; // weak
void *off_180111578 = (void *)0x180105598LL; // weak
void *off_1801115C8 = (void *)0x180107D38LL; // weak
void *off_1801115E8 = (void *)0x1801081B8LL; // weak
__int64 qword_180111628[5] = { 17LL, 25769836544LL, 6443534744LL, 0LL, 0LL }; // weak
__int64 qword_180111650[16] =
{
282638912847872LL,
6443511613LL,
25786613760LL,
6443571184LL,
282651797749761LL,
6443511625LL,
25803390976LL,
6443571224LL,
282664682651650LL,
6443511637LL,
25820168192LL,
6443571264LL,
282677567553539LL,
6443511649LL,
25836945408LL,
6443571304LL
}; // weak
__int64 (*off_1801116E0)[5] = &qword_180111890; // weak
int dword_1801116E8 = 1; // weak
__int64 (*off_180111740)[5] = &qword_180111930; // weak
int dword_180111748 = 1; // weak
__int64 qword_1801117A0[5] = { 17LL, 25769803776LL, 6443535476LL, 0LL, 0LL }; // weak
__int64 qword_1801117C8[5] = { 17LL, 25769803776LL, 6443535896LL, 0LL, 0LL }; // weak
__int64 qword_1801119D0[39] =
{
8574238736LL,
6443535956LL,
12LL,
8573190160LL,
6443535980LL,
12LL,
17163124752LL,
6443536004LL,
7LL,
34342993936LL,
6443536018LL,
6LL,
51522863120LL,
6443536030LL,
7LL,
8574238737LL,
6443536044LL,
11LL,
17164173329LL,
6443536066LL,
5LL,
8573190161LL,
6443536076LL,
8LL,
17163124753LL,
6443536092LL,
4LL,
34342993937LL,
6443536100LL,
8LL,
47278227473LL,
6443536116LL,
7LL,
47295004689LL,
6443536116LL,
7LL,
51522863121LL,
6443536130LL,
7LL
}; // weak
__int64 qword_180111B08[87] =
{
4222429593337857LL,
223334LL,
6443540968LL,
4222433888305153LL,
239726LL,
6443540968LL,
4222438183272449LL,
256118LL,
6443540968LL,
4222442478239745LL,
272510LL,
6443540968LL,
4222386643664897LL,
288902LL,
6443540968LL,
4222390938632193LL,
305294LL,
6443540968LL,
4222395233599489LL,
321686LL,
6443540968LL,
4222399528566785LL,
338078LL,
6443540968LL,
4222403823534081LL,
354470LL,
6443540968LL,
4222408118501377LL,
370862LL,
6443540968LL,
4222412413468673LL,
387254LL,
6443540968LL,
4222425298370561LL,
403646LL,
6443540968LL,
4222124650659841LL,
420038LL,
6443540968LL,
4222124650659841LL,
436430LL,
6443540968LL,
4222128945627139LL,
491753LL,
6443541288LL,
4222133240594435LL,
508145LL,
6443541288LL,
4222141830529027LL,
524537LL,
6443541288LL,
4222150420463619LL,
540929LL,
6443541288LL,
4222154715430915LL,
557321LL,
6443541288LL,
4222146125496323LL,
620840LL,
6443541288LL,
4222128945627143LL,
458969LL,
6443541288LL,
4222133240594439LL,
475361LL,
6443541288LL,
4222124650659857LL,
452825LL,
6443540968LL,
4222124650659858LL,
301198LL,
6443541288LL,
4222124650659859LL,
624944LL,
6443541288LL,
4222124650659860LL,
604452LL,
6443541288LL,
4222128945627156LL,
596256LL,
6443541288LL,
4222133240594452LL,
588059LL,
6443541288LL,
4222124650659861LL,
0LL,
0LL
}; // weak
__int64 qword_180111DC0[4] = { 17LL, 8824815616LL, 6443541608LL, 0LL }; // weak
__int64 qword_1801121F8[2] = { 17LL, 8707375104LL }; // weak
__int64 qword_180112AA8[4] = { 15LL, 6443512484LL, 0LL, 0LL }; // weak
void *off_180112B88 = &locret_1801033E0; // weak
__int64 qword_180112BE0[25] =
{
6443513333LL,
6443513341LL,
6443513349LL,
6443513357LL,
6443513364LL,
6443513370LL,
6443513376LL,
6443513382LL,
6443513388LL,
6443513396LL,
6443513401LL,
6443513410LL,
6443513419LL,
6443513423LL,
6443513428LL,
6443513434LL,
6443513442LL,
6443513449LL,
6443373312LL,
6443373340LL,
6443373556LL,
6443373636LL,
6443373708LL,
6443373756LL,
6443374124LL
}; // weak
void *off_180112CC0 = &loc_1800E5F58; // weak
__int64 qword_180112D38[6] = { 6443656864LL, 6443657104LL, 6443657168LL, 48LL, 6443576784LL, 6443589616LL }; // weak
__int64 (__fastcall *off_180112D68[4])() = { &sub_1800F8398, &sub_1800F8358, &sub_1800F7E44, &sub_1800F76CC }; // weak
__int64 (*off_180112DA0)[6] = &qword_180110990; // weak
__int64 qword_180112DC0[4] = { 6443567522LL, 7LL, 6443567529LL, 9LL }; // weak
__int64 qword_180112DE0[2] = { 6443567538LL, 10LL }; // weak
__int64 qword_180112DF0[256] =
{
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443473408LL,
6443472832LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443473328LL,
6443472832LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443473328LL,
6443472832LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443473376LL,
6443472832LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443473376LL,
6443472832LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443473376LL,
6443472832LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443473376LL,
6443472832LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443473376LL,
6443472832LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472900LL,
6443472832LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472900LL,
6443472832LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472900LL,
6443472832LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472900LL,
6443472832LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472900LL,
6443472832LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472900LL,
6443472832LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472900LL,
6443472832LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472900LL,
6443472832LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472900LL,
6443472832LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472900LL,
6443472832LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472756LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472900LL,
6443472832LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472700LL,
6443472900LL,
6443472832LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473376LL,
6443473048LL,
6443473024LL,
6443473024LL,
6443473024LL,
6443473024LL,
6443473024LL,
6443473024LL,
6443473024LL,
6443473024LL,
6443473024LL,
6443473024LL,
6443473024LL,
6443473024LL,
6443473024LL,
6443473024LL,
6443473024LL,
6443472984LL,
6443472948LL,
6443472948LL,
6443472948LL,
6443472948LL,
6443472948LL,
6443472948LL,
6443472948LL,
6443472948LL,
6443472948LL,
6443472948LL,
6443472948LL,
6443472948LL,
6443472948LL,
6443472948LL,
6443472948LL
}; // weak
__int64 qword_1801135F0[5] = { 244LL, 16LL, 6443487104LL, 6443485344LL, 0LL }; // weak
__int64 qword_180113618[5] = { 244LL, 16LL, 6443486992LL, 6443485904LL, 0LL }; // weak
__int64 qword_180113640[4] = { 244LL, 16LL, 6443487104LL, 6443485712LL }; // weak
__int64 qword_180113660[4] = { 244LL, 16LL, 6443486992LL, 6443486096LL }; // weak
__int64 qword_180113680[8] =
{
48LL,
64LL,
128LL,
11LL,
6443514381LL,
6443568672LL,
6443498128LL,
6443495252LL
}; // weak
__int64 qword_1801136C0[8] =
{
20LL,
20LL,
64LL,
7LL,
6443514393LL,
6443568652LL,
6443493760LL,
6443487760LL
}; // weak
__int64 qword_180113700 = 6443569440LL; // weak
__int64 qword_180113760 = 6443514584LL; // weak
__int16 word_1801139D0[] = { 1282 }; // weak
__int64 qword_1801139D8[] = { 6443587008LL }; // weak
__int64 qword_1801139E8[195] =
{
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL
}; // weak
__int64 qword_180114070[26] =
{
-1LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL
}; // weak
int dword_180114568 = 10; // weak
int dword_180114578 = 1; // weak
void *off_180114580 = &off_180114580; // weak
void **off_180114588 = &off_180114580; // weak
void *off_180114598 = &off_180114598; // weak
void *off_1801145A0 = &off_180114598; // weak
__int64 qword_1801145A8 = 6443506073LL; // weak
__int64 qword_180114600[19] =
{
8758820864LL,
184683593728LL,
232LL,
26405458941957LL,
8758824960LL,
188978561025LL,
233LL,
4428111283456LL,
8758829056LL,
193273528322LL,
234LL,
17609365917701LL,
8758833152LL,
197568495619LL,
235LL,
5501853107458LL,
8859287552LL,
51539607556LL,
0LL
}; // weak
__int64 qword_1801146A0 = 0LL; // weak
__int64 qword_1801147F0[5] = { 2199023255812LL, 0LL, 0LL, 0LL, 0LL }; // weak
__int64 qword_1801148A0[] = { 47244640256LL }; // weak
int dword_180114AA0 = 118; // weak
int dword_180114C88 = 6; // weak
__int64 qword_180114C90 = 5139240511851214385LL; // weak
void *off_180114CA0 = &off_180114CA0; // weak
void **off_180114CA8[3] = { &off_180114CA0, &off_180114CB0, &off_180114CB0 }; // weak
void *off_180114CB0 = &off_180114CB0; // weak
__int64 qword_180115030 = 0LL; // weak
__int64 qword_180115038 = 0LL; // weak
int dword_180115080 = 2; // weak
__int64 qword_180115110[7] =
{
1297036692682744323LL,
339303858233LL,
6443512513LL,
1LL,
4294967298LL,
2565928LL,
4309968872LL
}; // weak
__int64 qword_1801154E8[14] =
{
453181572LL,
72057594037927936LL,
59377927323655LL,
-8286341354053697536LL,
14073748835532800LL,
32769LL,
2147549250LL,
140741788696576LL,
-9223090003532316672LL,
23080948090273792LL,
32769LL,
0LL,
0LL,
0LL
}; // weak
int dword_180115558 = 4294967295; // weak
int dword_18011555C = 4294967295; // weak
__int64 qword_180115640 = 34359738368LL; // weak
__int64 qword_180115658 = 2147483648LL; // weak
__int64 qword_1801156A0 = 16667LL; // weak
char byte_1801156A8[] = { '\0' }; // weak
int dword_1801156B8 = 64; // weak
__int64 qword_180115700[2] = { 4611686018460943882LL, 2199041212417LL }; // weak
__int16 word_180115712 = 0; // weak
__int16 word_180115714 = 0; // weak
__int16 word_180115716 = 0; // weak
char byte_180115718 = '\0'; // weak
char byte_180115719 = '\0'; // weak
char byte_18011571A = '\0'; // weak
__int64 qword_180115720 = 0LL; // weak
void *off_180115730 = &off_180115730; // weak
void **off_180115738[5] =
{
&off_180115730,
&off_180115740,
&off_180115740,
&off_180115750,
&off_180115750
}; // weak
void *off_180115740 = &off_180115740; // weak
void **off_180115748[3] = { &off_180115740, &off_180115750, &off_180115750 }; // weak
void *off_180115750 = &off_180115750; // weak
void **off_180115758 = &off_180115750; // weak
__int64 qword_180115760 = 7233743590452769327LL; // weak
__int64 qword_180115768 = -6342693155041110020LL; // weak
void *off_180115770 = &off_180115770; // weak
__int64 qword_180115778 = 6443587440LL; // weak
__int64 qword_180115780[4] =
{
1272829845898154752LL,
-5986335702806163030LL,
1272829846769391599LL,
-5986335702806163030LL
}; // weak
__int64 qword_1801157A8 = 0LL; // weak
char byte_1801157C0[] = { '\0' }; // weak
int dword_1801157D4[] = { 0 }; // weak
char byte_180115824[] = { '\0' }; // weak
__int64 qword_180115838[10] =
{
4294967296LL,
12884901890LL,
21474836484LL,
30064771078LL,
38654705672LL,
47244640266LL,
55834574860LL,
64424509454LL,
103079215120LL,
1340029796408LL
}; // weak
char byte_180115888[] = { '\0' }; // weak
__int64 qword_1801158C8[39] =
{
4294967296LL,
12884901890LL,
25769803780LL,
42949672968LL,
68719476748LL,
103079215124LL,
154618822684LL,
223338299436LL,
326417514556LL,
463856468060LL,
670014898300LL,
944892805308LL,
1357209665788LL,
1906965479804LL,
2731599200764LL,
3831110828796LL,
5480378270716LL,
7679401526780LL,
10977936410620LL,
15375982922748LL,
21973052690428LL,
30769145714684LL,
43963285250044LL,
61555471298556LL,
87943750369276LL,
123128122466300LL,
175904680607740LL,
246273424801788LL,
351826541084668LL,
492564029472764LL,
703670262038524LL,
985145238814716LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL,
0LL
}; // weak
//----- (00000001800B0000) ----------------------------------------------------
__int64 *sub_1800B0000()
{
__int64 *result; // x0
__int64 *v1; // x1
signed __int64 v2; // x2
__int64 v3; // x3
__int64 v4; // x4
_QWORD *v10; // x10
_QWORD *v11; // x10
_QWORD *v13; // x10
_QWORD *v14; // x10
_QWORD *v15; // x10
result = (__int64 *)sub_1800C5374((__int64)sub_1800B0000, (__int64)sub_1800B0000);
if ( v1 == result )
{
__asm { MSR #6, #0xF }
_WriteStatusReg(ARM64_SYSREG(3, 0, 12, 0, 0), (unsigned __int64)sub_1800B0800);
v10 = (_QWORD *)6443073536LL;
do
{
*v10 = 0LL;
v10[1] = 0LL;
v10 += 2;
}
while ( v10 != (_QWORD *)6443089920LL );
v11 = (_QWORD *)6442975232LL;
do
{
*v11 = 0LL;
v11[1] = 0LL;
v11 += 2;
}
while ( v11 != (_QWORD *)6443073536LL );
__asm { MSR #5, #0 }
v13 = (_QWORD *)6443588096LL;
do
{
*v13 = 0LL;
v13[1] = 0LL;
v13 += 2;
}
while ( v13 != (_QWORD *)6443663568LL );
do
{
*(_DWORD *)v13 = 0;
v13 = (_QWORD *)((char *)v13 + 4);
}
while ( (signed __int64)v13 < 6443663576LL );
v14 = (_QWORD *)6444220416LL;
do
{
*v14 = 0LL;
v14[1] = 0LL;
v15 = v14 + 2;
*v15 = 0LL;
v15[1] = 0LL;
v15 += 2;
*v15 = 0LL;
v15[1] = 0LL;
v15 += 2;
*v15 = 0LL;
v15[1] = 0LL;
v14 = v15 + 2;
}
while ( v14 != (_QWORD *)6444236800LL );
}
else
{
v2 = 6443588096LL - (_QWORD)v1;
do
{
v3 = *result;
v4 = result[1];
result += 2;
*v1 = v3;
v1[1] = v4;
v1 += 2;
v2 -= 16LL;
}
while ( v2 );
}
return result;
}
// 1800B0800: using guessed type __int64 __fastcall sub_1800B0800();
//----- (00000001800B0390) ----------------------------------------------------
void __fastcall __noreturn sub_1800B0390(int a1)
{
int v1; // w20
__int64 v7; // x0
v1 = a1;
_WriteStatusReg(ARM64_SYSREG(3, 0, 4, 2, 3), 0LL);
__asm { MSR #7, #4 }
__dsb(0xFu);
__isb(0xFu);
sub_1800B0504();
nullsub_3();
sub_1800B1724(v1);
sub_1800B0464(v7 | 0x48D520D);
sub_1800E0F20();
_WriteStatusReg(ARM64_SYSREG(3, 0, 14, 1, 0), _ReadStatusReg(ARM64_SYSREG(3, 0, 14, 1, 0)) | 0x201);
_WriteStatusReg(ARM64_SYSREG(3, 0, 4, 0, 0), 0x1C0uLL);
_WriteStatusReg(ARM64_SYSREG(3, 0, 4, 0, 1), (unsigned __int64)sub_1800B041C);
__asm { ERET }
}
// 1800B041C: using guessed type __int64 __fastcall sub_1800B041C(__int64, int, int, __int64);
// 1800B0524: using guessed type __int64 nullsub_3(void);
//----- (00000001800B041C) ----------------------------------------------------
#error "1800B0424: positive sp value has been found (funcsize=0)"
//----- (00000001800B0428) ----------------------------------------------------
void sub_1800B0428()
{
_WriteStatusReg(ARM64_SYSREG(3, 0, 1, 0, 0), _ReadStatusReg(ARM64_SYSREG(3, 0, 1, 0, 0)) & 0xFFFFFFFFFB7ABDFFLL);
_WriteStatusReg(ARM64_SYSREG(3, 0, 14, 1, 0), _ReadStatusReg(ARM64_SYSREG(3, 0, 14, 1, 0)) & 0xFFFFFFFFFFFFFDFELL);
}
//----- (00000001800B045C) ----------------------------------------------------
unsigned __int64 sub_1800B045C()
{
return _ReadStatusReg(ARM64_SYSREG(3, 0, 1, 0, 0));
}
//----- (00000001800B0464) ----------------------------------------------------
unsigned __int64 __fastcall sub_1800B0464(unsigned __int64 result)
{
unsigned __int64 v1; // x1
do
{
_WriteStatusReg(ARM64_SYSREG(3, 0, 1, 0, 0), result);
__dsb(0xFu);
__isb(0xFu);
v1 = result;
result |= 0x80001uLL;
}
while ( result != v1 );
return result;
}
//----- (00000001800B0488) ----------------------------------------------------
unsigned __int64 __fastcall sub_1800B0488(unsigned __int64 result)
{
_WriteStatusReg(ARM64_SYSREG(3, 0, 10, 2, 0), result);
__isb(0xFu);
return result;
}
//----- (00000001800B0494) ----------------------------------------------------
unsigned __int64 __fastcall sub_1800B0494(unsigned __int64 result)
{
_WriteStatusReg(ARM64_SYSREG(3, 0, 2, 0, 2), result);
__isb(0xFu);
return result;
}
//----- (00000001800B04A0) ----------------------------------------------------
unsigned __int64 __fastcall sub_1800B04A0(unsigned __int64 result)
{
_WriteStatusReg(ARM64_SYSREG(3, 0, 2, 0, 0), result);
__isb(0xFu);
return result;
}
//----- (00000001800B04AC) ----------------------------------------------------
unsigned __int64 sub_1800B04AC()
{
return _ReadStatusReg(ARM64_SYSREG(3, 0, 1, 0, 2));
}
//----- (00000001800B04C0) ----------------------------------------------------
unsigned __int64 sub_1800B04C0()
{
__isb(0xFu);
return _ReadStatusReg(ARM64_SYSREG(3, 3, 14, 2, 1));
}
//----- (00000001800B04CC) ----------------------------------------------------
unsigned __int64 __fastcall sub_1800B04CC(unsigned __int64 result)
{
_WriteStatusReg(ARM64_SYSREG(3, 3, 14, 2, 1), result);
__isb(0xFu);
return result;
}
//----- (00000001800B04D8) ----------------------------------------------------
unsigned __int64 sub_1800B04D8()
{
__isb(0xFu);
return _ReadStatusReg(ARM64_SYSREG(3, 3, 14, 0, 1));
}
//----- (00000001800B04E4) ----------------------------------------------------
unsigned __int64 __fastcall sub_1800B04E4(unsigned __int64 result)
{
_WriteStatusReg(ARM64_SYSREG(3, 3, 14, 2, 0), result);
__isb(0xFu);
return result;
}
//----- (00000001800B04F0) ----------------------------------------------------
void sub_1800B04F0()
{
__dsb(0xFu);
__asm { SYS #0, c8, c7, #0 }
__dsb(0xFu);
__isb(0xFu);
}
//----- (00000001800B0504) ----------------------------------------------------
void sub_1800B0504()
{
__asm { SYS #0, c7, c5, #0 }
__dsb(0xFu);
__isb(0xFu);
}
//----- (00000001800B0528) ----------------------------------------------------
void sub_1800B0528()
{
__asm { SYS #3, c7, c14, #1, X0 }
}
//----- (00000001800B0534) ----------------------------------------------------
void sub_1800B0534()
{
__dmb(0xFu);
}
//----- (00000001800B053C) ----------------------------------------------------
signed __int64 __fastcall sub_1800B053C(__int16 a1)
{
unsigned __int64 v1; // x2
__int16 v7; // w9
unsigned __int64 v8; // x1
signed __int64 result; // x0
v1 = _ReadStatusReg(ARM64_SYSREG(3, 3, 4, 2, 1));
__asm { MSR #6, #3 }
__isb(0xFu);
v7 = a1;
__asm { SYS #0, c7, c8, #0, X0 }
__isb(0xFu);
v8 = _ReadStatusReg(ARM64_SYSREG(3, 0, 7, 4, 0));
result = (v8 & 1) == 0;
if ( !(v8 & 1) )
result = v8 & 0xFFFFFFFFF000LL | v7 & 0xFFF;
_WriteStatusReg(ARM64_SYSREG(3, 3, 4, 2, 1), v1);
__isb(0xFu);
return result;
}
//----- (00000001800B0594) ----------------------------------------------------
void sub_1800B0594()
{
__asm { MSR #7, #3 }
__isb(0xFu);
}
//----- (00000001800B05AC) ----------------------------------------------------
void __noreturn sub_1800B05AC()
{
sub_1800F6364();
_WriteStatusReg(ARM64_SYSREG(3, 0, 4, 0, 0), _ReadStatusReg(ARM64_SYSREG(3, 0, 4, 0, 0)) & 0xFFFFFFFFFFFFFFF3LL);
_WriteStatusReg(ARM64_SYSREG(3, 0, 4, 0, 1), (unsigned __int64)sub_1800B05CC);
__asm { ERET }
}
// 1800B05CC: using guessed type __int64 __fastcall sub_1800B05CC(__int64);
//----- (00000001800B05CC) ----------------------------------------------------
#error "1800B05D0: positive sp value has been found (funcsize=0)"
//----- (00000001800B05D4) ----------------------------------------------------
void __noreturn sub_1800B05D4()
{
_WriteStatusReg(
ARM64_SYSREG(3, 0, 4, 0, 0),
_ReadStatusReg(ARM64_SYSREG(3, 0, 4, 0, 0)) & 0xFFFFFFFFFFFFFFF3LL | 0xC0);
_WriteStatusReg(ARM64_SYSREG(3, 0, 4, 0, 1), (unsigned __int64)nullsub_24);
__asm { ERET }
}
// 1800B05F0: using guessed type __int64 __fastcall nullsub_24();
//----- (00000001800B05F4) ----------------------------------------------------
void sub_1800B05F4()
{
__dsb(0xFu);
__isb(0xFu);
__wfi();
}
//----- (00000001800B0604) ----------------------------------------------------
void __noreturn sub_1800B0604()
{
__asm { HINT #0x45 }
while ( 1 )
;
}
//----- (00000001800B060C) ----------------------------------------------------
signed __int64 sub_1800B060C()
{
return 14LL;
}
//----- (00000001800B0614) ----------------------------------------------------
_QWORD *__fastcall sub_1800B0614(_QWORD *result, _QWORD *a2)
{
*result = 6442975232LL;
*a2 = 98304LL;
return result;
}
//----- (00000001800B062C) ----------------------------------------------------
signed __int64 sub_1800B062C()
{
int v0; // w0
v0 = sub_1800B1188();
return (64 - v0) | (unsigned int)((64 - v0) << 16) | 0x16580A500LL;
}
//----- (00000001800B1028) ----------------------------------------------------
void __usercall sub_1800B1028(_QWORD *a1@<X0>, __int64 a2@<X4>, __int64 a3@<X5>, __int64 a4@<X6>, __int64 a5@<X7>, __int64 a6@<X8>, __n128 q0_0@<Q0>, __n128 q1_0@<Q1>, __n128 q2_0@<Q2>, __n128 q3_0@<Q3>, __n128 q4_0@<Q4>, __n128 a7@<Q5>, __n128 a8@<Q6>, __n128 a9@<Q7>, __int64 a10@<X1>, __int64 a11@<X2>)
{
__int64 v16; // x9
__int64 v17; // x10
__int64 v18; // x11
__int64 v19; // x12
__int64 v20; // x13
__int64 v21; // x14
__int64 v22; // x15
__int64 v23; // x16
__int64 v24; // x17
__int64 v25; // x18
__int64 v26; // x19
__int64 v27; // x20
__int64 v28; // x21
__int64 v29; // x22
__int64 v30; // x23
__int64 v31; // x24
__int64 v32; // x25
__int64 v33; // x26
__int64 v34; // x27
__int64 v35; // x28
a1[4] = a2;
a1[5] = a3;
a1[6] = a4;
a1[7] = a5;
a1[8] = a6;
a1[9] = v16;
a1[10] = v17;
a1[11] = v18;
a1[12] = v19;
a1[13] = v20;
a1[14] = v21;
a1[15] = v22;
a1[16] = v23;
a1[17] = v24;
a1[18] = v25;
a1[19] = v26;
a1[20] = v27;
a1[21] = v28;
a1[22] = v29;
a1[23] = v30;
a1[24] = v31;
a1[25] = v32;
a1[26] = v33;
a1[27] = v34;
a1[28] = v35;
a1[33] = _ReadStatusReg(ARM64_SYSREG(3, 0, 4, 0, 1));
sub_1800B1064((__int64)a1, q0_0, q1_0, q2_0, q3_0, q4_0, a7, a8, a9, a10, a11);
}
//----- (00000001800B1064) ----------------------------------------------------
void __fastcall sub_1800B1064(__int64 a1, __n128 a2, __n128 a3, __n128 a4, __n128 a5, __n128 a6, __n128 a7, __n128 a8, __n128 a9, __int64 a10, __int64 a11)
{
__int128 v11; // q8
__int128 v12; // q9
__int128 v13; // q10
__int128 v14; // q11
__int128 v15; // q12
__int128 v16; // q13
__int128 v17; // q14
__int128 v18; // q15
__int128 v19; // q16
__int128 v20; // q17
__int128 v21; // q18
__int128 v22; // q19
__int128 v23; // q20
__int128 v24; // q21
__int128 v25; // q22
__int128 v26; // q23
__int128 v27; // q24
__int128 v28; // q25
__int128 v29; // q26
__int128 v30; // q27
__int128 v31; // q28
__int128 v32; // q29
__int128 v33; // q30
__int128 v34; // q31
*(_DWORD *)(a1 + 256) = _ReadStatusReg(ARM64_SYSREG(3, 0, 4, 0, 0));
*(__n128 *)(a1 + 304) = a2;
*(__n128 *)(a1 + 320) = a3;
*(__n128 *)(a1 + 336) = a4;
*(__n128 *)(a1 + 352) = a5;
*(__n128 *)(a1 + 368) = a6;
*(__n128 *)(a1 + 384) = a7;
*(__n128 *)(a1 + 400) = a8;
*(__n128 *)(a1 + 416) = a9;
*(_OWORD *)(a1 + 432) = v11;
*(_OWORD *)(a1 + 448) = v12;
*(_OWORD *)(a1 + 464) = v13;
*(_OWORD *)(a1 + 480) = v14;
*(_OWORD *)(a1 + 496) = v15;
*(_OWORD *)(a1 + 512) = v16;
*(_OWORD *)(a1 + 528) = v17;
*(_OWORD *)(a1 + 544) = v18;
*(_OWORD *)(a1 + 560) = v19;
*(_OWORD *)(a1 + 576) = v20;
*(_OWORD *)(a1 + 592) = v21;
*(_OWORD *)(a1 + 608) = v22;
*(_OWORD *)(a1 + 624) = v23;
*(_OWORD *)(a1 + 640) = v24;
*(_OWORD *)(a1 + 656) = v25;
*(_OWORD *)(a1 + 672) = v26;
*(_OWORD *)(a1 + 688) = v27;
*(_OWORD *)(a1 + 704) = v28;
*(_OWORD *)(a1 + 720) = v29;
*(_OWORD *)(a1 + 736) = v30;
*(_OWORD *)(a1 + 752) = v31;
*(_OWORD *)(a1 + 768) = v32;
*(_OWORD *)(a1 + 784) = v33;
*(_OWORD *)(a1 + 800) = v34;
*(_DWORD *)(a1 + 816) = _ReadStatusReg(ARM64_SYSREG(3, 3, 4, 4, 1));
*(_DWORD *)(a1 + 820) = _ReadStatusReg(ARM64_SYSREG(3, 3, 4, 4, 0));
JUMPOUT(__CS__, a11);
}
//----- (00000001800B1170) ----------------------------------------------------
void __noreturn sub_1800B1170()
{
_WriteStatusReg(ARM64_SYSREG(3, 0, 4, 1, 0), *(_QWORD *)(_ReadStatusReg(ARM64_SYSREG(3, 0, 4, 1, 0)) + 248));
__asm { ERET }
}
//----- (00000001800B1188) ----------------------------------------------------
signed __int64 sub_1800B1188()
{
unsigned int v0; // w0
bool v1; // zf
v0 = sub_1800B060C();
if ( v0 <= 0x10 )
v1 = ((1 << v0) & 0x15000) == 0;
else
v1 = 1;
if ( v1 )
sub_1800D489C("%llx:%d", &byte_180101040, 3641077548663203113LL, 163LL);
return 36LL;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800B11F4) ----------------------------------------------------
void __fastcall sub_1800B11F4(unsigned __int64 a1, unsigned __int64 a2, unsigned __int64 a3, unsigned int a4)
{
unsigned int v4; // w22
unsigned __int64 v5; // x23
unsigned __int64 v6; // x19
signed __int64 v7; // x9
signed __int64 v8; // x8
unsigned int v9; // w24
char v10; // w27
signed __int64 v11; // x28
__int64 v12; // x8
unsigned __int64 v13; // x9
signed __int64 v14; // x8
char v15; // w26
unsigned __int64 v16; // x21
unsigned __int64 v17; // x25
BOOL v18; // w0
unsigned __int64 v19; // x26
unsigned __int64 v20; // x22
signed __int64 v21; // x8
signed __int64 v22; // x8
signed __int64 v23; // x20
unsigned __int64 *v24; // x24
unsigned __int64 i; // x8
bool v26; // cf
signed __int64 v27; // x8
unsigned __int64 v28; // [xsp+20h] [xbp-80h]
unsigned int v29; // [xsp+28h] [xbp-78h]
unsigned int v30; // [xsp+2Ch] [xbp-74h]
unsigned __int64 v31; // [xsp+48h] [xbp-58h]
v4 = a4;
v5 = a3;
v31 = a2;
v6 = a1;
if ( ((1LL << sub_1800B18F4(3)) - 1) & (a2 | a1 | a3) )
{
v27 = 482LL;
goto LABEL_54;
}
v29 = 0x249u >> v4;
v7 = 4LL;
if ( !((0xFC0u >> v4) & 1) )
v7 = ~(8 * (0x38u >> v4)) & 8;
v8 = 64LL;
if ( (0xE00u >> v4) & 1 )
v8 = 0x40000000000000LL;
v28 = (((0xFC0u >> v4) & 1) << 9) & 0xFFFFFF7F | (((0x924u >> v4) & 1) << 7) | (unsigned __int64)v8 | v7;
v30 = v4;
LABEL_44:
if ( v5 )
{
v9 = sub_1800B1994();
v10 = 0;
v11 = MEMORY[0x180128028];
while ( 1 )
{
sub_1800B060C();
sub_1800B1188();
if ( v5 > 0x1000000000LL || (sub_1800B1188(), 0x1000000000LL - v5 < v6) )
{
v27 = 377LL;
goto LABEL_54;
}
if ( 0x10000000000LL - v5 < v31 )
{
v27 = 379LL;
goto LABEL_54;
}
v15 = sub_1800B18F4(v9);
sub_1800B060C();
v16 = 1LL << ((unsigned __int8)sub_1800B060C() - 3);
v17 = 1LL << v15;
v18 = sub_1800B1A00(v9);
v19 = (v16 - 1) & (v6 >> v15);
if ( v17 <= v5 && v18 && !((v17 - 1) & (v6 | v31)) )
{
sub_1800B060C();
if ( sub_1800B1A00(v9) )
{
if ( v30 >= 0xC )
{
v27 = 220LL;
}
else
{
v20 = 0LL;
v21 = 1059LL;
if ( v9 < 3 )
v21 = 1057LL;
v22 = (v28 | v21) ^ 0x80;
if ( v29 & 1 )
v23 = v22;
else
v23 = v22 | 0x60000000000000LL;
v24 = (unsigned __int64 *)(v11 + 8 * v19);
for ( i = v5; ; i -= v17 )
{
v26 = i >= v17 ? v19 >= v16 : 1;
if ( v26 )
break;
if ( *v24 )
{
v27 = 418LL;
goto LABEL_54;
}
*v24 = (v31 + v20) | v23;
++v24;
v20 += v17;
++v19;
}
if ( v20 - 1 >= v5 )
{
v27 = 436LL;
}
else
{
if ( v5 >= v20 )
{
v6 += v20;
v31 += v20;
v5 = i;
goto LABEL_44;
}
v27 = 489LL;
}
}
}
else
{
v27 = 183LL;
}
LABEL_54:
sub_1800D489C("%llx:%d", &byte_180101040, 3641077548663203113LL, v27);
}
if ( v9 >= 3 )
{
v27 = 443LL;
goto LABEL_54;
}
if ( v10 & 1 )
break;
v12 = *(_QWORD *)(v11 + 8 * v19);
if ( (*(_QWORD *)(v11 + 8 * v19) & 3LL) == 1 )
{
v27 = 451LL;
goto LABEL_54;
}
++v9;
if ( v12 & 1 )
{
v10 = 0;
v11 = v12 & 0xFFFFFFFFF000LL;
}
else
{
LABEL_13:
if ( (unsigned int)sub_1800B1994() >= v9 )
{
v27 = 298LL;
goto LABEL_54;
}
v13 = 1LL << sub_1800B060C();
if ( MEMORY[0x180128020] < v13 || (v14 = MEMORY[0x180128018], MEMORY[0x180128018] > MEMORY[0x180128020] - v13) )
{
v27 = 303LL;
goto LABEL_54;
}
if ( MEMORY[0x180128018] & (v13 - 1) )
{
v27 = 311LL;
goto LABEL_54;
}
qword_1801158C8[9450] = MEMORY[0x180128018] + v13;
*(_QWORD *)(v11 + 8 * v19) = v14 | 0x8000000000000003LL;
v10 = 1;
v11 = v14;
}
}
++v9;
goto LABEL_13;
}
if ( sub_1800B045C() & 1 )
sub_1800B04F0();
}
// 180101040: using guessed type char byte_180101040;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B162C) ----------------------------------------------------
void sub_1800B162C()
{
JUMPOUT(&loc_1800B11FC);
}
//----- (00000001800B1644) ----------------------------------------------------
void sub_1800B1644()
{
JUMPOUT(&loc_1800B11FC);
}
//----- (00000001800B165C) ----------------------------------------------------
void sub_1800B165C()
{
JUMPOUT(&loc_1800B11FC);
}
//----- (00000001800B1674) ----------------------------------------------------
void sub_1800B1674()
{
JUMPOUT(&loc_1800B11FC);
}
//----- (00000001800B1724) ----------------------------------------------------
void __fastcall sub_1800B1724(int a1)
{
int v1; // w19
signed __int64 v2; // x0
signed __int64 v3; // x21
__int64 v4; // x8
__int64 v5; // x9
signed __int64 v6; // x8
__int64 v7; // [xsp+18h] [xbp-38h]
__int64 v8; // [xsp+20h] [xbp-30h]
__int64 v9; // [xsp+28h] [xbp-28h]
v1 = a1;
v9 = 5139240511851214385LL;
sub_1800B0488(0xFF04uLL);
v2 = sub_1800B062C();
sub_1800B0494(v2);
v3 = 1LL << sub_1800B060C();
sub_1800B0614(&v8, &v7);
v4 = v8;
if ( v8 & (v3 - 1) )
{
v6 = 597LL;
goto LABEL_7;
}
v5 = v7;
if ( v7 & (v3 - 1) )
{
v6 = 598LL;
LABEL_7:
sub_1800D489C("%llx:%d", &byte_180101040, 3641077548663203113LL, v6);
}
qword_1801158C8[9449] = v8;
qword_1801158C8[9450] = v4;
qword_1801158C8[9451] = (v5 + v4) & -v3;
qword_1801158C8[9452] = v4;
qword_1801158C8[9450] += 1 << sub_1800B060C();
sub_1800C5EB0(v1);
sub_1800B04A0(qword_1801158C8[9452]);
sub_1800B04F0();
if ( 5139240511851214385LL != v9 )
sub_1800D4A5C();
}
// 180101040: using guessed type char byte_180101040;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B1850) ----------------------------------------------------
unsigned __int64 __fastcall sub_1800B1850(unsigned __int64 result, void *a2, void *a3, void *a4, void *a5, void *a6, void *a7)
{
__int16 v7; // w19
signed __int64 v8; // x0
signed __int64 v9; // x8
v7 = result;
if ( result >> 30 == 7 )
{
v8 = linux_eabi_syscall(7LL, (void *)result, a2, a3, a4, a5, a6, a7);
if ( MEMORY[0x1801280CC] )
{
v9 = 624LL;
}
else
{
MEMORY[0x1801280CC] = 1;
MEMORY[0x180116018] = 1;
if ( sub_1800B053C(v7) )
sub_1800D528C();
v9 = 627LL;
}
sub_1800D489C("%llx:%d", &byte_180101040, 3641077548663203113LL, v9);
}
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800B18F4) ----------------------------------------------------
__int64 __fastcall sub_1800B18F4(int a1)
{
int v1; // w19
int v2; // w0
unsigned int v3; // w8
v1 = a1;
sub_1800B060C();
v2 = sub_1800B060C();
if ( v2 == 16 )
{
v3 = -13 * v1 + 55;
}
else if ( v2 == 14 )
{
v3 = -11 * v1 + 47;
}
else
{
if ( v2 != 12 )
sub_1800D489C("%llx:%d", &byte_180101040, 3641077548663203113LL, 281LL);
v3 = 39 - 9 * v1;
}
return v3;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800B1994) ----------------------------------------------------
signed __int64 sub_1800B1994()
{
int v0; // w0
v0 = sub_1800B060C();
if ( v0 == 12 )
return 1LL;
if ( v0 != 16 && v0 != 14 )
sub_1800D489C("%llx:%d", &byte_180101040, 3641077548663203113LL, 139LL);
return 2LL;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800B1A00) ----------------------------------------------------
bool __fastcall sub_1800B1A00(unsigned int a1)
{
unsigned int v1; // w19
_BOOL8 result; // x0
v1 = a1;
sub_1800B060C();
if ( v1 != 1 || (unsigned int)sub_1800B060C() != 12 )
result = v1 > 1;
else
result = 1LL;
return result;
}
//----- (00000001800B1A44) ----------------------------------------------------
void sub_1800B1A44()
{
void *v0; // x0
signed __int64 v1; // x8
unsigned int v2; // w9
unsigned int v3; // w9
void *v4; // x1
void *v5; // x2
void *v6; // x3
void *v7; // x4
void *v8; // x5
void *v9; // x6
signed __int64 v10; // x0
__int64 v11; // x22
_QWORD *v12; // x19
unsigned __int64 v13; // x20
signed __int64 v14; // x8
signed __int64 i; // x9
unsigned int v16; // w10
unsigned int v17; // w10
unsigned int v18; // w10
__int64 v19; // x11
unsigned int v20; // [xsp+14h] [xbp-2Ch]
__int64 v21; // [xsp+18h] [xbp-28h]
v21 = 5139240511851214385LL;
v0 = (void *)sub_1800F5684(&v20, 4uLL);
v1 = v20 ^ (v20 << 13) ^ ((v20 ^ (v20 << 13)) >> 17);
v2 = v1 ^ 32 * v1 ^ (((unsigned int)v1 ^ 32 * (_DWORD)v1) << 13);
v3 = v2 ^ (v2 >> 17) ^ 32 * (v2 ^ (v2 >> 17));
v20 = v3;
v10 = linux_eabi_syscall(v1, v0, v4, v5, v6, v7, v8, v9);
if ( !MEMORY[0x1801280CC] )
{
MEMORY[0x1801280CC] = 1;
MEMORY[0x180116018] = 1;
if ( !LOBYTE(qword_1801158C8[9453]) )
{
v11 = 0LL;
LOBYTE(qword_1801158C8[9453]) = 1;
v12 = (_QWORD *)((v3 % 0x7E1 << 14) | ((_DWORD)v1 << 25) | 0x1C0000000LL);
v13 = 6442713088LL;
while ( v11 != 128 )
{
*(_QWORD *)(v11 + 6443663416LL) = v12;
sub_1800B11F4((unsigned __int64)v12, v13, 0x4000uLL, 8u);
sub_1800F05A0(v12, 0x4000uLL);
v11 += 8LL;
v13 += 0x4000LL;
v12 += 4096;
}
v14 = 15LL;
for ( i = 120LL; i; i -= 8LL )
{
v16 = v20 ^ (v20 << 13) ^ ((v20 ^ (v20 << 13)) >> 17);
v17 = v16 ^ 32 * v16;
v20 = v17;
v18 = v17 - v17 / ((signed int)v14 + 1) * (v14 + 1);
v19 = *(_QWORD *)(i + 6443663416LL);
*(_QWORD *)(i + 6443663416LL) = *(_QWORD *)(8LL * v18 + 0x180128038LL);
*(_QWORD *)(8LL * v18 + 0x180128038LL) = v19;
--v14;
}
sub_1800D528C();
}
}
sub_1800D489C("%llx:%d", &byte_180101040, -336966405497706492LL, 95LL);
}
// 180101040: using guessed type char byte_180101040;
// 180114C90: using guessed type __int64 qword_180114C90;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B1BDC) ----------------------------------------------------
void __usercall sub_1800B1BDC(void *a1@<X0>, void *a2@<X1>, void *a3@<X2>, void *a4@<X3>, void *a5@<X4>, void *a6@<X5>, void *a7@<X6>, signed __int64 a8@<X8>)
{
signed __int64 v8; // x0
unsigned __int64 v9; // x8
int v10; // w10
__int64 v11; // x21
v8 = linux_eabi_syscall(a8, a1, a2, a3, a4, a5, a6, a7);
if ( !MEMORY[0x1801280CC] )
{
v9 = 0LL;
MEMORY[0x1801280CC] = 1;
MEMORY[0x180116018] = 1;
while ( v9 < 0x10 )
{
v10 = *(unsigned __int8 *)(v9++ + 6443663544LL);
if ( !v10 )
{
*(_BYTE *)(v9 + 6443663543LL) = 1;
v11 = *(_QWORD *)(8 * v9 + 0x180128030LL);
sub_1800D528C();
}
}
sub_1800D528C();
}
sub_1800D489C("%llx:%d", &byte_180101040, -336966405497706492LL, 139LL);
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800B1D04) ----------------------------------------------------
void __noreturn sub_1800B1D04()
{
unsigned __int64 v0; // x19
int v1; // w0
v0 = sub_1800D55FC();
sub_1800F61B4();
v1 = (*(__int64 (__fastcall **)(_QWORD))(v0 + 904))(*(_QWORD *)(v0 + 912));
sub_1800D5984(v1);
}
//----- (00000001800B1D2C) ----------------------------------------------------
void __fastcall __noreturn sub_1800B1D2C(__int64 a1, void *a2, void *a3, void *a4, void *a5, void *a6, void *a7)
{
_QWORD *v7; // x0
unsigned __int64 v8; // x9
_QWORD *v9; // x11
signed __int64 v10; // x9
signed __int64 v11; // x9
v7 = (_QWORD *)linux_eabi_syscall(-336966405497706492LL, *(void **)(a1 + 920), a2, a3, a4, a5, a6, a7);
if ( MEMORY[0x1801280CC] )
{
v11 = 166LL;
}
else
{
v8 = 0LL;
MEMORY[0x1801280CC] = 1;
MEMORY[0x180116018] = 1;
do
{
if ( v8 > 0xF )
{
v11 = 177LL;
goto LABEL_9;
}
v9 = *(_QWORD **)(8 * v8++ + 0x180128038LL);
}
while ( v9 != v7 );
v10 = v8 + 6443663544LL;
if ( *(_BYTE *)(v10 - 1) == 1 )
{
*(_BYTE *)(v10 - 1) = 0;
sub_1800F05A0(v7, 0x4000uLL);
sub_1800D528C();
}
v11 = 170LL;
}
LABEL_9:
sub_1800D489C("%llx:%d", &byte_180101040, -336966405497706492LL, v11);
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800B1DF4) ----------------------------------------------------
signed __int64 sub_1800B1DF4()
{
signed __int64 result; // x0
int v1; // w1
int v2; // w9
unsigned int v3; // w8
char v4; // w11
char v5; // w12
unsigned __int8 v6; // [xsp+6h] [xbp-Ah]
unsigned __int8 v7; // [xsp+7h] [xbp-9h]
__int64 v8; // [xsp+8h] [xbp-8h]
v8 = 5139240511851214385LL;
if ( sub_1800D8634() & 1 || sub_1800D88D0() )
goto LABEL_3;
result = sub_1800BC278(2u, &v6);
if ( !(_DWORD)result )
{
if ( !v6 )
{
LABEL_3:
result = 0LL;
goto LABEL_4;
}
if ( sub_1800C5624() & 1 )
{
v1 = 224;
v6 = -32;
}
else
{
v1 = v6;
}
sub_1800BC320(4u, v1);
result = sub_1800BC278(3u, &v7);
if ( !(_DWORD)result )
{
v2 = v7 & 0xF;
v3 = (unsigned int)v7 >> 4;
if ( v2 == 15 )
v4 = 15;
else
v4 = v2 + 1;
if ( v3 == 15 )
v5 = 15;
else
v5 = v3 + 1;
if ( v6 != 224 )
LOBYTE(v2) = v4;
if ( v6 == 224 )
LOBYTE(v3) = v5;
v7 = v2 | 16 * v3;
sub_1800BC320(3u, v7);
sub_1800D8A88();
goto LABEL_3;
}
}
LABEL_4:
if ( 5139240511851214385LL != v8 )
sub_1800D4A5C();
return result;
}
//----- (00000001800B1EDC) ----------------------------------------------------
__int64 __fastcall sub_1800B1EDC(int a1)
{
int v1; // w19
v1 = a1;
if ( !(sub_1800D8634() & 1) && !sub_1800D88D0() )
sub_1800BC320(2u, v1);
return 0LL;
}
//----- (00000001800B1F18) ----------------------------------------------------
__int64 sub_1800B1F18()
{
sub_1800BC320(3u, 0);
return 0LL;
}
//----- (00000001800B1F38) ----------------------------------------------------
signed __int64 __fastcall sub_1800B1F38(int *a1, unsigned int *a2)
{
unsigned int *v2; // x19
int *v3; // x20
signed __int64 result; // x0
unsigned int v5; // w8
unsigned __int8 v6; // [xsp+7h] [xbp-19h]
__int64 v7; // [xsp+8h] [xbp-18h]
v2 = a2;
v3 = a1;
v7 = 5139240511851214385LL;
v6 = 0;
result = sub_1800BC278(3u, &v6);
if ( !(_DWORD)result )
{
v5 = v6;
if ( v3 )
*v3 = v6 & 0xF;
if ( v2 )
*v2 = v5 >> 4;
}
if ( 5139240511851214385LL != v7 )
sub_1800D4A5C();
return result;
}
//----- (00000001800B1FBC) ----------------------------------------------------
void sub_1800B1FBC()
{
__int64 v0; // x1
__int64 v1; // x2
__int64 v2; // x3
__int64 v3; // x4
__int64 v4; // x5
__int64 v5; // x6
__int64 v6; // x7
__int64 v7; // x1
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
unsigned __int8 v14; // [xsp+17h] [xbp-19h]
__int64 v15; // [xsp+18h] [xbp-18h]
v15 = 5139240511851214385LL;
if ( (unsigned int)sub_1800BC278(4u, &v14) )
goto LABEL_2;
if ( v14 != 255 )
{
if ( v14 != 224 )
goto LABEL_2;
nullsub_17();
if ( (unsigned int)sub_1800BC320(4u, 0) )
goto LABEL_2;
sub_1800B1EDC(225);
sub_1800C5A64();
sub_1800F4188();
sub_1800EF260((__int64)"%llx:%d\n", v7, v8, v9, v10, v11, v12, v13, -5515212492756888132LL);
sub_1800D3B2C(0);
}
sub_1800EF260((__int64)"%llx:%d\n", v0, v1, v2, v3, v4, v5, v6, -5515212492756888132LL);
LABEL_2:
sub_1800F3FE4(0);
if ( 5139240511851214385LL != v15 )
sub_1800D4A5C();
}
// 1800F68C4: using guessed type __int64 nullsub_17(void);
//----- (00000001800B209C) ----------------------------------------------------
__int64 sub_1800B209C()
{
__int64 i; // x19
__int64 v1; // x0
unsigned __int64 v2; // x20
__int64 *j; // x21
_BYTE *v4; // x19
for ( i = 0uLL; i != 4; i += 2LL )
{
v1 = sub_1800E9DAC((_BYTE *)qword_1801110E0[i]);
if ( v1 )
sub_1800D7BA8(v1, qword_1801110E0[i + 1], 0);
}
v2 = 0LL;
for ( j = &qword_180111100; v2 <= 1; j += 2 )
{
v4 = (_BYTE *)*j;
if ( sub_1800E9DAC((_BYTE *)*j) )
{
if ( sub_1800F64C8(v4) & 1 )
break;
}
++v2;
}
return sub_1800D7E64(0LL);
}
// 1800D7E64: using guessed type __int64 __fastcall sub_1800D7E64(_QWORD);
// 1801110E0: using guessed type __int64 qword_1801110E0[];
// 180111100: using guessed type __int64 qword_180111100;
//----- (00000001800B2134) ----------------------------------------------------
signed __int64 sub_1800B2134()
{
sub_1800B2154(1768058740LL);
return 0xFFFFFFFFLL;
}
//----- (00000001800B2154) ----------------------------------------------------
__int64 __fastcall sub_1800B2154(__int64 a1)
{
int v1; // w19
__int64 v2; // x1
__int64 v3; // x2
__int64 v4; // x3
__int64 v5; // x4
__int64 v6; // x5
__int64 v7; // x6
__int64 v8; // x7
__int64 result; // x0
__int64 v10; // x3
__int64 v11; // x4
__int64 v12; // x5
__int64 v13; // x6
__int64 v14; // x7
char v15; // [xsp+10h] [xbp-20h]
__int64 v16; // [xsp+18h] [xbp-18h]
v1 = a1;
v16 = 5139240511851214385LL;
if ( !(unsigned int)sub_1800D80D4((char *)0x800000000LL, 0x20000000uLL, (unsigned __int64 *)&v15, a1) )
{
sub_1800D4F44();
sub_1800B2B44(v1, 0LL, 0x800000000LL, v10, v11, v12, v13, v14);
LABEL_5:
sub_1800D4A5C();
}
result = sub_1800EF260((__int64)"%llx:%d\n", v2, v3, v4, v5, v6, v7, v8, -5515212492756888132LL);
if ( 5139240511851214385LL != v16 )
goto LABEL_5;
return result;
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800B21F8) ----------------------------------------------------
signed __int64 sub_1800B21F8()
{
sub_1800B2154(1684627815LL);
sub_1800B222C(1684627815, "diags-path");
return 0xFFFFFFFFLL;
}
//----- (00000001800B222C) ----------------------------------------------------
signed __int64 __fastcall sub_1800B222C(int a1, _BYTE *a2)
{
__int64 v2; // x1
__int64 v3; // x2
__int64 v4; // x3
__int64 v5; // x4
__int64 v6; // x5
__int64 v7; // x6
__int64 v8; // x7
void **v9; // x19
signed __int64 result; // x0
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
__int64 v14; // x3
__int64 v15; // x4
__int64 v16; // x5
__int64 v17; // x6
__int64 v18; // x7
char v19; // [xsp+18h] [xbp-238h]
int v20; // [xsp+24h] [xbp-22Ch]
char v21; // [xsp+28h] [xbp-228h]
__int64 v22; // [xsp+228h] [xbp-28h]
v22 = 5139240511851214385LL;
v20 = a1;
v9 = sub_1800ECB70(a2);
if ( v9 )
{
result = sub_1800B272C();
if ( result & 0x80000000 )
goto LABEL_6;
sub_1800EFC74(&v21, 0x200uLL, 0LL, 0x200uLL, (__int64)"/boot%s", v11, v12, v13, (__int64)v9);
if ( !(unsigned int)sub_1800D7EC0(
&v21,
(char *)0x820000000LL,
0x7F00000uLL,
(unsigned __int64 *)&v19,
(unsigned int *)&v20,
1u,
0LL,
0) )
{
sub_1800D4F44();
sub_1800B2B44(v20, 0LL, 34896609280LL, v14, v15, v16, v17, v18);
return sub_1800B2338();
}
sub_1800ED6D8("/boot");
}
result = sub_1800EF260((__int64)"%llx:%d\n", v2, v3, v4, v5, v6, v7, v8, -5515212492756888132LL);
LABEL_6:
if ( 5139240511851214385LL != v22 )
sub_1800D4A5C();
return result;
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800B2338) ----------------------------------------------------
signed __int64 sub_1800B2338()
{
sub_1800B222C(1634495855, "alamo-path");
return 0xFFFFFFFFLL;
}
//----- (00000001800B2360) ----------------------------------------------------
__int64 __fastcall sub_1800B2360(__int64 a1, __int64 a2)
{
__int64 v2; // x1
__int64 v3; // x2
__int64 v4; // x3
__int64 v5; // x4
__int64 v6; // x5
__int64 v7; // x6
__int64 v8; // x7
__int64 v9; // x19
void *v11; // x3
void *v12; // x4
void *v13; // x5
void *v14; // x6
signed __int64 v15; // x8
void *v16; // [xsp+18h] [xbp-28h]
char v17; // [xsp+20h] [xbp-20h]
__int64 v18; // [xsp+28h] [xbp-18h]
v18 = 5139240511851214385LL;
v9 = ((__int64 (__fastcall *)(__int64, __int64, char *, void **))loc_1800C3F48)(a1, a2, &v17, &v16);
if ( !(v9 & 0x80000000) )
{
sub_1800EF260((__int64)"%llx:%d\n", v2, v3, v4, v5, v6, v7, v8, -5515212492756888132LL);
sub_1800F3FE4(0);
sub_1800D456C((void *)3, *(void **)&v17, v16, v11, v12, v13, v14, v15);
}
sub_1800EF260((__int64)"%llx:%d\n", v2, v3, v4, v5, v6, v7, v8, -5515212492756888132LL);
if ( 5139240511851214385LL != v18 )
sub_1800D4A5C();
return v9;
}
//----- (00000001800B272C) ----------------------------------------------------
signed __int64 sub_1800B272C()
{
void **v0; // x19
char v1; // ST08_1
__int64 v2; // x5
__int64 v3; // x6
__int64 v4; // x7
signed __int64 result; // x0
char v6; // [xsp+18h] [xbp-98h]
__int64 v7; // [xsp+98h] [xbp-18h]
v7 = 5139240511851214385LL;
v0 = sub_1800ECB70("boot-device");
if ( v0 )
{
v1 = (char)((char *)sub_1800ECB8C("boot-partition", 0LL) + 97);
sub_1800EFC74(&v6, 0x80uLL, 0LL, 0x80uLL, (__int64)"%s%c", v2, v3, v4, (__int64)v0);
result = sub_1800B27D8(&v6, 0LL);
}
else
{
result = 0xFFFFFFFFLL;
}
if ( 5139240511851214385LL != v7 )
sub_1800D4A5C();
return result;
}
//----- (00000001800B27D8) ----------------------------------------------------
signed __int64 __fastcall sub_1800B27D8(_BYTE *a1, __int64 a2)
{
__int64 v2; // x19
__int64 v3; // x20
int i; // w21
__int64 v5; // x4
__int64 v6; // x5
__int64 v7; // x6
__int64 v8; // x7
__int64 v9; // x8
__int64 v10; // x0
signed __int64 result; // x0
v2 = a2;
v3 = (__int64)a1;
if ( sub_1800E9DAC(a1) )
{
for ( i = 0; ; ++i )
{
v9 = sub_1800EDBB8(i);
if ( !v9 )
{
v10 = 1074135042LL;
goto LABEL_8;
}
if ( !(unsigned int)sub_1800ED508(v3, v9, (__int64)"/boot", v2, v5, v6, v7, v8) )
break;
sub_1800F5AC0(1074135043LL);
}
result = 0LL;
}
else
{
v10 = 1074135041LL;
LABEL_8:
sub_1800F598C(v10);
result = 0xFFFFFFFFLL;
}
return result;
}
//----- (00000001800B2884) ----------------------------------------------------
signed __int64 sub_1800B2884()
{
char *v0; // x19
void **v1; // x21
void **v2; // x22
signed __int64 v3; // x20
__int64 v4; // x1
__int64 v5; // x2
__int64 v6; // x3
__int64 v7; // x4
__int64 v8; // x5
__int64 v9; // x6
__int64 v10; // x7
void **v11; // x0
__int64 v12; // x5
__int64 v13; // x6
__int64 v14; // x7
__int64 v16; // [xsp+18h] [xbp-48h]
char v17; // [xsp+20h] [xbp-40h]
__int64 v18; // [xsp+28h] [xbp-38h]
v18 = 5139240511851214385LL;
v0 = (char *)sub_1800EDBF4(0x200uLL);
v1 = sub_1800ECB70("boot-path");
if ( v1 && (v2 = sub_1800ECB70("dt-path")) != 0LL )
{
v3 = sub_1800F68E8(0LL);
if ( v3 & 0x80000000 )
{
sub_1800F5AC0(2148139009LL);
}
else
{
v3 = sub_1800B272C();
if ( v3 & 0x80000000
|| (v11 = sub_1800ECB70("boot-ramdisk")) != 0LL
&& *(_BYTE *)v11
&& (sub_1800EFC74(v0, 0x200uLL, 0LL, 0xFFFFFFFFFFFFFFFFLL, (__int64)"/boot%s", v8, v9, v10, (__int64)v11),
v3 = sub_1800F4FFC(v0),
v3 & 0x80000000) )
{
sub_1800EF260((__int64)"%llx:%d\n", v4, v5, v6, v7, v8, v9, v10, -5515212492756888132LL);
}
else
{
sub_1800EFC74(v0, 0x200uLL, 0LL, 0xFFFFFFFFFFFFFFFFLL, (__int64)"/boot%s", v8, v9, v10, (__int64)v2);
v3 = sub_1800EC730(v0);
if ( !(v3 & 0x80000000) )
{
sub_1800EFC74(v0, 0x200uLL, 0LL, 0xFFFFFFFFFFFFFFFFLL, (__int64)"/boot%s", v12, v13, v14, (__int64)v1);
v3 = ((__int64 (__fastcall *)(char *, signed __int64, char *, __int64 *))loc_1800C3DEC)(
v0,
1802661484LL,
&v17,
&v16);
if ( !(v3 & 0x80000000) )
{
v3 = sub_1800B2360(*(__int64 *)&v17, v16);
if ( !(v3 & 0x80000000) )
sub_1800D489C("%llx:%d", &byte_180101040, -5515212492756888132LL, 769LL);
}
}
}
}
}
else
{
v3 = 0xFFFFFFFFLL;
}
sub_1800F5CF0("boot-breadcrumbs");
sub_1800EE010(v0);
sub_1800ED6D8("/boot");
if ( 5139240511851214385LL != v18 )
sub_1800D4A5C();
return v3;
}
// 1800F68E8: using guessed type __int64 __fastcall sub_1800F68E8(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800B2A84) ----------------------------------------------------
void sub_1800B2A84()
{
__int64 v0; // x1
__int64 v1; // x2
__int64 v2; // x3
__int64 v3; // x4
__int64 v4; // x5
__int64 v5; // x6
__int64 v6; // x7
const char *v7; // x0
__int64 v8; // x3
__int64 v9; // x4
__int64 v10; // x5
__int64 v11; // x6
__int64 v12; // x7
int v13; // w0
__int64 v14; // x1
__int64 v15; // x2
__int64 v16; // x3
__int64 v17; // x4
__int64 v18; // x5
__int64 v19; // x6
__int64 v20; // x7
__int64 v21; // [xsp+0h] [xbp-10h]
__int64 v22; // [xsp+8h] [xbp-8h]
v22 = 5139240511851214385LL;
if ( sub_1800D4DFC(0x800000000uLL, 133169152LL) & 1 )
{
if ( !(unsigned int)sub_1800D8034(
0x800000000LL,
133169152,
(char *)0x820000000LL,
0x7F00000uLL,
0LL,
(unsigned int *)"cebilefciladrmmhtreptlhptmbr",
7u,
(unsigned int *)&v21 + 1,
9) )
{
sub_1800D4F44();
sub_1800B2B44(SHIDWORD(v21), 9LL, 34896609280LL, v8, v9, v10, v11, v12);
sub_1800B2B44(v13, v14, v15, v16, v17, v18, v19, v20);
return;
}
v7 = "Memory image not valid\n";
}
else
{
v7 = "Permission Denied\n";
}
sub_1800EF260((__int64)v7, v0, v1, v2, v3, v4, v5, v6, v21);
if ( 5139240511851214385LL != v22 )
sub_1800D4A5C();
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800B2B44) ----------------------------------------------------
void __fastcall sub_1800B2B44(int a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
void *v8; // x19
char v9; // w20
__int64 v10; // x21
int v11; // w8
bool v12; // zf
void *v13; // x3
void *v14; // x4
void *v15; // x5
void *v16; // x6
v8 = (void *)a3;
v9 = a2;
v10 = 0uLL;
do
{
v11 = dword_180103A68[v10];
v10 += 3LL;
if ( v11 == a1 )
v12 = 1;
else
v12 = v11 == 0;
}
while ( !v12 );
if ( &dword_180103A68[v10] == (int *)12 )
sub_1800D489C("%llx:%d", &byte_180101040, -5515212492756888132LL, 248LL);
if ( v10 == 9 )
sub_1800D4FC8(1);
if ( v9 & 8 )
sub_1800C55C4();
sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, -5515212492756888132LL);
sub_1800D456C(
(void *)(unsigned int)dword_180103A68[v10 - 2],
v8,
0LL,
v13,
v14,
v15,
v16,
(signed __int64)&dword_180103A68[v10]);
}
// 180101040: using guessed type char byte_180101040;
// 180103A68: using guessed type int dword_180103A68[];
//----- (00000001800B2E1C) ----------------------------------------------------
__int64 __fastcall sub_1800B2E1C(unsigned __int8 *a1)
{
unsigned __int8 *v1; // x19
__int64 v2; // x20
__int64 result; // x0
v1 = a1;
v2 = 0uLL;
while ( v2 != 15 )
{
result = sub_1800F0770(v1, (_BYTE *)qword_1801111E8[v2]);
++v2;
if ( !(_DWORD)result )
return result;
}
return 1LL;
}
// 1801111E8: using guessed type __int64 qword_1801111E8[];
//----- (00000001800B2E74) ----------------------------------------------------
signed __int64 sub_1800B2E74()
{
int v0; // w8
signed __int64 result; // x0
__int64 v2; // x1
__int64 v3; // x2
__int64 v4; // x3
__int64 v5; // x4
__int64 v6; // x5
__int64 v7; // x6
__int64 v8; // x7
unsigned __int8 v9; // [xsp+117h] [xbp-9h]
__int64 v10; // [xsp+118h] [xbp-8h]
v10 = 5139240511851214385LL;
v0 = sub_1800BC278(0xBu, &v9);
result = 0LL;
if ( !v0 && v9 == 160 )
{
sub_1800BC320(0xBu, 0);
sub_1800EF260((__int64)"%llx:%d\n", v2, v3, v4, v5, v6, v7, v8, 8406910280902908813LL);
result = 1LL;
}
if ( 5139240511851214385LL != v10 )
sub_1800D4A5C();
return result;
}
//----- (00000001800B3520) ----------------------------------------------------
void __fastcall sub_1800B3520(__int64 a1)
{
__int64 v1; // x19
__int64 v2; // x0
__int64 v3; // x1
__int64 v4; // x2
__int64 v5; // x3
__int64 v6; // x4
__int64 v7; // x5
__int64 v8; // x6
__int64 v9; // x7
v1 = sub_1800D5F1C(a1);
while ( !sub_1800D5F30(MEMORY[0x180117D18], 0x35A4E900uLL) )
{
v2 = sub_1800D9AA4();
if ( (_DWORD)v2 )
v1 = sub_1800D5F1C(v2);
if ( sub_1800D5F30(v1, 0x1C9C380uLL) )
break;
sub_1800D5B44(1000000LL);
}
sub_1800EF260((__int64)"%llx:%d\n", v3, v4, v5, v6, v7, v8, v9, 8406910280902908813LL);
sub_1800C6030();
}
//----- (00000001800B35B0) ----------------------------------------------------
void *__fastcall sub_1800B35B0(_BYTE **a1, void *a2)
{
_BYTE **v2; // x19
unsigned __int8 *v3; // x20
BOOL v4; // w22
__int64 v5; // x0
int v6; // w21
void *result; // x0
__int64 v8; // x1
__int64 v9; // x2
__int64 v10; // x3
__int64 v11; // x4
__int64 v12; // x5
__int64 v13; // x6
__int64 v14; // x7
int v15; // w22
__int64 v16; // x0
unsigned __int64 v17; // x21
unsigned __int64 v18; // x22
__int64 v19; // x0
__int64 v20; // x0
__int64 v21; // x1
__int64 v22; // x2
__int64 v23; // x3
__int64 v24; // x4
__int64 v25; // x5
__int64 v26; // x6
__int64 v27; // x7
bool v28; // zf
_BYTE *v29; // x1
__int64 v30; // x2
__int64 v31; // x3
__int64 v32; // x4
__int64 v33; // x5
__int64 v34; // x6
__int64 v35; // x7
__int64 (*v36)(void); // x0
__int64 v37; // [xsp+0h] [xbp-40h]
void *v38; // [xsp+18h] [xbp-28h]
v38 = a2;
v2 = a1;
v3 = (unsigned __int8 *)sub_1800ECB70("boot-command");
v4 = sub_1800ECBB8("upgrade-retry", 0LL);
v5 = sub_1800ECBB8("auto-boot", 0LL);
v6 = v5;
if ( v4 )
{
if ( (_DWORD)v5 )
{
v5 = sub_1800D9FD0();
if ( v3 )
{
if ( (_DWORD)v5 )
{
v5 = sub_1800F0770(v3, "upgrade");
if ( !(_DWORD)v5 )
v5 = sub_1800ECE44("auto-boot", (__int64)"false", 0);
}
}
}
}
qword_1801158C8[40] = sub_1800D5F1C(v5);
sub_1800D9918();
result = sub_1800ECB8C("bootdelay", (void *)1);
v15 = (signed int)result;
if ( v6 )
{
v16 = sub_1800EF260(
(__int64)"Delaying boot for %d seconds. Hit enter to break into the command prompt...\n",
v8,
v9,
v10,
v11,
v12,
v13,
v14,
(__int64)result);
v17 = sub_1800D5F1C(v16);
v18 = (unsigned int)(1000000 * v15);
while ( 1 )
{
v20 = sub_1800D4728();
if ( (_DWORD)v20 == 13 )
v28 = 1;
else
v28 = (_DWORD)v20 == 10;
if ( v28 )
return (void *)sub_1800EF260(
(__int64)"aborting autoboot due to user intervention.\n",
v21,
v22,
v23,
v24,
v25,
v26,
v27,
v37);
v19 = sub_1800D5F1C(v20);
if ( v19 - v17 > v18 )
break;
sub_1800D5B44(10000LL);
}
qword_1801158C8[41] = sub_1800D5F1C(v19);
while ( v3 )
{
v29 = *v2;
if ( !*v2 )
break;
v2 += 2;
if ( !(unsigned int)sub_1800F0770(v3, v29) )
{
sub_1800D9918();
v36 = (__int64 (*)(void))*(v2 - 1);
return (void *)v36();
}
}
if ( v3 )
sub_1800EF260((__int64)"%llx:%d\n", (__int64)v29, v30, v31, v32, v33, v34, v35, 8406910280902908813LL);
result = v38;
if ( v38 )
{
sub_1800EF260((__int64)"%llx:%d\n", (__int64)v29, v30, v31, v32, v33, v34, v35, 8406910280902908813LL);
v36 = (__int64 (*)(void))v38;
return (void *)v36();
}
}
return result;
}
// 180114CE8: using guessed type __int64[105];
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B376C) ----------------------------------------------------
signed __int64 sub_1800B376C()
{
__int16 *v0; // x1
int v1; // w0
sub_1800F598C(65538LL);
sub_1800F5CF0("boot-breadcrumbs");
sub_1800C59D0();
sub_1800BC3A0(1);
sub_1800D3B2C(0);
if ( v1 != 4 )
return 0xFFFFFFFFLL;
sub_1800F1CE4(v0[24], v0[44], v0[64]);
sub_1800F2544();
return 0LL;
}
//----- (00000001800B3A28) ----------------------------------------------------
__int64 __fastcall sub_1800B3A28(__int64 a1, __int64 a2)
{
__int64 v2; // x20
unsigned __int8 *v3; // x19
v2 = a2;
v3 = (unsigned __int8 *)a1;
if ( a1 && (unsigned __int64)sub_1800F08E8(a1) >= 4 )
v2 = ((*v3 << 24) & 0xFF00FFFF | (v3[1] << 16)) & 0xFFFF00FF | (v3[2] << 8) | v3[3];
return v2;
}
//----- (00000001800B3A80) ----------------------------------------------------
signed __int64 sub_1800B3A80()
{
unsigned int v0; // w0
__int64 v1; // x3
__int64 v2; // x4
__int64 v3; // x5
__int64 v4; // x6
__int64 v5; // x7
__int64 v6; // x3
__int64 v7; // x4
__int64 v8; // x5
__int64 v9; // x6
__int64 v10; // x7
__int64 v11; // x3
__int64 v12; // x4
__int64 v13; // x5
__int64 v14; // x6
__int64 v15; // x7
signed __int64 result; // x0
__int64 v17; // [xsp+0h] [xbp-20h]
__int64 v18; // [xsp+8h] [xbp-18h]
v18 = 5139240511851214385LL;
sub_1800ECE44("boot-partition", (__int64)"0", 0);
sub_1800ECE44("boot-path", (__int64)"/System/Library/Caches/com.apple.kernelcaches/kernelcache", 0);
sub_1800ECE44("dt-path", (__int64)"/usr/standalone/firmware/devicetree.img4", 0);
sub_1800ECE44("build-style", (__int64)"RELEASE", 0);
sub_1800ECE44("build-version", (__int64)"iBoot-4076.1.43", 0);
sub_1800F0E34(0x2002800u, 393216, &v17);
sub_1800ECE44("config_board", v17, 0);
v0 = sub_1800D60D8();
sub_1800ED05C("board-rev", v0, 0, v1, v2, v3, v4, v5);
sub_1800ED05C("loadaddr", 0x800000000LL, 0, v6, v7, v8, v9, v10);
sub_1800ED05C("ramdisk-size", 0x20000000LL, 0, v11, v12, v13, v14, v15);
sub_1800ECE44("boot-command", (__int64)"fsboot", 0);
sub_1800ECE44("bootdelay", (__int64)"0", 0);
sub_1800ECE44("auto-boot", (__int64)"true", 0);
sub_1800ECE44("idle-off", (__int64)"true", 0);
if ( sub_1800E0D14() )
sub_1800ECE44("idle-off", (__int64)"false", 0);
result = sub_1800C605C();
if ( 5139240511851214385LL != v18 )
sub_1800D4A5C();
return result;
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800B3D44) ----------------------------------------------------
signed __int64 sub_1800B3D44()
{
__int64 i; // x0
__int64 v1; // x1
__int64 v2; // x2
__int64 v3; // x3
__int64 v4; // x4
__int64 v5; // x5
__int64 v6; // x6
__int64 v7; // x7
__int64 v8; // x0
signed __int64 result; // x0
__int64 v10; // x1
__int64 v11; // x2
__int64 v12; // x3
__int64 v13; // x4
__int64 v14; // x5
__int64 v15; // x6
__int64 v16; // x7
for ( i = sub_1800E9DEC(); ; i = sub_1800E9DF8(i) )
{
if ( !i )
{
sub_1800EF260((__int64)"%llx:%d\n", v1, v2, v3, v4, v5, v6, v7, -9045921792801257407LL);
v8 = 1074069505LL;
goto LABEL_8;
}
if ( *(_BYTE *)(i + 8) & 2 )
break;
}
result = sub_1800B27D8((_BYTE *)(i + 80), 1LL);
if ( !(_DWORD)result )
return result;
sub_1800EF260((__int64)"%llx:%d\n", v10, v11, v12, v13, v14, v15, v16, -9045921792801257407LL);
v8 = 1074069506LL;
LABEL_8:
sub_1800F598C(v8);
return 0xFFFFFFFFLL;
}
//----- (00000001800B3DE4) ----------------------------------------------------
void __fastcall sub_1800B3DE4(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x19
__int64 v9; // x20
__int64 v10; // x0
__int64 v11; // x1
__int64 v12; // x2
__int64 v13; // x3
__int64 v14; // x4
__int64 v15; // x5
__int64 v16; // x6
__int64 v17; // x7
v8 = a2;
v9 = a1;
sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, -9045921792801257407LL);
sub_1800ECE44("ota-result", v9, 1);
v10 = sub_1800ECE44("ota-failure-reason", v8, 1);
sub_1800F1304(v10, v11, v12, v13, v14, v15, v16, v17);
sub_1800F5CF0("ota-breadcrumbs");
}
//----- (00000001800B3E64) ----------------------------------------------------
__int64 sub_1800B3E64()
{
__int64 v0; // x0
__int64 v1; // x1
__int64 v2; // x2
__int64 v3; // x3
__int64 v4; // x4
__int64 v5; // x5
__int64 v6; // x6
__int64 v7; // x7
__int64 v8; // x1
__int64 v9; // x2
__int64 v10; // x3
__int64 v11; // x4
__int64 v12; // x5
__int64 v13; // x6
__int64 v14; // x7
char v15; // w0
__int64 v16; // x1
__int64 v17; // x2
__int64 v18; // x3
__int64 v19; // x4
__int64 v20; // x5
__int64 v21; // x6
__int64 v22; // x7
__int64 v23; // x1
__int64 v24; // x2
__int64 v25; // x3
__int64 v26; // x4
__int64 v27; // x5
__int64 v28; // x6
__int64 v29; // x7
__int64 v30; // x1
__int64 v31; // x2
__int64 v32; // x3
__int64 v33; // x4
__int64 v34; // x5
__int64 v35; // x6
__int64 v36; // x7
__int64 v37; // x1
__int64 v38; // x2
__int64 v39; // x3
__int64 v40; // x4
__int64 v41; // x5
__int64 v42; // x6
__int64 v43; // x7
const char *v44; // x19
__int64 v45; // x2
__int64 v46; // x3
__int64 v47; // x4
__int64 v48; // x5
__int64 v49; // x6
__int64 v50; // x7
__int64 v51; // x1
__int64 v52; // x2
__int64 v53; // x3
__int64 v54; // x4
__int64 v55; // x5
__int64 v56; // x6
__int64 v57; // x7
unsigned int v58; // w0
unsigned __int64 v59; // x1
__int64 v60; // x2
__int64 v62; // [xsp+10h] [xbp-20h]
char v63; // [xsp+18h] [xbp-18h]
sub_1800ECFB0("boot-command");
v0 = sub_1800ECFB0("upgrade-retry");
sub_1800F1304(v0, v1, v2, v3, v4, v5, v6, v7);
if ( (unsigned int)sub_1800B3D44() )
{
sub_1800EF260((__int64)"%llx:%d\n", v8, v9, v10, v11, v12, v13, v14, -9045921792801257407LL);
v44 = "failed to mount upgrade partition";
}
else
{
v15 = sub_1800F36E0();
sub_1800F36C4(v15);
sub_1800F1D70();
sub_1800F23D0("/boot/applelogo", 1819240303);
sub_1800F2544();
if ( (unsigned int)sub_1800F68E8(1LL) )
{
sub_1800EF260((__int64)"%llx:%d\n", v16, v17, v18, v19, v20, v21, v22, -9045921792801257407LL);
v44 = "failed to finalize memmap";
}
else if ( (unsigned int)sub_1800EC82C("/boot/devicetree") )
{
sub_1800EF260((__int64)"%llx:%d\n", v23, v24, v25, v26, v27, v28, v29, -9045921792801257407LL);
v44 = "failed to load devicetree";
}
else if ( (unsigned int)sub_1800F4FFC("/boot/ramdisk") )
{
sub_1800EF260((__int64)"%llx:%d\n", v30, v31, v32, v33, v34, v35, v36, -9045921792801257407LL);
v44 = "failed to load ramdisk";
}
else if ( (unsigned int)((__int64 (__fastcall *)(const char *, signed __int64, char *, __int64 *))loc_1800C3DEC)(
"/boot/kernelcache",
1919644270LL,
&v63,
&v62) )
{
sub_1800EF260((__int64)"%llx:%d\n", v37, v38, v39, v40, v41, v42, v43, -9045921792801257407LL);
v44 = "failed to load kernelcache";
}
else if ( (unsigned int)sub_1800B2360(*(__int64 *)&v63, v62) )
{
v44 = "failed to boot kernelcache";
}
else
{
v44 = "unknown";
}
}
sub_1800ED6D8("2");
sub_1800B3DE4((__int64)"failed to execute upgrade command from new iBEC", (__int64)v44, v45, v46, v47, v48, v49, v50);
sub_1800EF260((__int64)"%llx:%d\n", v51, v52, v53, v54, v55, v56, v57, -9045921792801257407LL);
sub_1800D3B2C(0);
return sub_1800B4014(v58, v59, v60);
}
// 1800F68E8: using guessed type __int64 __fastcall sub_1800F68E8(_QWORD);
//----- (00000001800B4014) ----------------------------------------------------
__int64 __fastcall sub_1800B4014(unsigned int a1, unsigned __int64 a2, __int64 a3)
{
__int64 v3; // x19
unsigned __int64 v4; // x20
__int64 *v5; // x22
__int64 v6; // x23
__int64 *v7; // x25
int v8; // w9
_BYTE *v9; // x25
int v10; // t1
__int64 *v11; // x8
__int64 *v12; // x8
__int64 *v13; // x8
__int64 *v14; // x24
_BYTE *v15; // x24
int v16; // t1
__int64 v17; // x26
__int64 *v18; // x27
__int64 v19; // x0
__int64 v20; // x0
unsigned __int64 v21; // x13
__int64 *v22; // x8
__int64 *v23; // x10
unsigned int *v24; // x10
unsigned int v25; // t1
__int64 *v26; // x11
unsigned int *v27; // x11
unsigned int v28; // t1
__int64 *v29; // x9
unsigned int *v30; // x9
unsigned int v31; // t1
__int64 *v32; // x12
unsigned int *v33; // x12
unsigned int v34; // t1
__int64 *v35; // x14
unsigned int *v36; // x14
unsigned int v37; // t1
unsigned __int64 v38; // x15
__int64 *v39; // x13
unsigned int *v40; // x13
unsigned int v41; // t1
_QWORD *v42; // x8
__int64 v43; // x15
__int64 v44; // t1
unsigned int *v45; // x19
int v46; // w20
unsigned __int64 v47; // x0
__int64 v48; // x0
__int64 *v49; // x8
__int64 v50; // x19
__int64 *v51; // x8
unsigned int *v52; // x8
unsigned int v53; // t1
__int64 v54; // x10
signed __int64 v56; // x9
v3 = a3;
v4 = a2;
v5 = &qword_180114070[26 * a1];
if ( *v5 == -1 )
{
v56 = 45LL;
goto LABEL_31;
}
if ( !*v5 )
{
v56 = 44LL;
goto LABEL_31;
}
v6 = a1;
v7 = &qword_180114070[26 * a1];
v10 = *((_DWORD *)v7 + 37);
v9 = (char *)v7 + 148;
v8 = v10;
if ( v10 == 64 )
goto LABEL_8;
if ( v8 != 16 )
{
if ( v8 != 32 )
{
if ( v8 == 15 )
{
v11 = &qword_180114070[26 * a1];
*(__int64 *)((char *)v11 + 156) = 68719476744LL;
*(__int64 *)((char *)v11 + 164) = 137438953496LL;
*(__int64 *)((char *)v11 + 172) = 206158430248LL;
*(__int64 *)((char *)v11 + 180) = 292057776184LL;
*(__int64 *)((char *)v11 + 188) = 211312390965260LL;
*(__int64 *)((char *)v11 + 196) = 211123412451384LL;
*((_DWORD *)v11 + 51) = 49188;
goto LABEL_10;
}
v56 = 125LL;
LABEL_31:
sub_1800D489C("%llx:%d", &byte_180101040, -7149399145195136589LL, v56);
}
LABEL_8:
v12 = &qword_180114070[26 * a1];
v12[24] = 0LL;
v12[25] = 0LL;
v12[23] = 68LL;
goto LABEL_10;
}
v13 = &qword_180114070[26 * a1];
*(__int64 *)((char *)v13 + 156) = 68719476744LL;
*(__int64 *)((char *)v13 + 164) = 137438953496LL;
*(__int64 *)((char *)v13 + 172) = 206158430248LL;
*(__int64 *)((char *)v13 + 180) = 292057776184LL;
*(__int64 *)((char *)v13 + 196) = 0LL;
*((_DWORD *)v13 + 51) = 0;
*(__int64 *)((char *)v13 + 188) = 0LL;
LABEL_10:
v14 = &qword_180114070[26 * a1];
v16 = *((unsigned __int8 *)v14 + 153);
v15 = (char *)v14 + 153;
if ( !v16 )
{
v17 = 0LL;
v18 = &qword_180114070[26 * a1 + 3];
while ( (unsigned int)v17 <= 1 )
{
v19 = *((unsigned int *)v18 + v17);
if ( (_DWORD)v19 == -1 )
break;
sub_1800D39CC(v19, 1);
++v17;
}
v20 = sub_1800F6434(v4);
if ( v20 == 0xFFFFFFFFLL )
v21 = v4;
else
v21 = v20;
if ( *v9 & 0x60 )
{
*(_QWORD *)(qword_180114070[26 * v6 + 2] + 327680) = v21;
}
else
{
v22 = &qword_180114070[26 * v6];
v23 = &qword_180114070[26 * v6];
v25 = *((_DWORD *)v23 + 41);
v24 = (unsigned int *)((char *)v23 + 164);
*(_DWORD *)(v25 + *v5) = 0;
v26 = &qword_180114070[26 * v6];
v28 = *((_DWORD *)v26 + 42);
v27 = (unsigned int *)(v26 + 21);
*(_DWORD *)(v28 + *v5) = 0;
v29 = &qword_180114070[26 * v6];
v31 = *((_DWORD *)v29 + 43);
v30 = (unsigned int *)((char *)v29 + 172);
*(_DWORD *)(v31 + *v5) = v3;
v32 = &qword_180114070[26 * v6];
v34 = *((_DWORD *)v32 + 44);
v33 = (unsigned int *)(v32 + 22);
*(_DWORD *)(v34 + *v5) = HIDWORD(v3);
v35 = &qword_180114070[26 * v6];
v37 = *((_DWORD *)v35 + 39);
v36 = (unsigned int *)((char *)v35 + 156);
*(_DWORD *)(v37 + *v5) = v21;
v38 = v21 >> 32;
v39 = &qword_180114070[26 * v6];
v41 = *((_DWORD *)v39 + 40);
v40 = (unsigned int *)(v39 + 20);
*(_DWORD *)(v41 + *v5) = v38;
*(_DWORD *)(*((unsigned int *)v22 + 45) + *v5) = 1;
v44 = v22[1];
v42 = v22 + 1;
v43 = v44;
if ( v44 )
{
*(_DWORD *)(*v36 + v43) = *(_DWORD *)(*v36 + *v5);
*(_DWORD *)(*v40 + *v42) = *(_DWORD *)(*v40 + *v5);
*(_DWORD *)(*v24 + *v42) = *(_DWORD *)(*v24 + *v5);
*(_DWORD *)(*v27 + *v42) = *(_DWORD *)(*v27 + *v5);
*(_DWORD *)(*v30 + *v42) = *(_DWORD *)(*v30 + *v5);
*(_DWORD *)(*v33 + *v42) = *(_DWORD *)(*v33 + *v5);
}
}
if ( LOBYTE(qword_180114070[26 * v6 + 19]) )
{
v45 = (unsigned int *)&qword_180114070[26 * v6];
v46 = *(_DWORD *)(v45[47] + *v5);
v47 = sub_1800F612C();
*(_DWORD *)(v45[47] + *v5) = v46 & 0xFFFFFFFD;
v48 = sub_1800E1188(v47);
*(_DWORD *)(v45[48] + *v5) = v48;
*(_DWORD *)(v45[49] + *v5) = HIDWORD(v48);
*(_DWORD *)(v45[47] + *v5) = v46 | 2;
sub_1800F61B4();
}
}
v49 = &qword_180114070[26 * v6];
v50 = (__int64)(v49 + 4);
sub_1800D6D3C((__int64)(v49 + 4), *((_DWORD *)v49 + 36), *v5);
if ( !*v15 )
{
v51 = &qword_180114070[26 * v6];
v53 = *((_DWORD *)v51 + 46);
v52 = (unsigned int *)(v51 + 23);
*(_DWORD *)(v53 + *v5) = 16;
v54 = *((_QWORD *)v52 - 22);
if ( v54 )
*(_DWORD *)(*v52 + v54) = 16;
}
sub_1800D6E70(v50, 1);
return 0LL;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
// 180114070: using guessed type __int64 qword_180114070[26];
//----- (00000001800B43E0) ----------------------------------------------------
__int64 __fastcall sub_1800B43E0(unsigned int a1)
{
return LODWORD(qword_180114070[26 * a1 + 18]);
}
// 180114070: using guessed type __int64 qword_180114070[26];
//----- (00000001800B43F8) ----------------------------------------------------
signed __int64 __fastcall sub_1800B43F8(unsigned int a1, __int64 *a2, unsigned int a3)
{
__int64 v3; // x29
__int64 v4; // x30
__int64 *v5; // x8
unsigned int v6; // w22
__int64 *v7; // x21
unsigned int *v8; // x20
_BYTE *v9; // x19
__int64 v10; // x23
int v11; // w25
signed __int64 result; // x0
__int64 v13; // [xsp+18h] [xbp-68h]
__int64 v14; // [xsp+20h] [xbp-60h]
__int64 v15; // [xsp+28h] [xbp-58h]
__int64 v16; // [xsp+70h] [xbp-10h]
__int64 v17; // [xsp+78h] [xbp-8h]
v5 = &qword_180114070[26 * a1];
v16 = v3;
v17 = v4;
v6 = a3;
v7 = a2;
v8 = (unsigned int *)(v5 + 4);
v15 = 5139240511851214385LL;
v9 = v5 + 7;
v10 = a3;
while ( 1 )
{
sub_1800F612C();
v11 = *(_DWORD *)(v8[19] + *(_QWORD *)v8);
if ( !(v11 & 0x20000) )
*v7 = *(_QWORD *)(*(_QWORD *)v8 + 16440LL);
sub_1800F61B4();
if ( v11 & 0xC0000 )
sub_1800D489C("%llx:%d", &byte_180101040, 7040885290982498046LL, 78LL);
if ( !(v11 & 0x20000) )
{
v13 = *v7;
v14 = 0LL;
sub_1800D6E90((__int64)v8, &v13, 0);
sub_1800D5C54(v9);
result = 0LL;
goto LABEL_13;
}
if ( !v6 )
break;
*(_DWORD *)(v8[21] + *(_QWORD *)v8) = 4096;
if ( v6 == -1 )
{
sub_1800D5D18(v9);
}
else if ( !sub_1800D5D78((__int64)v9, v10) )
{
result = 4294967294LL;
goto LABEL_13;
}
}
result = 0xFFFFFFFFLL;
LABEL_13:
if ( 5139240511851214385LL != v15 )
sub_1800D4A5C();
return result;
}
// 180101040: using guessed type char byte_180101040;
// 180114070: using guessed type __int64 qword_180114070[26];
//----- (00000001800B4410) ----------------------------------------------------
signed __int64 __fastcall sub_1800B4410(unsigned int a1, __int64 a2, unsigned int a3)
{
__int64 *v3; // x8
unsigned int v4; // w22
__int64 v5; // x20
__int64 v6; // x21
_BYTE *v7; // x19
__int64 v8; // x23
__int64 v9; // x8
int v10; // w25
__int64 v11; // x9
v3 = &qword_180114070[26 * a1];
v4 = a3;
v5 = a2;
v6 = (__int64)(v3 + 4);
v7 = v3 + 7;
v8 = a3;
while ( 1 )
{
sub_1800F612C();
v9 = *(_QWORD *)v6;
v10 = *(_DWORD *)(*(unsigned int *)(v6 + 76) + *(_QWORD *)v6);
if ( !(v10 & 0x20000) )
{
v11 = *(_QWORD *)(v9 + 34872);
*(_QWORD *)v5 = *(_QWORD *)(v9 + 34864);
*(_QWORD *)(v5 + 8) = v11;
*(_DWORD *)(v5 + 12) = 0;
}
sub_1800F61B4();
if ( v10 & 0xC0000 )
sub_1800D489C("%llx:%d", &byte_180101040, -5734810906555898703LL, 81LL);
if ( !(v10 & 0x20000) )
{
sub_1800D6E90(v6, (_QWORD *)v5, 0);
sub_1800D5C54(v7);
return 0LL;
}
if ( !v4 )
break;
((void (__fastcall *)(_QWORD))loc_1800B562C)(*(unsigned int *)(v6 + 16));
if ( v4 == -1 )
{
sub_1800D5D18(v7);
}
else if ( !sub_1800D5D78((__int64)v7, v8) )
{
return 4294967294LL;
}
}
return 0xFFFFFFFFLL;
}
// 180101040: using guessed type char byte_180101040;
// 180114070: using guessed type __int64 qword_180114070[26];
//----- (00000001800B4428) ----------------------------------------------------
signed __int64 __fastcall sub_1800B4428(unsigned int a1, _QWORD *a2, unsigned int a3)
{
__int64 v3; // x29
__int64 v4; // x30
__int64 *v5; // x8
unsigned int v6; // w22
_QWORD *v7; // x21
unsigned int *v8; // x20
_BYTE *v9; // x19
__int64 v10; // x23
int v11; // w25
signed __int64 result; // x0
__int64 v13; // [xsp+18h] [xbp-68h]
__int64 v14; // [xsp+20h] [xbp-60h]
__int64 v15; // [xsp+28h] [xbp-58h]
__int64 v16; // [xsp+70h] [xbp-10h]
__int64 v17; // [xsp+78h] [xbp-8h]
v5 = &qword_180114070[26 * a1];
v16 = v3;
v17 = v4;
v6 = a3;
v7 = a2;
v8 = (unsigned int *)(v5 + 4);
v15 = 5139240511851214385LL;
v9 = v5 + 10;
v10 = a3;
while ( 1 )
{
sub_1800F612C();
v11 = *(_DWORD *)(v8[18] + *(_QWORD *)v8);
if ( !(v11 & 0x10000) )
*(_QWORD *)(*(_QWORD *)v8 + 16400LL) = *v7;
sub_1800F61B4();
if ( v11 & 0xC0000 )
sub_1800D489C("%llx:%d", &byte_180101040, 7040885290982498046LL, 147LL);
if ( !(v11 & 0x10000) )
{
v13 = *v7;
v14 = 0LL;
sub_1800D6E90((__int64)v8, &v13, 1);
sub_1800D5C54(v9);
result = 0LL;
goto LABEL_13;
}
if ( !v6 )
break;
*(_DWORD *)(v8[21] + *(_QWORD *)v8) = 1;
if ( v6 == -1 )
{
sub_1800D5D18(v9);
}
else if ( !sub_1800D5D78((__int64)v9, v10) )
{
result = 4294967294LL;
goto LABEL_13;
}
}
result = 0xFFFFFFFFLL;
LABEL_13:
if ( 5139240511851214385LL != v15 )
sub_1800D4A5C();
return result;
}
// 180101040: using guessed type char byte_180101040;
// 180114070: using guessed type __int64 qword_180114070[26];
//----- (00000001800B4440) ----------------------------------------------------
signed __int64 __fastcall sub_1800B4440(unsigned int a1, __int64 a2, unsigned int a3)
{
__int64 *v3; // x8
unsigned int v4; // w22
__int64 v5; // x20
__int64 v6; // x21
_BYTE *v7; // x19
__int64 v8; // x23
int v9; // w25
_QWORD *v10; // x8
__int64 v11; // x10
v3 = &qword_180114070[26 * a1];
v4 = a3;
v5 = a2;
v6 = (__int64)(v3 + 4);
v7 = v3 + 10;
v8 = a3;
while ( 1 )
{
sub_1800F612C();
v9 = *(_DWORD *)(*(unsigned int *)(v6 + 72) + *(_QWORD *)v6);
if ( !(v9 & 0x10000) )
{
v10 = (_QWORD *)(*(_QWORD *)v6 + 34816LL);
v11 = *(unsigned int *)(v5 + 8);
*v10 = *(_QWORD *)v5;
v10[1] = v11;
}
sub_1800F61B4();
if ( v9 & 0xC0000 )
sub_1800D489C("%llx:%d", &byte_180101040, -5734810906555898703LL, 147LL);
if ( !(v9 & 0x10000) )
{
sub_1800D6E90(v6, (_QWORD *)v5, 1);
sub_1800D5C54(v7);
return 0LL;
}
if ( !v4 )
break;
((void (__fastcall *)(_QWORD))loc_1800B562C)(*(unsigned int *)(v6 + 12));
if ( v4 == -1 )
{
sub_1800D5D18(v7);
}
else if ( !sub_1800D5D78((__int64)v7, v8) )
{
return 4294967294LL;
}
}
return 0xFFFFFFFFLL;
}
// 180101040: using guessed type char byte_180101040;
// 180114070: using guessed type __int64 qword_180114070[26];
//----- (00000001800B4458) ----------------------------------------------------
__int64 __fastcall sub_1800B4458(unsigned int a1)
{
unsigned int v1; // w19
__int64 *v2; // x21
__int64 v3; // x23
__int64 *v4; // x20
__int64 *v5; // x8
unsigned int *v6; // x8
unsigned int v7; // t1
__int64 v8; // x9
__int64 v9; // x19
unsigned int *v10; // x8
signed __int64 v11; // x20
__int64 v12; // x0
signed __int64 v14; // x9
v1 = a1;
v2 = &qword_180114070[26 * a1];
if ( *v2 == -1 )
{
v14 = 317LL;
goto LABEL_13;
}
if ( !*v2 )
{
v14 = 316LL;
LABEL_13:
sub_1800D489C("%llx:%d", &byte_180101040, -7149399145195136589LL, v14);
}
v3 = a1;
sub_1800F612C();
v4 = &qword_180114070[26 * v1 + 4];
sub_1800D6E70((__int64)v4, 0);
sub_1800D6E3C((__int64)v4);
if ( v1 != 2 )
{
v5 = &qword_180114070[26 * v1];
v7 = *((_DWORD *)v5 + 46);
v6 = (unsigned int *)(v5 + 23);
*(_DWORD *)(v7 + *v2) &= 0xFFFFFFEF;
v8 = *((_QWORD *)v6 - 22);
if ( v8 )
*(_DWORD *)(*v6 + v8) &= 0xFFFFFFEF;
v9 = 0LL;
v10 = (unsigned int *)&qword_180114070[26 * v3];
*(_DWORD *)(v10[41] + *v2) = 0;
*(_DWORD *)(v10[42] + *v2) = 0;
*(_DWORD *)(v10[43] + *v2) = 0;
*(_DWORD *)(v10[44] + *v2) = 0;
*(_DWORD *)(v10[39] + *v2) = 0;
*(_DWORD *)(v10[40] + *v2) = 0;
v11 = (signed __int64)(v10 + 6);
while ( (unsigned int)v9 <= 1 )
{
v12 = *(unsigned int *)(v11 + 4 * v9);
if ( (_DWORD)v12 == -1 )
break;
sub_1800D39CC(v12, 0);
++v9;
}
}
sub_1800F61B4();
return 0LL;
}
// 180101040: using guessed type char byte_180101040;
// 180114070: using guessed type __int64 qword_180114070[26];
//----- (00000001800B45C8) ----------------------------------------------------
__int64 __fastcall sub_1800B45C8(int a1)
{
__int64 result; // x0
if ( a1 )
{
sub_1800D39CC(76LL, 1);
result = sub_1800D39CC(77LL, 1);
}
else
{
sub_1800D39CC(77LL, 0);
result = sub_1800D39CC(76LL, 0);
}
return result;
}
//----- (00000001800B494C) ----------------------------------------------------
signed __int64 sub_1800B494C()
{
signed __int64 result; // x0
MEMORY[0x206201028] |= 2u;
sub_1800B5688(0x9Au, (__int64)&loc_1800B498C, 0LL);
result = 154LL;
BYTE1(qword_1801158C8[1635]) = 0;
if ( !BYTE1(qword_1801158C8[1635]) )
LODWORD(qword_1801158C8[297786649]) = 0x4000000;
return result;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B5688) ----------------------------------------------------
__int64 __fastcall sub_1800B5688(unsigned int a1, __int64 a2, __int64 a3)
{
__int64 v3; // x20
__int64 v4; // x21
unsigned int v5; // w19
_QWORD *v6; // x8
v3 = a3;
v4 = a2;
v5 = a1;
sub_1800F612C();
v6 = (_QWORD *)(24LL * v5 + 6443597152LL);
*v6 = v4;
v6[1] = v3;
if ( v5 <= 0x13F )
*(_DWORD *)(4 * v5 + 0x20E103000LL) = 1;
sub_1800F61B4();
return 0LL;
}
//----- (00000001800B56F4) ----------------------------------------------------
__int64 sub_1800B56F4()
{
int v0; // w8
__int64 v1; // x19
void (__fastcall *v2)(_QWORD); // x8
__int64 result; // x0
signed __int64 v4; // x8
v0 = MEMORY[0x20E102004];
if ( MEMORY[0x20E102004] )
{
while ( v0 )
{
if ( (v0 & 0x70000) != 0x10000 )
{
if ( (v0 & 0x70000) == 0x40000 )
v4 = 206LL;
else
v4 = 208LL;
sub_1800D489C("%llx:%d", &byte_180101040, -3127783896048661350LL, v4);
}
v1 = v0 & 0x1FF;
v2 = *(void (__fastcall **)(_QWORD))(24 * v1 + 0x180117D60LL);
if ( v2 )
v2(*(_QWORD *)(24 * v1 + 0x180117D68LL));
result = ((__int64 (__fastcall *)(__int64))loc_1800B5644)(v1);
v0 = MEMORY[0x20E102004];
}
}
else
{
++LODWORD(qword_1801158C8[2140]);
}
return result;
}
// 180101040: using guessed type char byte_180101040;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B57D0) ----------------------------------------------------
void sub_1800B57D0()
{
MEMORY[0x2102B0014] = 1;
MEMORY[0x2102B001C] = 4;
MEMORY[0x2102B0010] = 0;
}
//----- (00000001800B5800) ----------------------------------------------------
void sub_1800B5800()
{
MEMORY[0x2102B0014] = -1414967296;
MEMORY[0x2102B0010] = 2147483648;
MEMORY[0x2102B001C] = 4;
}
//----- (00000001800B5830) ----------------------------------------------------
_DWORD *__fastcall sub_1800B5830(_DWORD *result, unsigned int a2, int a3)
{
__int64 v3; // x29
__int64 v4; // x30
_DWORD *v5; // x8
v5 = (_DWORD *)(a2 | 0x610000000LL);
if ( a3 == 4 )
{
*result = *v5;
}
else if ( a3 == 2 )
{
*(_WORD *)result = *(_WORD *)v5;
}
else
{
if ( a3 != 1 )
sub_1800D489C("%llx:%d", &byte_180101040, -9074553343644156873LL, 58LL, v3, v4);
*(_BYTE *)result = *(_BYTE *)v5;
}
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800B58B4) ----------------------------------------------------
_DWORD *__fastcall sub_1800B58B4(_DWORD *result, unsigned int a2, int a3)
{
__int64 v3; // x29
__int64 v4; // x30
_DWORD *v5; // x8
v5 = (_DWORD *)(a2 | 0x610000000LL);
if ( a3 == 4 )
{
*v5 = *result;
}
else if ( a3 == 2 )
{
*(_WORD *)v5 = *(_WORD *)result;
}
else
{
if ( a3 != 1 )
sub_1800D489C("%llx:%d", &byte_180101040, -9074553343644156873LL, 102LL, v3, v4);
*(_BYTE *)v5 = *(_BYTE *)result;
}
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800B5938) ----------------------------------------------------
__int64 __fastcall sub_1800B5938(unsigned int a1)
{
unsigned int v1; // w20
__int64 v2; // x0
__int64 v3; // x19
__int64 result; // x0
signed __int64 v5; // x8
v1 = a1;
v2 = sub_1800E3ABC(MEMORY[0x180119BB0], (unsigned __int8)a1, 0x64uLL);
v3 = v2;
if ( !v2 )
{
v5 = 132LL;
goto LABEL_6;
}
if ( (unsigned int)sub_1800E430C(v2) != 1 )
{
v5 = 137LL;
LABEL_6:
sub_1800D489C("%llx:%d", &byte_180101040, -9074553343644156873LL, v5);
}
sub_1800E4098(v3);
sub_1800E4354(v3, 1);
sub_1800E4314(v3, 1);
result = sub_1800E4198(v3, 1);
*(_QWORD *)(8LL * v1 + 0x180119BB8LL) = v3;
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800B5A04) ----------------------------------------------------
void sub_1800B5A04()
{
__int64 i; // x19
for ( i = 0LL; (_DWORD)i != 4; i = (unsigned int)(i + 1) )
sub_1800C800C(i);
}
//----- (00000001800B5A38) ----------------------------------------------------
__int64 sub_1800B5A38()
{
int v0; // w0
__int64 result; // x0
qword_1801158C8[42] = (__int64)qword_1801147F0;
v0 = sub_1800C8468(33285996544LL);
result = sub_1800E3A24((__int64)"host bridge", 0, v0, 0x2000000, 0LL, (__int64)sub_1800B5A98, (__int64)sub_1800B5B20);
qword_1801158C8[2141] = result;
return result;
}
// 1801147F0: using guessed type __int64 qword_1801147F0[5];
// 180114CE8: using guessed type __int64[105];
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B5A98) ----------------------------------------------------
_DWORD *__fastcall sub_1800B5A98(_BYTE *a1, _DWORD *a2, unsigned int a3, int a4)
{
int v4; // w19
unsigned int v5; // w21
_DWORD *v6; // x20
signed __int64 v7; // x8
v4 = a4;
v5 = a3;
v6 = a2;
if ( a1 )
{
if ( !*a1 )
{
v7 = 74LL;
goto LABEL_7;
}
}
else if ( !(unsigned int)sub_1800C81B0() )
{
v7 = 69LL;
LABEL_7:
sub_1800D489C("%llx:%d", &byte_180101040, -9074553343644156873LL, v7);
}
return sub_1800B5830(v6, v5, v4);
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800B5B20) ----------------------------------------------------
_DWORD *__fastcall sub_1800B5B20(_BYTE *a1, _DWORD *a2, unsigned int a3, int a4)
{
int v4; // w19
unsigned int v5; // w21
_DWORD *v6; // x20
signed __int64 v7; // x8
v4 = a4;
v5 = a3;
v6 = a2;
if ( a1 )
{
if ( !*a1 )
{
v7 = 114LL;
goto LABEL_7;
}
}
else if ( !(unsigned int)sub_1800C81B0() )
{
v7 = 111LL;
LABEL_7:
sub_1800D489C("%llx:%d", &byte_180101040, -9074553343644156873LL, v7);
}
return sub_1800B58B4(v6, v5, v4);
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800B5BA8) ----------------------------------------------------
__int64 __fastcall sub_1800B5BA8(unsigned int a1)
{
return *(_QWORD *)(8LL * a1 + 0x180119BB8LL);
}
//----- (00000001800B5BFC) ----------------------------------------------------
__int64 sub_1800B5BFC()
{
__int64 result; // x0
if ( !(qword_1801158C8[2146] & 1) )
{
sub_1800D39CC(67LL, 1);
sub_1800D39CC(68LL, 1);
sub_1800D39CC(72LL, 1);
MEMORY[0x20C90001C] = 264;
MEMORY[0x20C000038] = 926383043;
MEMORY[0x20C00003C] = 134148;
MEMORY[0x20C000030] |= 1u;
MEMORY[0x20C000030] &= 0xFFFFFFF3;
sub_1800D5F60(10LL);
MEMORY[0x20C000030] &= 0xFFFFFFFE;
result = sub_1800D5F60(1000LL);
LOBYTE(qword_1801158C8[2146]) = 1;
}
return result;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B5CC0) ----------------------------------------------------
void sub_1800B5CC0()
{
if ( LOBYTE(qword_1801158C8[2146]) == 1 )
MEMORY[0x20C000034] |= 2u;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B5CEC) ----------------------------------------------------
__int64 sub_1800B5CEC()
{
__int64 result; // x0
if ( LOBYTE(qword_1801158C8[2146]) == 1 )
{
MEMORY[0x20C000030] |= 1u;
MEMORY[0x20C000034] &= 0xFFFFFFFD;
sub_1800D5F60(10LL);
MEMORY[0x20C000030] &= 0xFFFFFFFE;
sub_1800D5F60(1000LL);
MEMORY[0x20C000030] |= 0xCu;
sub_1800D39CC(72LL, 0);
sub_1800D39CC(68LL, 0);
result = sub_1800D39CC(67LL, 0);
LOBYTE(qword_1801158C8[2146]) = 0;
}
return result;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B5D88) ----------------------------------------------------
__int64 sub_1800B5D88()
{
__int64 v0; // x19
if ( LOBYTE(qword_1801158C8[2146]) == 1 )
return (unsigned __int8)(MEMORY[0x20C000034] >> 8);
sub_1800D39CC(67LL, 1);
sub_1800D39CC(68LL, 1);
sub_1800D39CC(72LL, 1);
v0 = (unsigned __int8)(MEMORY[0x20C000034] >> 8);
if ( !(qword_1801158C8[2146] & 1) )
{
sub_1800D39CC(72LL, 0);
sub_1800D39CC(68LL, 0);
sub_1800D39CC(67LL, 0);
}
return v0;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B5E28) ----------------------------------------------------
__int64 sub_1800B5E28()
{
sub_1800D39CC(67LL, 1);
MEMORY[0x20C90001C] = 264;
MEMORY[0x20C90005C] = 264;
return sub_1800D39CC(67LL, 0);
}
//----- (00000001800B5E64) ----------------------------------------------------
__int64 __fastcall sub_1800B5E64(__int64 result)
{
__int64 v1; // x19
unsigned __int64 v2; // x20
unsigned __int64 *v3; // x22
v1 = 0LL;
v2 = result & 0xFFFFFFFFFFFFF800LL | 1;
while ( (unsigned int)v1 < 2 )
{
v3 = (unsigned __int64 *)qword_180104640[v1];
*v3 = v2;
result = sub_1800D9F80(result);
++v1;
if ( (*v3 & 0xFFFFFFFFFLL) != v2 )
sub_1800D489C("%llx:%d", &byte_180101040, -1266967503850429226LL, 96LL);
}
return result;
}
// 1800D9F80: using guessed type __int64 __fastcall sub_1800D9F80(_QWORD);
// 180101040: using guessed type char byte_180101040;
// 180104640: using guessed type __int64 qword_180104640[2];
//----- (00000001800B5EF4) ----------------------------------------------------
__int64 __fastcall sub_1800B5EF4(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x1
__int64 v9; // x2
__int64 v10; // x3
__int64 v11; // x4
__int64 v12; // x5
__int64 v13; // x6
__int64 v14; // x7
__int64 v15; // x1
__int64 v16; // x2
__int64 v17; // x3
__int64 v18; // x4
__int64 v19; // x5
__int64 v20; // x6
__int64 v21; // x7
__int64 v22; // x1
__int64 v23; // x2
__int64 v24; // x3
__int64 v25; // x4
__int64 v26; // x5
__int64 v27; // x6
__int64 v28; // x7
sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, -1266967503850429226LL);
sub_1800EF260((__int64)"%llx:%d\n", v8, v9, v10, v11, v12, v13, v14, -1266967503850429226LL);
sub_1800EF260((__int64)"%llx:%d\n", v15, v16, v17, v18, v19, v20, v21, -1266967503850429226LL);
return sub_1800EF260((__int64)"%llx:%d\n", v22, v23, v24, v25, v26, v27, v28, -1266967503850429226LL);
}
//----- (00000001800B5F70) ----------------------------------------------------
void sub_1800B5F70()
{
MEMORY[0x202F40008] = MEMORY[0x202F40008] & (unsigned __int128)0xFFFFFFFF00000000LL;
MEMORY[0x202F40018] = 0LL;
MEMORY[0x202F40008] |= 0x20000000000uLL;
}
//----- (00000001800B5FA0) ----------------------------------------------------
void sub_1800B5FA0()
{
MEMORY[0x202F40008] &= 0xFFFFFDFFFFFFFFFFLL;
}
//----- (00000001800B5FC0) ----------------------------------------------------
__int64 __fastcall sub_1800B5FC0(unsigned int a1)
{
__int64 v1; // x29
__int64 v2; // x30
if ( a1 >= 7 )
sub_1800D489C("%llx:%d", &byte_180101040, 5949927746061544008LL, 53LL, v1, v2);
return *((unsigned int *)qword_180104650 + (signed int)a1);
}
// 180101040: using guessed type char byte_180101040;
// 180104650: using guessed type __int64 qword_180104650[4];
//----- (00000001800B6010) ----------------------------------------------------
signed __int64 sub_1800B6010()
{
__int64 v0; // x29
__int64 v1; // x30
if ( !(qword_1801158C8[2147] & 1) )
sub_1800D489C("%llx:%d", &byte_180101040, 5949927746061544008LL, 64LL, v0, v1);
return 6443604964LL;
}
// 180101040: using guessed type char byte_180101040;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B6064) ----------------------------------------------------
__int64 sub_1800B6064()
{
if ( !(qword_1801158C8[2147] & 1) )
sub_1800D489C("%llx:%d", &byte_180101040, 5949927746061544008LL, 74LL);
return (unsigned int)sub_1800B5FC0(MEMORY[0x180119BF8]) << 8;
}
// 180101040: using guessed type char byte_180101040;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B60C8) ----------------------------------------------------
__int64 sub_1800B60C8()
{
signed __int64 v1; // x8
unsigned __int8 v2; // [xsp+17h] [xbp-19h]
__int64 v3; // [xsp+18h] [xbp-18h]
v3 = 5139240511851214385LL;
v2 = 0;
sub_1800B75EC(0, 1LL, 1, 5, (_BYTE *)0x180119BE4LL);
sub_1800B75EC(0, 1LL, 1, 6, (_BYTE *)0x180119BE8LL);
sub_1800B75EC(0, 1LL, 1, 7, (_BYTE *)0x180119BECLL);
sub_1800B75EC(0, 1LL, 1, 8, &v2);
if ( !MEMORY[0x180119BE4] || !v2 )
{
v1 = 94LL;
goto LABEL_8;
}
MEMORY[0x180119BF0] = v2 & 3;
MEMORY[0x180119BF4] = 0x20u >> (v2 >> 6) >> 3;
MEMORY[0x180119BF8] = ((unsigned int)v2 >> 2) & 0xF;
MEMORY[0x180119BE0] = 1;
sub_1800B5FC0(MEMORY[0x180119BF8]);
if ( (unsigned int)sub_1800B6064() - 128 >= 0x3F81 )
{
v1 = 113LL;
LABEL_8:
sub_1800D489C("%llx:%d", &byte_180101040, 5949927746061544008LL, v1);
}
if ( 5139240511851214385LL != v3 )
sub_1800D4A5C();
return 0LL;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800B6208) ----------------------------------------------------
// write access to const memory has been detected, the output may be wrong!
signed __int64 __fastcall sub_1800B6208(int a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
int v8; // w19
int v9; // w0
v8 = a1;
if ( MEMORY[0x180115A3C] & 0x80 )
sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, 5949927746061544008LL);
if ( v8 )
{
if ( v8 == 3 )
{
v9 = 4;
}
else
{
if ( v8 != 1 )
{
dword_180114568 = 10;
MEMORY[0x180115A3C] |= 0x20u;
sub_1800CC1BC(15LL);
sub_1800D489C("%llx:%d", &byte_180101040, 5949927746061544008LL, 130LL);
}
v9 = 6;
}
}
else
{
v9 = 3;
}
return sub_1800D368C(v9);
}
// 1800B62C0: write access to const memory at 180114568 has been detected
// 180101040: using guessed type char byte_180101040;
// 180114568: using guessed type int dword_180114568;
//----- (00000001800B62F8) ----------------------------------------------------
__int64 __fastcall sub_1800B62F8(__int64 a1)
{
int v1; // w20
__int64 v2; // x0
int v3; // w19
int v4; // w0
__int64 v5; // x0
__int64 v6; // x1
__int64 v7; // x2
__int64 v8; // x3
__int64 v9; // x4
__int64 v10; // x5
__int64 v11; // x6
__int64 v12; // x7
_DWORD *v13; // x19
__int64 v14; // x1
__int64 v15; // x2
__int64 v16; // x3
__int64 v17; // x4
__int64 v18; // x5
__int64 v19; // x6
__int64 v20; // x7
__int64 v21; // x0
__int64 v22; // x1
__int64 v23; // x2
__int64 v24; // x3
__int64 v25; // x4
__int64 v26; // x5
__int64 v27; // x6
__int64 v28; // x7
__int64 v29; // x0
__int64 v30; // x1
__int64 v31; // x2
__int64 v32; // x3
__int64 v33; // x4
__int64 v34; // x5
__int64 v35; // x6
__int64 v36; // x7
__int64 v37; // x1
__int64 v38; // x2
__int64 v39; // x3
__int64 v40; // x4
__int64 v41; // x5
__int64 v42; // x6
__int64 v43; // x7
__int64 v44; // x2
__int64 v45; // x3
__int64 v46; // x4
__int64 v47; // x5
__int64 v48; // x6
__int64 v49; // x7
__int64 v50; // x0
__int64 v51; // x1
__int64 v52; // x2
__int64 v53; // x3
__int64 v54; // x4
__int64 v55; // x5
__int64 v56; // x6
__int64 v57; // x7
__int64 v58; // x1
__int64 v59; // x2
__int64 v60; // x3
__int64 v61; // x4
__int64 v62; // x5
__int64 v63; // x6
__int64 v64; // x7
__int64 v65; // x0
__int64 v66; // x1
__int64 v67; // x2
__int64 v68; // x3
__int64 v69; // x4
__int64 v70; // x5
__int64 v71; // x6
__int64 v72; // x7
__int64 v73; // x0
__int64 v74; // x1
__int64 v75; // x2
__int64 v76; // x3
__int64 v77; // x4
__int64 v78; // x5
__int64 v79; // x6
__int64 v80; // x7
signed __int64 v81; // x0
signed __int64 v82; // x20
__int64 v83; // x0
unsigned int v84; // w0
__int64 v85; // x0
__int64 v86; // x1
__int64 v87; // x2
__int64 v88; // x3
__int64 v89; // x4
__int64 v90; // x5
__int64 v91; // x6
__int64 v92; // x7
_DWORD *v93; // x21
int v94; // w8
__int64 v95; // x1
__int64 v96; // x2
__int64 v97; // x3
__int64 v98; // x4
__int64 v99; // x5
__int64 v100; // x6
__int64 v101; // x7
char v102; // w9
__int64 v103; // x0
__int64 v104; // x1
__int64 v105; // x2
__int64 v106; // x3
__int64 v107; // x4
__int64 v108; // x5
__int64 v109; // x6
__int64 v110; // x7
__int64 v111; // x1
__int64 v112; // x2
__int64 v113; // x3
__int64 v114; // x4
__int64 v115; // x5
__int64 v116; // x6
__int64 v117; // x7
__int64 v118; // x1
__int64 v119; // x2
__int64 v120; // x3
__int64 v121; // x4
__int64 v122; // x5
__int64 v123; // x6
__int64 v124; // x7
__int64 v125; // x0
__int64 v126; // x1
__int64 v127; // x2
__int64 v128; // x3
__int64 v129; // x4
__int64 v130; // x5
__int64 v131; // x6
__int64 v132; // x7
__int64 v133; // x0
__int64 v134; // x1
__int64 v135; // x2
__int64 v136; // x3
__int64 v137; // x4
__int64 v138; // x5
__int64 v139; // x6
__int64 v140; // x7
char v141; // w9
__int64 v142; // x0
__int64 v143; // x1
__int64 v144; // x2
__int64 v145; // x3
__int64 v146; // x4
__int64 v147; // x5
__int64 v148; // x6
__int64 v149; // x7
__int64 v150; // x0
__int64 v151; // x1
__int64 v152; // x2
__int64 v153; // x3
__int64 v154; // x4
__int64 v155; // x5
__int64 v156; // x6
__int64 v157; // x7
double v158; // d0
double v159; // d1
char v160; // w9
__int64 v161; // x1
__int64 v162; // x2
__int64 v163; // x3
__int64 v164; // x4
__int64 v165; // x5
__int64 v166; // x6
__int64 v167; // x7
__int64 v168; // x0
__int64 v169; // x1
__int64 v170; // x2
__int64 v171; // x3
__int64 v172; // x4
__int64 v173; // x5
__int64 v174; // x6
__int64 v175; // x7
__int64 v176; // x1
__int64 v177; // x2
__int64 v178; // x3
__int64 v179; // x4
__int64 v180; // x5
__int64 v181; // x6
__int64 v182; // x7
int v183; // w8
signed __int64 v184; // x8
__int64 v185; // x1
__int64 v186; // x2
__int64 v187; // x3
__int64 v188; // x4
__int64 v189; // x5
__int64 v190; // x6
__int64 v191; // x7
__int64 v192; // x1
__int64 v193; // x2
__int64 v194; // x3
__int64 v195; // x4
__int64 v196; // x5
__int64 v197; // x6
__int64 v198; // x7
__int64 v199; // x0
__int64 v200; // x1
__int64 v201; // x2
__int64 v202; // x3
__int64 v203; // x4
__int64 v204; // x5
__int64 v205; // x6
__int64 v206; // x7
__int64 v207; // x0
__int64 v208; // x1
__int64 v209; // x2
__int64 v210; // x3
__int64 v211; // x4
__int64 v212; // x5
__int64 v213; // x6
__int64 v214; // x7
char v215; // w9
__int64 v216; // x0
__int64 v217; // x1
__int64 v218; // x2
__int64 v219; // x3
__int64 v220; // x4
__int64 v221; // x5
__int64 v222; // x6
__int64 v223; // x7
__int64 v224; // x0
__int64 v225; // x1
__int64 v226; // x2
__int64 v227; // x3
__int64 v228; // x4
__int64 v229; // x5
__int64 v230; // x6
__int64 v231; // x7
double v232; // d0
double v233; // d1
char v234; // w9
__int64 v235; // x1
__int64 v236; // x2
__int64 v237; // x3
__int64 v238; // x4
__int64 v239; // x5
__int64 v240; // x6
__int64 v241; // x7
__int64 v242; // x0
__int64 v243; // x1
__int64 v244; // x2
__int64 v245; // x3
__int64 v246; // x4
__int64 v247; // x5
__int64 v248; // x6
__int64 v249; // x7
__int64 v250; // x0
__int64 v251; // x1
__int64 v252; // x2
__int64 v253; // x3
__int64 v254; // x4
__int64 v255; // x5
__int64 v256; // x6
__int64 v257; // x7
__int64 v258; // x1
__int64 v259; // x2
__int64 v260; // x3
__int64 v261; // x4
__int64 v262; // x5
__int64 v263; // x6
__int64 v264; // x7
__int64 v265; // x1
__int64 v266; // x2
__int64 v267; // x3
__int64 v268; // x4
__int64 v269; // x5
__int64 v270; // x6
__int64 v271; // x7
__int64 v272; // x1
__int64 v273; // x2
__int64 v274; // x3
__int64 v275; // x4
__int64 v276; // x5
__int64 v277; // x6
__int64 v278; // x7
__int64 v279; // x1
__int64 v280; // x2
__int64 v281; // x3
__int64 v282; // x4
__int64 v283; // x5
__int64 v284; // x6
__int64 v285; // x7
__int64 v286; // x19
unsigned __int16 v287; // w0
__int64 v288; // x1
__int64 v289; // x2
__int64 v290; // x3
__int64 v291; // x4
__int64 v292; // x5
__int64 v293; // x6
__int64 v294; // x7
v1 = a1;
v2 = sub_1800F6888(a1);
v3 = v2;
v4 = sub_1800F688C(v2);
if ( !(sub_1800B6F14(v1, v3, v4, 4u, 1u) & 1) )
sub_1800D489C("%llx:%d", &byte_180101040, 5949927746061544008LL, 208LL);
v5 = (__int64)sub_1800B70B4();
v13 = (_DWORD *)v5;
if ( MEMORY[0x180115A3C] & 0x10 )
v5 = sub_1800EF260((__int64)"%llx:%d\n", v6, v7, v8, v9, v10, v11, v12, 5949927746061544008LL);
nullsub_10(v5);
if ( MEMORY[0x180115A3C] & 0x10 )
sub_1800EF260((__int64)"%llx:%d\n", v14, v15, v16, v17, v18, v19, v20, 5949927746061544008LL);
v21 = sub_1800C9E2C();
if ( MEMORY[0x180115A3C] & 0x10 )
v21 = sub_1800EF260((__int64)"%llx:%d\n", v22, v23, v24, v25, v26, v27, v28, 5949927746061544008LL);
v29 = sub_1800CA3DC(v21, v22, v23, v24, v25, v26, v27, v28);
if ( MEMORY[0x180115A3C] & 0x10 )
v29 = sub_1800EF260((__int64)"%llx:%d\n", v30, v31, v32, v33, v34, v35, v36, 5949927746061544008LL);
sub_1800CAB14(v29, v30, v31, v32, v33, v34, v35, v36);
sub_1800B6208(3, v37, v38, v39, v40, v41, v42, v43);
v50 = sub_1800B797C(5u, (__int64)"after 50MHz\n", v44, v45, v46, v47, v48, v49);
sub_1800CABF0(v50, v51, v52, v53, v54, v55, v56, v57);
if ( MEMORY[0x180115A3C] & 0x10 )
sub_1800EF260((__int64)"%llx:%d\n", v58, v59, v60, v61, v62, v63, v64, 5949927746061544008LL);
v65 = sub_1800CAD5C();
if ( MEMORY[0x180115A3C] & 0x10 )
v65 = sub_1800EF260((__int64)"%llx:%d\n", v66, v67, v68, v69, v70, v71, v72, 5949927746061544008LL);
sub_1800CAF3C(v65, v66, v67, v68, v69, v70, v71, v72);
sub_1800B60C8();
sub_1800B6064();
sub_1800CAF54();
v73 = (__int64)sub_1800C8850();
if ( MEMORY[0x180115A3C] & 0x10 )
v73 = sub_1800EF260((__int64)"%llx:%d\n", v74, v75, v76, v77, v78, v79, v80, 5949927746061544008LL);
sub_1800CB1A8(v73, v74, v75, v76, v77, v78, v79, v80);
v81 = sub_1800CBB54(MEMORY[0x180115A28] == 1, 4, 1);
v82 = v81;
v83 = sub_1800F6888(v81);
*(_DWORD *)v82 = v83;
v84 = sub_1800F688C(v83);
*(_DWORD *)(v82 + 4) = v84;
if ( v84 <= 0xF && *(_DWORD *)v82 == 0x8000 )
*(_BYTE *)(v82 + 601) = 1;
*(_DWORD *)(v82 + 20) = v13[114];
*(_DWORD *)(v82 + 24) = v13[148];
v85 = sub_1800B7098(0);
if ( v85 & 2 )
*(_DWORD *)(v82 + 604) = 0;
if ( MEMORY[0x180115A3C] & 0x40 )
v85 = sub_1800EF260((__int64)"%llx:%d\n", v86, v87, v88, v89, v90, v91, v92, 5949927746061544008LL);
v93 = (_DWORD *)8873050112LL;
v94 = v13[1];
if ( v94 & 2 )
{
if ( MEMORY[0x180115A3C] & 0x10 )
sub_1800EF260((__int64)"%llx:%d\n", v86, v87, v88, v89, v90, v91, v92, 5949927746061544008LL);
sub_1800CB1D4();
v102 = MEMORY[0x180115A3C];
if ( MEMORY[0x180115A3C] & 0x10 )
{
sub_1800EF260((__int64)"%llx:%d\n", v95, v96, v97, v98, v99, v100, v101, 5949927746061544008LL);
v102 = MEMORY[0x180115A3C];
}
if ( v102 & 0x40 )
sub_1800EF260((__int64)"%llx:%d\n", v95, v96, v97, v98, v99, v100, v101, 5949927746061544008LL);
sub_1800CC218();
if ( MEMORY[0x180115A3C] & 0x10 )
v103 = sub_1800EF260((__int64)"%llx:%d\n", v104, v105, v106, v107, v108, v109, v110, 5949927746061544008LL);
nullsub_11(v103);
if ( MEMORY[0x180115A3C] & 0x10 )
sub_1800EF260((__int64)"%llx:%d\n", v111, v112, v113, v114, v115, v116, v117, 5949927746061544008LL);
sub_1800CB318();
v125 = sub_1800B6208(1, v118, v119, v120, v121, v122, v123, v124);
v133 = sub_1800CB350(v125, v126, v127, v128, v129, v130, v131, v132);
v141 = MEMORY[0x180115A3C];
if ( MEMORY[0x180115A3C] & 0x10 )
{
v133 = sub_1800EF260((__int64)"%llx:%d\n", v134, v135, v136, v137, v138, v139, v140, 5949927746061544008LL);
v141 = MEMORY[0x180115A3C];
}
if ( v141 & 0x40 )
v133 = sub_1800EF260((__int64)"%llx:%d\n", v134, v135, v136, v137, v138, v139, v140, 5949927746061544008LL);
v142 = sub_1800CF548(v133);
v150 = sub_1800CB3E8(v142, v143, v144, v145, v146, v147, v148, v149);
v160 = MEMORY[0x180115A3C];
if ( MEMORY[0x180115A3C] & 0x40 )
{
v150 = sub_1800EF260((__int64)"%llx:%d\n", v151, v152, v153, v154, v155, v156, v157, 5949927746061544008LL);
v160 = MEMORY[0x180115A3C];
}
if ( v160 & 0x40 )
v150 = sub_1800EF260((__int64)"%llx:%d\n", v151, v152, v153, v154, v155, v156, v157, 5949927746061544008LL);
sub_1800CE280(v150, v151, v152, v153, v154, v155, v156, v157, v158, v159);
if ( MEMORY[0x180115A3C] & 0x40 )
sub_1800EF260((__int64)"%llx:%d\n", v161, v162, v163, v164, v165, v166, v167, 5949927746061544008LL);
sub_1800CFF00();
sub_1800CB3A8(v168, v169, v170, v171, v172, v173, v174, v175);
v85 = (__int64)sub_1800C9014((_DWORD *)0x210E00000LL, 2);
v93 = (_DWORD *)v85;
v94 = v13[1];
}
if ( v94 & 1 )
{
if ( MEMORY[0x180115A3C] & 0x10 )
sub_1800EF260((__int64)"%llx:%d\n", v86, v87, v88, v89, v90, v91, v92, 5949927746061544008LL);
sub_1800CB430();
if ( MEMORY[0x180115A3C] & 0x10 )
sub_1800EF260((__int64)"%llx:%d\n", v176, v177, v178, v179, v180, v181, v182, 5949927746061544008LL);
v183 = v13[114];
switch ( v183 )
{
case 1250:
v184 = 51539607566LL;
break;
case 833:
v184 = 51539607576LL;
break;
case 631:
v184 = 60129542172LL;
break;
default:
LABEL_57:
*(_DWORD *)(v82 + 852) = 0;
if ( MEMORY[0x180115A3C] & 0x40 )
sub_1800EF260((__int64)"%llx:%d\n", v176, v177, v178, v179, v180, v181, v182, 5949927746061544008LL);
sub_1800CC218();
sub_1800C8E8C();
if ( MEMORY[0x180115A3C] & 0x10 )
sub_1800EF260((__int64)"%llx:%d\n", v185, v186, v187, v188, v189, v190, v191, 5949927746061544008LL);
sub_1800CB580();
v199 = sub_1800B6208(0, v192, v193, v194, v195, v196, v197, v198);
v207 = sub_1800CB5B8(v199, v200, v201, v202, v203, v204, v205, v206);
v215 = MEMORY[0x180115A3C];
if ( MEMORY[0x180115A3C] & 0x10 )
{
v207 = sub_1800EF260((__int64)"%llx:%d\n", v208, v209, v210, v211, v212, v213, v214, 5949927746061544008LL);
v215 = MEMORY[0x180115A3C];
}
if ( v215 & 0x40 )
v207 = sub_1800EF260((__int64)"%llx:%d\n", v208, v209, v210, v211, v212, v213, v214, 5949927746061544008LL);
v216 = sub_1800CF548(v207);
v224 = sub_1800CB3E8(v216, v217, v218, v219, v220, v221, v222, v223);
v234 = MEMORY[0x180115A3C];
if ( MEMORY[0x180115A3C] & 0x40 )
{
v224 = sub_1800EF260((__int64)"%llx:%d\n", v225, v226, v227, v228, v229, v230, v231, 5949927746061544008LL);
v234 = MEMORY[0x180115A3C];
}
if ( v234 & 0x40 )
v224 = sub_1800EF260((__int64)"%llx:%d\n", v225, v226, v227, v228, v229, v230, v231, 5949927746061544008LL);
sub_1800CE280(v224, v225, v226, v227, v228, v229, v230, v231, v232, v233);
if ( MEMORY[0x180115A3C] & 0x40 )
sub_1800EF260((__int64)"%llx:%d\n", v235, v236, v237, v238, v239, v240, v241, 5949927746061544008LL);
sub_1800CFF00();
v85 = (__int64)sub_1800C9014(v93, 1);
v93 = (_DWORD *)v85;
goto LABEL_72;
}
*(_QWORD *)(v82 + 856) = v184;
goto LABEL_57;
}
LABEL_72:
if ( MEMORY[0x180115A3C] & 0x10 )
v85 = sub_1800EF260((__int64)"%llx:%d\n", v86, v87, v88, v89, v90, v91, v92, 5949927746061544008LL);
v242 = sub_1800CB610(v85, v86, v87, v88, v89, v90, v91, v92);
if ( MEMORY[0x180115A3C] & 0x10 )
v242 = sub_1800EF260((__int64)"%llx:%d\n", v243, v244, v245, v246, v247, v248, v249, 5949927746061544008LL);
v250 = sub_1800CB700(v242, v243, v244, v245, v246, v247, v248, v249);
if ( MEMORY[0x180115A3C] & 0x10 )
v250 = sub_1800EF260((__int64)"%llx:%d\n", v251, v252, v253, v254, v255, v256, v257, 5949927746061544008LL);
sub_1800CB7C0(v250, v251, v252, v253, v254, v255, v256, v257);
if ( MEMORY[0x180115A3C] & 0x10 )
sub_1800EF260((__int64)"%llx:%d\n", v258, v259, v260, v261, v262, v263, v264, 5949927746061544008LL);
sub_1800CB814();
if ( MEMORY[0x180115A3C] & 0x10 )
sub_1800EF260((__int64)"%llx:%d\n", v265, v266, v267, v268, v269, v270, v271, 5949927746061544008LL);
sub_1800CBAD4();
sub_1800C9014(v93, 0);
if ( MEMORY[0x180115A3C] & 0x10 )
sub_1800EF260((__int64)"%llx:%d\n", v272, v273, v274, v275, v276, v277, v278, 5949927746061544008LL);
sub_1800B7A10();
if ( v13[1] & 2 )
sub_1800B6208(1, v279, v280, v281, v282, v283, v284, v285);
v286 = MEMORY[0x180119BE4];
v287 = sub_1800B6064();
sub_1800C69C4(v286, v287, MEMORY[0x180119BE8], MEMORY[0x180119BEC]);
if ( MEMORY[0x180115A3C] & 0x10 )
sub_1800EF260((__int64)"%llx:%d\n", v288, v289, v290, v291, v292, v293, v294, 5949927746061544008LL);
return 0LL;
}
// 1800C9E28: using guessed type __int64 __fastcall nullsub_10(_QWORD);
// 1800CB314: using guessed type __int64 __fastcall nullsub_11(_QWORD);
// 1800F6888: using guessed type __int64 __fastcall sub_1800F6888(_QWORD);
// 1800F688C: using guessed type __int64 __fastcall sub_1800F688C(_QWORD);
// 180101040: using guessed type char byte_180101040;
// 180114568: using guessed type int dword_180114568;
//----- (00000001800B6F14) ----------------------------------------------------
signed __int64 __fastcall sub_1800B6F14(int a1, int a2, int a3, unsigned int a4, unsigned int a5)
{
unsigned int v5; // w21
unsigned int v6; // w22
int v7; // w20
int v8; // w19
int v9; // w8
signed __int64 result; // x0
bool v11; // cf
bool v12; // zf
__int64 v13; // x1
__int64 v14; // x2
__int64 v15; // x3
__int64 v16; // x4
__int64 v17; // x5
__int64 v18; // x6
__int64 v19; // x7
__int64 v20; // x1
__int64 v21; // x2
__int64 v22; // x3
__int64 v23; // x4
__int64 v24; // x5
__int64 v25; // x6
__int64 v26; // x7
v5 = a5;
v6 = a4;
v7 = a3;
v8 = a2;
v9 = a1;
result = 0LL;
MEMORY[0x180115A24] = 0;
MEMORY[0x180115A28] = v9;
if ( (v9 | 4) == 4 )
{
if ( a4 <= 4 )
{
v11 = a5 >= 1;
v12 = a5 == 1;
}
else
{
v11 = 1;
v12 = 0;
}
if ( !v12 && v11 || (unsigned int)sub_1800F6888(0LL) != a2 )
{
result = 0LL;
}
else
{
MEMORY[0x180115A2C] = v8;
MEMORY[0x180115A30] = v7;
MEMORY[0x180115A34] = v6;
MEMORY[0x180115A38] = v5;
MEMORY[0x180115A3C] = 768;
MEMORY[0x180115A40] = 0;
sub_1800EF260((__int64)"%llx:%d\n", v13, v14, v15, v16, v17, v18, v19, -2391547629761098080LL);
if ( MEMORY[0x180115A3C] & 0x100 )
sub_1800EF260((__int64)"%llx:%d\n", v20, v21, v22, v23, v24, v25, v26, -2391547629761098080LL);
result = 1LL;
BYTE4(qword_1801158C8[43]) = 1;
}
}
return result;
}
// 1800F6888: using guessed type __int64 __fastcall sub_1800F6888(_QWORD);
// 180114568: using guessed type int dword_180114568;
// 180114CE8: using guessed type __int64[105];
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B7098) ----------------------------------------------------
__int64 __fastcall sub_1800B7098(int a1)
{
__int64 v1; // x8
v1 = MEMORY[0x180115A40];
MEMORY[0x180115A40] |= a1;
return v1;
}
//----- (00000001800B70B4) ----------------------------------------------------
__int64 *sub_1800B70B4()
{
nullsub_9(qword_1801148A0, 0LL);
return qword_1801148A0;
}
// 1800C884C: using guessed type __int64 __fastcall nullsub_9(_QWORD, _QWORD);
// 1801148A0: using guessed type __int64 qword_1801148A0[];
//----- (00000001800B70E4) ----------------------------------------------------
__int64 __fastcall sub_1800B70E4(__int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
int v8; // w19
_DWORD *v9; // x20
v8 = a2;
v9 = (_DWORD *)result;
if ( MEMORY[0x180115A3C] & 1 )
result = sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, -2391547629761098080LL);
*v9 = v8;
return result;
}
// 180114568: using guessed type int dword_180114568;
//----- (00000001800B716C) ----------------------------------------------------
__int64 __fastcall sub_1800B716C(__int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
int v8; // w19
__int64 v9; // x20
unsigned int v10; // w26
unsigned int v11; // w27
v8 = a2;
v9 = result;
if ( MEMORY[0x180115A3C] & 1 )
result = sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, -2391547629761098080LL);
v10 = 0;
v11 = 0;
while ( v11 < MEMORY[0x180115A34] )
{
*(_DWORD *)(v9 + v10) = v8;
if ( MEMORY[0x180115A3C] & 2 )
result = sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, -2391547629761098080LL);
++v11;
v10 += 0x40000;
}
if ( MEMORY[0x180115A3C] & 1 )
result = sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, -2391547629761098080LL);
return result;
}
// 180114568: using guessed type int dword_180114568;
//----- (00000001800B72C0) ----------------------------------------------------
__int64 __fastcall sub_1800B72C0(__int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
int v8; // w19
int v9; // w20
__int64 v10; // x21
unsigned int i; // w23
__int64 v12; // x25
__int64 v13; // [xsp+10h] [xbp-60h]
v8 = a3;
v9 = a2;
v10 = result;
if ( MEMORY[0x180115A3C] & 1 )
result = sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, -2391547629761098080LL);
for ( i = 0; i < MEMORY[0x180115A34]; ++i )
{
if ( MEMORY[0x180115A3C] & 2 )
result = sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, -2391547629761098080LL);
result = sub_1800E1188(result);
v12 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( (*(_DWORD *)(v10 + (i << 18)) & v9) == v8 )
break;
if ( (unsigned __int64)(result - v12) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2391547629761098080LL, 271LL, v13);
}
if ( MEMORY[0x180115A3C] & 2 )
result = sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, -2391547629761098080LL);
}
if ( MEMORY[0x180115A3C] & 1 )
result = sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, -2391547629761098080LL);
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
// 180114568: using guessed type int dword_180114568;
//----- (00000001800B74D4) ----------------------------------------------------
bool __fastcall sub_1800B74D4(unsigned __int64 a1)
{
return a1 >> 18 != 32776;
}
//----- (00000001800B74E8) ----------------------------------------------------
__int64 __fastcall sub_1800B74E8(int a1, __int64 a2, int a3, int a4, _BYTE *a5)
{
_BYTE *v5; // x19
__int64 v6; // x21
int v7; // w22
__int64 result; // x0
__int64 v9; // x1
__int64 v10; // x2
__int64 v11; // x3
__int64 v12; // x4
__int64 v13; // x5
__int64 v14; // x6
__int64 v15; // x7
char v16; // x20^3
v5 = a5;
v6 = a2;
v7 = a1;
*(_DWORD *)((a2 << 18) + 0x200200500LL) = (unsigned __int64)sub_1800B75BC(a1, a4, (int)a5) | (a3 << 13);
result = sub_1800B78E8(v6);
v16 = BYTE3(result);
if ( !v7 )
{
if ( MEMORY[0x180115A3C] & 8 )
result = sub_1800EF260((__int64)"%llx:%d\n", v9, v10, v11, v12, v13, v14, v15, -2391547629761098080LL);
*v5 = v16;
}
return result;
}
// 180114568: using guessed type int dword_180114568;
//----- (00000001800B75BC) ----------------------------------------------------
__int64 __fastcall sub_1800B75BC(int a1, int a2, int a3)
{
int v3; // w8
int v4; // w9
unsigned int v5; // w8
__int64 result; // x0
v3 = (a3 << 24) | (a2 << 16);
v4 = v3 | 0x4100;
v5 = v3 | 0x100;
if ( a1 != 1 )
v5 = v4;
if ( a1 )
result = v5;
else
result = ((unsigned __int16)a2 << 16) | 0x1100u;
return result;
}
//----- (00000001800B75EC) ----------------------------------------------------
__int64 __fastcall sub_1800B75EC(int a1, __int64 a2, int a3, int a4, _BYTE *a5)
{
int v5; // w20
int v6; // w22
__int64 result; // x0
__int64 v8; // x1
__int64 v9; // x2
__int64 v10; // x3
__int64 v11; // x4
__int64 v12; // x5
__int64 v13; // x6
__int64 v14; // x7
int v15; // w23
char v16; // w9
__int64 i; // x26
int v18; // w24
int v19; // w25
int j; // w25
int k; // w27
char v22; // x26^3
__int64 v23; // [xsp+20h] [xbp-60h]
_BYTE *v24; // [xsp+28h] [xbp-58h]
v5 = a3;
v23 = a2;
v24 = a5;
v6 = a1;
result = sub_1800B75BC(a1, a4, (int)a5);
v15 = result;
v16 = MEMORY[0x180115A3C];
if ( MEMORY[0x180115A3C] & 1 )
{
result = sub_1800EF260((__int64)"%llx:%d\n", v8, v9, v10, v11, v12, v13, v14, -2391547629761098080LL);
v16 = MEMORY[0x180115A3C];
}
if ( v16 & 2 )
result = sub_1800EF260((__int64)"%llx:%d\n", v8, v9, v10, v11, v12, v13, v14, -2391547629761098080LL);
for ( i = 0LL; i != v23; ++i )
{
v18 = 0;
v19 = 0;
while ( v5 != v19 )
{
if ( MEMORY[0x180115A3C] & 2 )
result = sub_1800EF260((__int64)"%llx:%d\n", v8, v9, v10, v11, v12, v13, v14, -2391547629761098080LL);
*(_DWORD *)((i << 18) + 0x200200500LL) = v18 | v15;
++v19;
v18 += 0x2000;
}
}
if ( MEMORY[0x180115A3C] & 2 )
result = sub_1800EF260((__int64)"%llx:%d\n", v8, v9, v10, v11, v12, v13, v14, -2391547629761098080LL);
for ( j = 0; j != (_DWORD)v23; ++j )
{
for ( k = 0; v5 != k; ++k )
{
result = sub_1800B78E8((unsigned __int8)j);
v22 = BYTE3(result);
if ( MEMORY[0x180115A3C] & 2 )
result = sub_1800EF260((__int64)"%llx:%d\n", v8, v9, v10, v11, v12, v13, v14, -2391547629761098080LL);
if ( !v6 )
{
if ( MEMORY[0x180115A3C] & 8 )
result = sub_1800EF260((__int64)"%llx:%d\n", v8, v9, v10, v11, v12, v13, v14, -2391547629761098080LL);
*v24++ = v22;
}
}
}
if ( MEMORY[0x180115A3C] & 1 )
result = sub_1800EF260((__int64)"%llx:%d\n", v8, v9, v10, v11, v12, v13, v14, -2391547629761098080LL);
return result;
}
//----- (00000001800B78E8) ----------------------------------------------------
__int64 __fastcall sub_1800B78E8(__int64 a1)
{
__int64 v1; // x20
__int64 v2; // x0
__int64 v3; // x19
__int64 v4; // x20
v1 = a1;
v2 = sub_1800E1188(a1);
v3 = v2;
v4 = v1 << 18;
while ( 1 )
{
v2 = sub_1800E1188(v2);
if ( !(*(_DWORD *)(v4 + 8592033028LL) & 0x100) )
break;
if ( (unsigned __int64)(v2 - v3) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2391547629761098080LL, 297LL);
}
return *(unsigned int *)(v4 + 8592033028LL);
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800B797C) ----------------------------------------------------
__int64 __fastcall sub_1800B797C(unsigned int a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
unsigned int v8; // w19
v8 = a1;
if ( MEMORY[0x180115A3C] & 4 )
sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, -2391547629761098080LL);
return sub_1800D5F60(v8);
}
// 180114568: using guessed type int dword_180114568;
//----- (00000001800B7A10) ----------------------------------------------------
__int64 sub_1800B7A10()
{
__int64 result; // x0
__int64 v1; // x1
__int64 v2; // x2
__int64 v3; // x3
__int64 v4; // x4
__int64 v5; // x5
__int64 v6; // x6
__int64 v7; // x7
__int64 v8; // x19
unsigned int v9; // w8
unsigned int v10; // w21
unsigned int v11; // [xsp+Ch] [xbp-34h]
__int64 v12; // [xsp+10h] [xbp-30h]
__int64 v13; // [xsp+18h] [xbp-28h]
v13 = 5139240511851214385LL;
v12 = 0LL;
v11 = 0;
result = (__int64)sub_1800C8F48(&v11);
v8 = result;
if ( result )
{
v9 = v11;
if ( v11 )
{
v10 = 0;
while ( v10 < v9 && *(_QWORD *)v8 )
{
if ( *(_QWORD *)v8 != v12 )
{
if ( v12 )
{
if ( (v12 & 0xFFFFFFFFFFFC0000LL) == 8592031744LL )
result = sub_1800B716C(v12, v1, v2, v3, v4, v5, v6, v7);
else
result = sub_1800B70E4(v12, v1, v2, v3, v4, v5, v6, v7);
}
v12 = *(_QWORD *)v8;
LODWORD(v1) = *(_DWORD *)v12;
v9 = v11;
}
v1 = (unsigned int)v1 & ~*(_DWORD *)(v8 + 8) | *(_DWORD *)(v8 + 12);
++v10;
v8 += 16LL;
}
if ( v12 )
{
if ( (v12 & 0xFFFFFFFFFFFC0000LL) == 8592031744LL )
result = sub_1800B716C(v12, v1, v2, v3, v4, v5, v6, v7);
else
result = sub_1800B70E4(v12, v1, v2, v3, v4, v5, v6, v7);
}
}
}
if ( 5139240511851214385LL != v13 )
sub_1800D4A5C();
return result;
}
//----- (00000001800B7B2C) ----------------------------------------------------
_DWORD *__fastcall sub_1800B7B2C(_DWORD *result)
{
__int64 v1; // x29
__int64 v2; // x30
unsigned int v3; // w10
int v4; // w10
BYTE4(qword_1801158C8[2150]) = 1;
MEMORY[0x206540008] = 0;
MEMORY[0x20654000C] = result[5] | (result[9] << 16);
if ( &dword_180115080 )
{
MEMORY[0x206540010] = 2;
MEMORY[0x206540014] = 2;
}
else
{
MEMORY[0x206540010] = 2;
MEMORY[0x206540014] = 3;
}
MEMORY[0x206540018] = 3;
if ( &dword_180115080 )
{
MEMORY[0x206540100] |= 0x6000u;
v3 = result[14];
if ( v3 == 24 )
{
v4 = MEMORY[0x206540100] | 2;
}
else
{
if ( v3 > 0x12 )
sub_1800D489C("%llx:%d", &byte_180101040, 1015692064664144801LL, 130LL, v1, v2);
v4 = MEMORY[0x206540100] | 3;
}
MEMORY[0x206540100] = v4;
MEMORY[0x206540104] = 0;
MEMORY[0x206540128] = 1023;
MEMORY[0x20654012C] = 1023;
MEMORY[0x206540130] = 1023;
MEMORY[0x206540134] = 1023;
MEMORY[0x206540138] = 1023;
MEMORY[0x20654013C] = 1023;
MEMORY[0x206540140] = 1023;
MEMORY[0x206540144] = 1023;
MEMORY[0x206540148] = 1023;
MEMORY[0x20654014C] = 1023;
MEMORY[0x206540150] = 1023;
MEMORY[0x206540154] = 1023;
MEMORY[0x206540158] = 1023;
MEMORY[0x20654015C] = 1023;
MEMORY[0x206540160] = 1023;
MEMORY[0x206540000] |= 2u;
}
MEMORY[0x206540004] = 3;
return result;
}
// 180101040: using guessed type char byte_180101040;
// 180115080: using guessed type int dword_180115080;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B7CF4) ----------------------------------------------------
void sub_1800B7CF4()
{
MEMORY[0x206480000] = MEMORY[0x206480000] & 0xFFFFFF15 | 0x28;
MEMORY[0x20648000C] = 65537;
MEMORY[0x20648001C] |= 4u;
}
//----- (00000001800B7D30) ----------------------------------------------------
__int64 __fastcall sub_1800B7D30(__int64 a1)
{
int v2; // [xsp+0h] [xbp-10h]
unsigned int v3; // [xsp+4h] [xbp-Ch]
__int64 v4; // [xsp+8h] [xbp-8h]
v4 = 5139240511851214385LL;
sub_1800B7DA4(a1, &v3, (unsigned int *)&v2);
if ( 5139240511851214385LL != v4 )
sub_1800D4A5C();
return *(_DWORD *)(qword_180104670[2 * v3] + (unsigned int)(4 * v2)) & 1;
}
// 180104670: using guessed type __int64 qword_180104670[4];
//----- (00000001800B7DA4) ----------------------------------------------------
__int64 __fastcall sub_1800B7DA4(__int64 result, unsigned int *a2, unsigned int *a3)
{
__int64 v3; // x29
__int64 v4; // x30
unsigned int v5; // w8
__int64 v6; // x9
*a2 = (unsigned int)result >> 24;
v5 = ((unsigned int)result >> 5) & 0x7F8 | result & 7;
*a3 = v5;
v6 = *a2;
if ( (unsigned int)v6 > 1 || v5 >= LODWORD(qword_180104670[2 * v6 + 1]) )
sub_1800D489C("%llx:%d", &byte_180101040, -460676035299380819LL, 86LL, v3, v4);
return result;
}
// 180101040: using guessed type char byte_180101040;
// 180104670: using guessed type __int64 qword_180104670[4];
//----- (00000001800B7E1C) ----------------------------------------------------
__int64 __fastcall sub_1800B7E1C(__int64 a1, int a2)
{
int v2; // w19
__int64 result; // x0
signed int v4; // w8
int v5; // [xsp+0h] [xbp-20h]
unsigned int v6; // [xsp+4h] [xbp-1Ch]
__int64 v7; // [xsp+8h] [xbp-18h]
v2 = a2;
v7 = 5139240511851214385LL;
result = sub_1800B7DA4(a1, &v6, (unsigned int *)&v5);
if ( v2 )
v4 = 459267;
else
v4 = 459266;
*(_DWORD *)(qword_180104670[2 * v6] + (unsigned int)(4 * v5)) = *(_DWORD *)(qword_180104670[2 * v6]
+ (unsigned int)(4 * v5)) & 0xFFF8FD90 | v4;
if ( 5139240511851214385LL != v7 )
sub_1800D4A5C();
return result;
}
// 180104670: using guessed type __int64 qword_180104670[4];
//----- (00000001800B7EBC) ----------------------------------------------------
__int64 __fastcall sub_1800B7EBC(__int64 result, int a2, unsigned int a3)
{
__int64 v3; // x29
__int64 v4; // x30
__int64 v5; // x8
__int64 v6; // x9
unsigned int v7; // w11
int v8; // w10
bool v9; // zf
v5 = qword_180104670[2 * (unsigned int)result];
v6 = (unsigned int)(4 * a2);
v7 = *(_DWORD *)(v5 + (unsigned int)v6);
if ( a3 & 0x200 )
{
v8 = *(_DWORD *)(v5 + (unsigned int)v6) & 0x200;
}
else
{
v8 = 0;
*(_DWORD *)(v6 + v5) = v7 & 0xFFFFFDFF;
}
if ( a3 & 0x60 )
{
v9 = v7 & 0x60 ? ((v7 >> 20) & 0xC | (v7 >> 10) & 3) == ((a3 >> 20) & 0xC | (a3 >> 10) & 3) : 1;
if ( !v9 )
sub_1800D489C("%llx:%d", &byte_180101040, -460676035299380819LL, 167LL, v3, v4);
}
*(_DWORD *)(v5 + v6) = v8 | a3 & 0xFFFFFDFF;
if ( a3 & 0x200 )
{
if ( !v8 )
*(_DWORD *)(v5 + v6) = a3;
}
return result;
}
// 180101040: using guessed type char byte_180101040;
// 180104670: using guessed type __int64 qword_180104670[4];
//----- (00000001800B7F70) ----------------------------------------------------
__int64 __fastcall sub_1800B7F70(__int64 a1, int a2)
{
int v2; // w19
__int64 result; // x0
signed int v4; // w20
signed int v5; // w8
__int64 v6; // x0
unsigned int v7; // [xsp+0h] [xbp-20h]
unsigned int v8; // [xsp+4h] [xbp-1Ch]
__int64 v9; // [xsp+8h] [xbp-18h]
v2 = a2;
v9 = 5139240511851214385LL;
result = sub_1800B7DA4(a1, &v8, &v7);
v4 = 459374;
v5 = 459264;
switch ( v2 )
{
case 0:
goto LABEL_9;
case 1:
v5 = 459266;
goto LABEL_9;
case 2:
v5 = 459266;
v4 = 459375;
goto LABEL_9;
case 3:
v5 = 459267;
v4 = 459375;
goto LABEL_9;
case 4:
v6 = sub_1800E0DCC(v8);
v5 = *(_DWORD *)(v6 + 4LL * v7);
v4 = 459759;
goto LABEL_9;
case 5:
v5 = 459296;
goto LABEL_9;
case 6:
v5 = 459328;
goto LABEL_9;
case 7:
v5 = 459360;
LABEL_9:
result = sub_1800B7EBC(v8, v7, *(_DWORD *)(qword_180104670[2 * v8] + 4 * v7) & ~v4 | v5 & (unsigned int)v4);
break;
default:
break;
}
if ( 5139240511851214385LL != v9 )
sub_1800D4A5C();
return result;
}
// 180104670: using guessed type __int64 qword_180104670[4];
//----- (00000001800B8090) ----------------------------------------------------
__int64 __fastcall sub_1800B8090(__int64 a1, signed int a2)
{
signed int v2; // w19
__int64 result; // x0
signed int v4; // w9
signed int v5; // w8
int v6; // [xsp+0h] [xbp-20h]
unsigned int v7; // [xsp+4h] [xbp-1Ch]
__int64 v8; // [xsp+8h] [xbp-18h]
v2 = a2;
v8 = 5139240511851214385LL;
result = sub_1800B7DA4(a1, &v7, (unsigned int *)&v6);
if ( v2 <= 1 )
v4 = 384;
else
v4 = 256;
if ( !v2 )
v4 = 0;
if ( v2 >= 0 )
v5 = v4;
else
v5 = 128;
*(_DWORD *)(qword_180104670[2 * v7] + (unsigned int)(4 * v6)) = *(_DWORD *)(qword_180104670[2 * v7]
+ (unsigned int)(4 * v6)) & 0xFFFFFE7F | v5;
if ( 5139240511851214385LL != v8 )
sub_1800D4A5C();
return result;
}
// 180104670: using guessed type __int64 qword_180104670[4];
//----- (00000001800B813C) ----------------------------------------------------
__int64 sub_1800B813C()
{
__int64 i; // x19
__int64 v1; // x20
__int64 v2; // x21
__int64 v3; // x24
for ( i = 0LL; i != 2; ++i )
{
v1 = sub_1800E0DCC(i);
v2 = 0LL;
v3 = LODWORD(qword_180104670[2 * i + 1]);
while ( v3 != v2 )
{
sub_1800B7EBC(i, v2, *(_DWORD *)(v1 + 4 * v2));
++v2;
}
*(_DWORD *)(qword_180104670[2 * i] + 3144) = 1;
}
MEMORY[0x20F100C50] = 0;
return 0LL;
}
// 180104670: using guessed type __int64 qword_180104670[4];
//----- (00000001800B81DC) ----------------------------------------------------
__int64 sub_1800B81DC()
{
return MEMORY[0x20F100C4C] & 1;
}
//----- (00000001800B81F4) ----------------------------------------------------
signed __int64 __fastcall sub_1800B81F4(__int64 a1)
{
__int64 v1; // x21
int v2; // w19
int v3; // w20
bool v5; // zf
v1 = a1;
sub_1800B7F70(a1, 0);
sub_1800B8090(v1, -1);
sub_1800D5F60(100LL);
v2 = sub_1800B7D30(v1);
sub_1800B8090(v1, 1);
sub_1800D5F60(100LL);
v3 = sub_1800B7D30(v1);
sub_1800B7F70(v1, 4);
if ( !(v3 | v2) )
return 0LL;
if ( !v2 && v3 == 1 )
return 1LL;
if ( v2 == 1 )
v5 = v3 == 1;
else
v5 = 0;
if ( !v5 )
sub_1800D489C("%llx:%d", &byte_180101040, -460676035299380819LL, 353LL);
return 2LL;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800B82D4) ----------------------------------------------------
__int64 *__fastcall sub_1800B82D4(int a1, int a2, int a3)
{
int v3; // w19
int v4; // w20
int v5; // w21
__int64 v6; // x22
unsigned int v7; // w0
unsigned __int64 v8; // x8
__int64 *v9; // x12
unsigned __int64 v10; // x9
__int64 *result; // x0
__int64 *v12; // x1
unsigned __int64 v13; // x14
unsigned __int64 v14; // x15
bool v15; // cf
bool v16; // zf
bool v17; // zf
signed __int64 v18; // x13
bool v19; // zf
v3 = a3;
v4 = a2;
v5 = a1;
v6 = (unsigned int)sub_1800C859C();
v7 = sub_1800C85A4();
v8 = 0LL;
v9 = 0LL;
v10 = v7;
result = &qword_180108F18;
while ( v8 < 0x70 )
{
v12 = result;
if ( ~(unsigned __int16)*result & 0x1FF )
{
if ( v9 )
{
v13 = *v9;
if ( (!(*v9 & 0x400000000000LL) || ((v13 >> 47) & 0xF) == v3)
&& ((v14 = (v13 >> 30) & 0xFFFF, (((unsigned int)v13 >> 25) & 0x1F) == v4) ? (v15 = v14 >= v10,
v16 = v14 == v10) : (v15 = 1, v16 = 0),
v16 || !v15 ? (v17 = (*result & 0x1FF) == v5) : (v17 = 0),
v17) )
{
v18 = (v13 >> 9) & 0xFFFF;
if ( v18 == 254 )
v19 = 1;
else
v19 = v18 == v6;
v12 = v9;
if ( v19 )
goto LABEL_23;
}
else
{
v12 = v9;
}
}
else
{
v12 = 0LL;
}
}
++v8;
result += 3;
v9 = v12;
}
result = 0LL;
LABEL_23:
if ( !result )
sub_1800D489C("%llx:%d", &byte_180101040, -2317632407109470332LL, 50LL);
return result;
}
// 180101040: using guessed type char byte_180101040;
// 180108F18: using guessed type __int64 qword_180108F18;
//----- (00000001800B83FC) ----------------------------------------------------
__int64 __fastcall sub_1800B83FC(int a1, _DWORD *a2)
{
int v2; // w20
int v3; // w21
unsigned int v4; // w22
unsigned int i; // w23
unsigned int v6; // w8
unsigned int v7; // w19
int v8; // w8
__int64 result; // x0
__int64 *v10; // x8
_DWORD *v11; // [xsp+8h] [xbp-58h]
v11 = a2;
v2 = a1;
v3 = sub_1800C859C();
v4 = sub_1800C85A4();
for ( i = 0; ; ++i )
{
if ( i >= 0xD )
{
result = 0LL;
*v11 = 0;
return result;
}
v6 = qword_1801119D0[3 * i];
if ( v3 == (unsigned __int16)v6 && v4 >= BYTE2(v6) && HIDWORD(qword_1801119D0[3 * i]) == v2 )
{
v7 = v6 >> 24;
if ( v6 >> 24 == 255 )
break;
v8 = qword_1801158C8[2151];
if ( (!v8 || v8 == v7) && (v8 || v7 == (unsigned int)sub_1800C678C()) )
break;
}
}
v10 = &qword_1801119D0[3 * i];
*v11 = *((_DWORD *)v10 + 4);
return v10[1];
}
// 1801119D0: using guessed type __int64 qword_1801119D0[39];
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B8508) ----------------------------------------------------
__int64 __fastcall sub_1800B8508(unsigned int a1, int a2)
{
int v2; // w19
unsigned int v3; // w20
unsigned __int16 *v4; // x0
bool v5; // cf
bool v6; // zf
__int64 result; // x0
signed __int64 v8; // x8
unsigned int v9; // [xsp+14h] [xbp-2Ch]
__int64 v10; // [xsp+18h] [xbp-28h]
v2 = a2;
v3 = a1;
v10 = 5139240511851214385LL;
v4 = (unsigned __int16 *)sub_1800B83FC(a2, &v9);
if ( !v4 )
{
v8 = 61LL;
goto LABEL_12;
}
if ( v9 <= v3 )
{
v5 = v9 >= 2;
v6 = v9 == 2;
}
else
{
v5 = 1;
v6 = 0;
}
if ( v6 || !v5 )
{
v8 = 65LL;
goto LABEL_12;
}
if ( v9 > v3 )
{
result = v4[v3];
}
else
{
if ( v2 == 7 )
{
LABEL_11:
result = v4[2];
goto LABEL_15;
}
if ( v2 != 3 )
{
if ( v2 == 1 )
goto LABEL_11;
v8 = 77LL;
LABEL_12:
sub_1800D489C("%llx:%d", &byte_180101040, 4524833359521836902LL, v8);
}
result = *v4;
}
LABEL_15:
if ( 5139240511851214385LL != v10 )
sub_1800D4A5C();
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800B85F4) ----------------------------------------------------
signed __int64 __fastcall sub_1800B85F4(signed __int64 result, int a2, __int64 a3, __int64 a4, __int64 a5)
{
__int64 v5; // x21
int v6; // w23
__int64 (__fastcall *v7)(unsigned int *, __int64, bool); // x22
signed int v8; // w8
unsigned int v9; // w9
signed __int64 v10; // x10
__int64 v11; // x20
unsigned int v12; // w25
unsigned int *v13; // x24
unsigned int v14; // w8
__int64 v15; // x1
__int64 v16; // x9
__int64 v17; // x9
signed __int64 v18; // x8
__int64 v19; // x19
__int64 v20; // x27
int v21; // w26
__int64 v22; // x13
signed __int64 v23; // x28
__int64 *v24; // x28
__int64 v25; // t1
__int64 v26; // [xsp+10h] [xbp-70h]
int v27; // [xsp+18h] [xbp-68h]
_QWORD *v28; // [xsp+20h] [xbp-60h]
__int64 v29; // [xsp+28h] [xbp-58h]
v29 = a5;
v5 = a3;
v6 = a2;
v7 = (__int64 (__fastcall *)(unsigned int *, __int64, bool))result;
v8 = 0;
v9 = 0;
v26 = a4;
while ( 1 )
{
v22 = v9;
v23 = a4 + 40LL * v9;
v25 = *(_QWORD *)(v23 + 16);
v24 = (__int64 *)(v23 + 16);
v17 = v25;
if ( !v25 && !*(_QWORD *)(a4 + 40 * v22 + 24) )
break;
v10 = a4 + 40 * v22;
if ( *(_DWORD *)v10 == v6 )
{
v11 = *(_QWORD *)(v10 + 8);
if ( !v7 || *(_BYTE *)(a4 + 40 * v22 + 32) )
{
v12 = 0;
v27 = v22;
v28 = (_QWORD *)(a4 + 40 * v22 + 24);
while ( 1 )
{
if ( v17 )
{
v18 = v17 + 12LL * v12;
v19 = *(unsigned int *)(v18 + 4);
v20 = *(unsigned int *)(v18 + 8);
}
else
{
v18 = *v28 + 20LL * v12;
v19 = *(_QWORD *)(v18 + 4);
v20 = *(_QWORD *)(v18 + 12);
}
v21 = *(_DWORD *)v18;
if ( (*(_DWORD *)v18 & 0x7FFFFFF) == 0x7FFFFFF )
{
v8 = 1;
a4 = v26;
LODWORD(v22) = v27;
break;
}
v13 = (unsigned int *)(v11 + (unsigned int)(32 * v21 >> 5));
result = sub_1800B87E8((unsigned __int64)v13, v6, v5, v7 == 0LL);
if ( !(result & 1) )
{
result = sub_1800B87E8((unsigned __int64)v13, v6, v29, v7 == 0LL);
if ( !(result & 1) )
{
v14 = v21 & 0xF8000000;
if ( (v21 & 0xF8000000) == 0x40000000 )
{
v15 = *(_QWORD *)v13;
if ( v7 )
goto LABEL_12;
}
else
{
v15 = *v13;
if ( v7 )
{
LABEL_12:
result = v7(v13, v15, v14 == 0x40000000);
goto LABEL_17;
}
}
if ( (v15 & v19) != v20 )
{
v16 = v15 & ~v19 | v20;
if ( v14 == 0x40000000 )
*(_QWORD *)v13 = v16;
else
*v13 = v16;
}
}
}
LABEL_17:
++v12;
v17 = *v24;
}
}
}
v9 = v22 + 1;
}
if ( !(((v7 == 0LL) | v8) & 1) )
sub_1800D489C("%llx:%d", &byte_180101040, -7134447194457943511LL, 105LL);
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800B87E8) ----------------------------------------------------
signed __int64 __fastcall sub_1800B87E8(unsigned __int64 a1, int a2, __int64 a3, int a4)
{
__int64 v4; // x9
__int64 v5; // x11
__int64 v6; // x10
int v7; // w10
if ( a3 )
{
for ( LODWORD(v4) = 0; ; LODWORD(v4) = v4 + 1 )
{
v4 = (unsigned int)v4;
v7 = *(_DWORD *)(a3 + 32LL * (unsigned int)v4);
if ( v7 == -1 )
break;
v5 = a3 + 32 * v4;
if ( (((*(_BYTE *)(v5 + 24) == 0) | a4 ^ 1) != 1 || *(_BYTE *)(v5 + 25) && !(a4 & 1)) && (v7 == a2 || v7 == 254) )
{
v6 = a3 + 32 * v4;
if ( *(_QWORD *)(v6 + 8) <= a1 && *(_QWORD *)(v6 + 16) > a1 )
return 1LL;
}
}
}
return 0LL;
}
//----- (00000001800B8874) ----------------------------------------------------
signed __int64 __fastcall sub_1800B8874(signed __int64 a1, int a2, __int64 a3)
{
return sub_1800B85F4(a1, a2, a3, (__int64)qword_180111DC0, (__int64)qword_18010A348);
}
// 18010A348: using guessed type __int64 qword_18010A348[36];
// 180111DC0: using guessed type __int64 qword_180111DC0[4];
//----- (00000001800B8888) ----------------------------------------------------
__int64 __fastcall sub_1800B8888(int *a1, int *a2, int *a3)
{
unsigned int v3; // w8
v3 = MEMORY[0x180119C04];
*a1 = MEMORY[0x180119C04] & 0x3FF;
*a2 = (v3 >> 16) & 0x7F;
*a3 = (unsigned __int16)v3 >> 10;
return (v3 >> 23) & 1;
}
//----- (00000001800B88B0) ----------------------------------------------------
signed __int64 __fastcall sub_1800B88B0(int a1, int **a2)
{
int **v2; // x19
int v3; // w20
unsigned __int64 v4; // x21
int *i; // x23
unsigned int v6; // w24
unsigned int v7; // w25
char v8; // zf
v2 = a2;
v3 = a1;
v4 = 0LL;
for ( i = &dword_180109998; ; i += 2 )
{
if ( v4 >= 0x21 )
return 0xFFFFFFFFLL;
v6 = *i;
if ( (*i & 0x7F) == v3 )
{
v7 = *((unsigned __int16 *)i + 2);
v8 = (v7 & 0xF) == (unsigned int)sub_1800B895C() ? 1 : (v7 & 0xF) == 15;
if ( v8 && (unsigned int)sub_1800B8990() >= (unsigned __int8)(v7 >> 4) )
break;
}
++v4;
}
*v2 = i;
return (v6 >> 7) & 0x7FF;
}
// 180109998: using guessed type int dword_180109998;
//----- (00000001800B895C) ----------------------------------------------------
signed __int64 sub_1800B895C()
{
signed __int64 result; // x0
result = HIDWORD(qword_1801158C8[2152]);
if ( !(_DWORD)result )
{
result = sub_1800B8AD0(19, 0);
HIDWORD(qword_1801158C8[2152]) = result;
}
return result;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B8990) ----------------------------------------------------
signed __int64 sub_1800B8990()
{
signed __int64 result; // x0
result = LODWORD(qword_1801158C8[2153]);
if ( !(_DWORD)result )
{
result = sub_1800B8AD0(18, 0);
LODWORD(qword_1801158C8[2153]) = result;
}
return result;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B89C4) ----------------------------------------------------
__int64 sub_1800B89C4()
{
sub_1800C678C();
return 0LL;
}
// 1800F688C: using guessed type __int64 __fastcall sub_1800F688C(_QWORD);
//----- (00000001800B8AD0) ----------------------------------------------------
signed __int64 __fastcall sub_1800B8AD0(int a1, int a2)
{
int v2; // w19
int v3; // w20
unsigned int i; // w8
__int64 v5; // x23
unsigned __int64 v6; // x24
int v7; // w9
signed __int64 v8; // x20
signed __int64 v9; // x8
__int64 v10; // x19
__int64 v11; // x21
unsigned __int64 v12; // x0
unsigned int v13; // w11
__int64 v14; // x0
unsigned int v15; // w9
unsigned int v16; // w22
int v17; // w10
bool v18; // cf
v2 = a2;
v3 = a1;
for ( i = 0; ; i = v5 + 1 )
{
v7 = qword_180111B08[3 * i];
if ( v7 == 21 )
break;
v5 = i;
if ( v7 == v3 )
{
v6 = *(__int64 *)((char *)&qword_180111B08[3 * i] + 4);
if ( (unsigned __int16)*(__int64 *)((char *)&qword_180111B08[3 * i] + 4) == v2
&& (v3 == 19 || (unsigned int)v6 >> 16 == (unsigned int)sub_1800B895C() || (v6 & 0xFFFF0000) == 983040) )
{
v8 = (v6 >> 32) & 0x7FF;
v9 = (v6 >> 43) & 0x7FF;
if ( (unsigned int)v8 > (unsigned int)v9 )
sub_1800D489C("%llx:%d", &byte_180101040, -2712496162282611829LL, 256LL);
v10 = 0LL;
v11 = qword_180111B08[3 * v5 + 2];
LABEL_13:
v13 = 0;
while ( 1 )
{
v14 = *(_QWORD *)(v11 + 16LL * v13 + 8);
if ( !v14 )
return 0xFFFFFFFFLL;
v15 = *(_DWORD *)(v11 + 16LL * v13);
v16 = v15 & 0xFFF;
++v13;
v17 = v9 - v16;
if ( (unsigned int)v9 >= v16 )
v18 = ((v15 >> 12) & 0xFFF) >= (unsigned int)v9;
else
v18 = 0;
if ( v18 )
{
if ( v16 > (unsigned int)v8 )
{
v12 = sub_1800B9000(v14, (v15 >> 24) & 0x3F, v17 + ((v15 >> 24) & 0x3F), (v15 >> 30) & 1);
LODWORD(v9) = v16 - 1;
v10 |= (v12 << ((unsigned __int8)v16 - BYTE4(v6))) & 0xFFFFFFFF;
goto LABEL_13;
}
return (unsigned int)sub_1800B9000(
v14,
v8 - v16 + ((v15 >> 24) & 0x3F),
v17 + ((v15 >> 24) & 0x3F),
(v15 >> 30) & 1) | (unsigned int)v10;
}
}
}
}
}
return 0xFFFFFFFFLL;
}
// 180101040: using guessed type char byte_180101040;
// 180111B08: using guessed type __int64 qword_180111B08[87];
//----- (00000001800B8C50) ----------------------------------------------------
signed __int64 sub_1800B8C50()
{
signed __int64 result; // x0
result = LODWORD(qword_1801158C8[2152]);
if ( !(_DWORD)result )
{
result = sub_1800B8AD0(17, 0);
LODWORD(qword_1801158C8[2152]) = result;
}
return result;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B8C84) ----------------------------------------------------
signed __int64 __fastcall sub_1800B8C84(int a1, int a2)
{
int v2; // w0
signed __int64 result; // x0
v2 = sub_1800B8AD0(a1, a2);
if ( (unsigned int)(v2 + 1) >= 2 )
result = 3125 * v2 / 0x3E8u + 25 * (unsigned int)sub_1800B8C50() + 25;
else
result = 0xFFFFFFFFLL;
return result;
}
//----- (00000001800B8CDC) ----------------------------------------------------
signed __int64 __fastcall sub_1800B8CDC(unsigned int a1, int a2, int a3)
{
int v3; // w21
unsigned int v4; // w8
int v5; // w24
int v6; // w20
int v7; // w22
bool v8; // zf
bool v9; // zf
int v10; // w19
signed __int64 result; // x0
int v12; // w0
signed __int64 v13; // x8
_DWORD *v14; // [xsp+10h] [xbp-40h]
__int64 v15; // [xsp+18h] [xbp-38h]
v3 = a3;
v15 = 5139240511851214385LL;
if ( a2 )
{
if ( a1 < 0x3B )
{
v4 = *((_DWORD *)qword_180109AA0 + a1);
v5 = *((_DWORD *)qword_180109AA0 + a1) & 0x7FF;
v6 = (v4 >> 18) & 0xF;
v7 = (v4 >> 11) & 0x7F;
if ( v7 == 127 )
v8 = 0;
else
v8 = v5 == 0;
if ( v8 )
v9 = v6 == 0;
else
v9 = 1;
if ( !v9 )
{
v10 = sub_1800B89C4();
if ( !(((unsigned int)sub_1800B8E44(v6, v7) + v10) & 0x80000000) )
{
result = (unsigned int)sub_1800B8E44(v6, v7) + v10;
goto LABEL_20;
}
v13 = 328LL;
LABEL_23:
sub_1800D489C("%llx:%d", &byte_180101040, -2712496162282611829LL, v13);
}
goto LABEL_14;
}
LABEL_19:
result = 0xFFFFFFFFLL;
goto LABEL_20;
}
if ( (unsigned int)sub_1800B88B0(a1, &v14) == -1 )
goto LABEL_19;
v5 = (*v14 >> 7) & 0x7FF;
v6 = (*v14 >> 25) & 0xF;
v7 = (*v14 >> 18) & 0x7F;
LABEL_14:
if ( v3 )
{
v12 = sub_1800B8C84(v6, v7);
if ( v12 != -1 )
v5 = v12;
}
result = (unsigned int)sub_1800B89C4() + v5;
if ( result & 0x80000000 )
{
v13 = 353LL;
goto LABEL_23;
}
LABEL_20:
if ( 5139240511851214385LL != v15 )
sub_1800D4A5C();
return result;
}
// 180101040: using guessed type char byte_180101040;
// 180109AA0: using guessed type __int64 qword_180109AA0[3];
//----- (00000001800B8E44) ----------------------------------------------------
signed __int64 __fastcall sub_1800B8E44(int a1, int a2)
{
int v2; // w19
int v3; // w20
int v4; // w0
signed int v5; // w21
unsigned __int64 i; // x22
unsigned int v7; // w26
bool v8; // zf
char v9; // zf
int v10; // w9
v2 = a2;
v3 = a1;
switch ( a1 )
{
case 9:
v4 = 5;
break;
case 4:
v4 = 4;
break;
case 2:
v4 = 3;
break;
default:
v5 = -1;
goto LABEL_9;
}
v5 = sub_1800B9074(v4);
LABEL_9:
for ( i = 0LL; i < 0x4B; ++i )
{
v7 = dword_180109B8C[i];
if ( ((v7 >> 18) & 0xF) == v3 )
v8 = ((v7 >> 11) & 0x7F) == v2;
else
v8 = 0;
if ( v8 )
{
v9 = ((v7 >> 22) & 0xF) == (unsigned int)sub_1800B895C() ? 1 : (v7 & 0x3C00000) == 62914560;
if ( v9 )
{
if ( v5 == -1 )
{
if ( (unsigned int)sub_1800B8990() >= v7 >> 26 )
return v7 & 0x7FF;
}
else if ( v5 == v7 >> 26 )
{
return v7 & 0x7FF;
}
}
}
}
if ( v5 != -1 )
{
v10 = HIDWORD(qword_1801158C8[2151]);
if ( !(v10 & 0x800000) )
HIDWORD(qword_1801158C8[2151]) = (v3 & 0x3FF | ((v2 & 0x7F) << 16)) & 0xFFFF03FF | ((v5 & 0x3F) << 10) | v10 & 0xFF000000 | 0x800000;
}
return 0xFFFFFFFFLL;
}
// 180109B8C: using guessed type int dword_180109B8C[];
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B8F78) ----------------------------------------------------
char *__fastcall sub_1800B8F78(__int64 a1, unsigned int a2, int a3)
{
int v3; // w19
unsigned int v4; // w20
unsigned int v5; // w8
unsigned __int64 v6; // x9
char *result; // x0
unsigned int v8; // w12
bool v9; // cf
bool v10; // zf
v3 = a3;
v4 = a2;
v5 = sub_1800B8990();
v6 = 0LL;
result = &byte_180109CB9[3];
while ( v6 < 0x30 )
{
*(result - 1);
v8 = (unsigned __int16)(*(_WORD *)(result - 3) >> 8);
*(result - 1);
if ( (unsigned __int8)*(_WORD *)(result - 3) == v3 )
{
v9 = v8 >= v4;
v10 = v8 == v4;
}
else
{
v9 = 1;
v10 = 0;
}
if ( (v10 || !v9)
&& v5 >= ((*(unsigned __int16 *)(result - 3) | ((unsigned __int8)*(result - 1) << 16)) & 0xFF0000u) >> 16 )
{
return result;
}
++v6;
result += 27;
}
return 0LL;
}
//----- (00000001800B9000) ----------------------------------------------------
unsigned __int64 __fastcall sub_1800B9000(__int64 a1, unsigned int a2, unsigned int a3, int a4)
{
__int64 i; // x8
unsigned int v5; // w11
__int64 v6; // x12
unsigned __int64 v7; // x12
for ( i = 0LL; ; i |= v7 << ((unsigned __int8)v5 - (unsigned __int8)a2) )
{
if ( a4 )
{
v5 = a3 >> 6 << 6;
v6 = *(_QWORD *)(a1 + 8LL * (a3 >> 6));
}
else
{
v5 = 32 * (a3 >> 5);
v6 = *(unsigned int *)(a1 + 4LL * (a3 >> 5));
}
v7 = ((1LL << ((unsigned __int8)a3 + 1 - (unsigned __int8)v5)) - 1) & v6;
if ( v5 <= a2 )
break;
a3 = v5 - 1;
}
return (v7 >> ((unsigned __int8)a2 - (unsigned __int8)v5)) | i;
}
//----- (00000001800B9074) ----------------------------------------------------
signed __int64 __fastcall sub_1800B9074(int a1)
{
int v1; // w8
int *v2; // x19
signed __int64 result; // x0
int v4; // [xsp+4h] [xbp-1Ch]
__int64 v5; // [xsp+8h] [xbp-18h]
v1 = a1;
v5 = 5139240511851214385LL;
v4 = 0;
if ( (unsigned int)(a1 - 3) > 2 )
{
v2 = &v4;
}
else
{
v2 = (int *)qword_180111430[a1 - 3];
result = (unsigned int)*v2;
if ( (_DWORD)result )
goto LABEL_6;
}
result = sub_1800B8AD0(20, v1);
*v2 = result;
LABEL_6:
if ( 5139240511851214385LL != v5 )
sub_1800D4A5C();
return result;
}
// 180111430: using guessed type __int64 qword_180111430[3];
//----- (00000001800B9100) ----------------------------------------------------
void __fastcall sub_1800B9100(__int64 a1, _BYTE *a2, int a3, unsigned int a4)
{
unsigned int v4; // w21
int v5; // w22
_BYTE *v6; // x19
__int64 v7; // x20
unsigned int i; // w23
signed __int64 v9; // x23
_QWORD *v10; // x24
unsigned int j; // w25
int v12; // w0
v4 = a4;
v5 = a3;
v6 = a2;
v7 = a1;
for ( i = 0; v5 + i <= v4 && (unsigned int)sub_1800B8AD0(20, v5 + i) != -1; ++i )
;
if ( i )
{
v9 = 4LL * i;
v10 = (_QWORD *)sub_1800EDBF4(v9);
for ( j = 0; v5 + j <= v4; ++j )
{
v12 = sub_1800B8AD0(20, v5 + j);
if ( v12 == -1 )
break;
*((_DWORD *)v10 + j) = v12;
}
sub_1800EC16C(v7, v6, v10, v9);
sub_1800EE010(v10);
}
}
//----- (00000001800B91E0) ----------------------------------------------------
void __fastcall sub_1800B91E0(_BYTE *a1, _BYTE *a2)
{
_BYTE *v2; // x19
_BYTE *v3; // x20
unsigned int v4; // w0
unsigned int v5; // w20
int v6; // w19
const char *v7; // x10
char *v8; // x11
const char *v9; // x8
unsigned int v10; // [xsp+2Ch] [xbp-44h]
unsigned int v11; // [xsp+30h] [xbp-40h]
int v12; // [xsp+34h] [xbp-3Ch]
char v13; // [xsp+38h] [xbp-38h]
unsigned int v14; // [xsp+3Ch] [xbp-34h]
__int64 v15; // [xsp+40h] [xbp-30h]
__int64 v16; // [xsp+48h] [xbp-28h]
v2 = a2;
v3 = a1;
v16 = 5139240511851214385LL;
v10 = 0;
if ( (unsigned int)sub_1800B8888(&v12, (int *)&v11, (int *)&v10) )
{
v7 = "PCPU";
v8 = &byte_180101040;
if ( v12 == 4 )
v8 = "GPU";
if ( v12 != 9 )
v7 = v8;
if ( v12 == 2 )
v9 = "CPU";
else
v9 = v7;
sub_1800D489C(
"Binning for %s sram mode %d not found for current %s sram revision %d\n",
&byte_180101040,
(__int64)v9,
v11,
v9,
v10);
}
if ( !(sub_1800EBDF4(0LL, v3, &v15) & 1) )
sub_1800D489C("%s node not found\n", &byte_180101040, (__int64)v3);
v4 = sub_1800B948C(v15, "voltage-states5", 8, 8, 2u, 1);
sub_1800B96DC(v15, "voltage-states5-extra", 8, 9, v4);
v5 = sub_1800B948C(v15, "voltage-states1", 1, 1, 2u, 1);
sub_1800B96DC(v15, "voltage-states1-extra", 1, 2, v5);
sub_1800D2938(1, v5 - 3, &v13, &v14);
sub_1800EC320(v15, "nominal-performance1", 0x3B9ACA000000uLL / v14);
sub_1800D2938(1, v5 - 4, &v13, &v14);
sub_1800EC320(v15, "boost-performance1", 0x3B9ACA000000uLL / v14);
sub_1800EC320(v15, "total-rails-leakage", 0);
sub_1800B9100(v15, "rosc_cpu", 12, 0xCu);
sub_1800B9100(v15, "rosc_gpu", 6, 0xBu);
if ( v2 )
{
if ( !(sub_1800EBDF4(0LL, v2, &v15) & 1) )
sub_1800D489C("%s node not found\n", &byte_180101040, (__int64)v2);
sub_1800B948C(v15, "perf-states-sram", 3, 4, 0, 0);
v6 = sub_1800B948C(v15, "perf-states", 3, 3, 0, 0);
sub_1800EC320(v15, "perf-state-count", v6);
sub_1800EC320(v15, "gpu-num-perf-states", v6 - 1);
}
if ( 5139240511851214385LL != v16 )
sub_1800D4A5C();
}
// 180101040: using guessed type char byte_180101040;
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800B948C) ----------------------------------------------------
__int64 __fastcall sub_1800B948C(__int64 a1, _BYTE *a2, int a3, int a4, unsigned int a5, int a6)
{
int v6; // w21
unsigned int v7; // w22
int v8; // w23
int v9; // w24
_BYTE *v10; // x19
__int64 v11; // x20
__int64 i; // x28
signed __int64 v13; // x26
__int64 j; // x19
unsigned __int64 v15; // x8
__int64 v16; // x27
unsigned __int64 v17; // x8
__int64 v18; // x10
_DWORD *v19; // x9
signed __int64 v20; // x10
_DWORD *v21; // x10
int v22; // t1
signed __int64 v24; // [xsp+18h] [xbp-88h]
_BYTE *v25; // [xsp+28h] [xbp-78h]
char v26; // [xsp+30h] [xbp-70h]
int v27; // [xsp+34h] [xbp-6Ch]
int v28; // [xsp+38h] [xbp-68h]
unsigned int v29; // [xsp+3Ch] [xbp-64h]
int v30; // [xsp+40h] [xbp-60h]
int v31; // [xsp+44h] [xbp-5Ch]
__int64 v32; // [xsp+48h] [xbp-58h]
v6 = a6;
v7 = a5;
v8 = a4;
v9 = a3;
v10 = a2;
v11 = a1;
v32 = 5139240511851214385LL;
if ( (unsigned int)sub_1800D2938(a3, a5, &v30, &v31) )
{
for ( i = 0LL; (unsigned int)sub_1800D2938(v9, v7 + (unsigned int)i, &v28, &v29); i = (unsigned int)(i + 1) )
{
if ( (_DWORD)i && !v29 || v29 == v31 && (_DWORD)i && v28 == v30 )
goto LABEL_12;
if ( !(unsigned int)sub_1800D2938(v8, v7 + (unsigned int)i, &v27, &v26) )
goto LABEL_29;
}
if ( !(_DWORD)i )
goto LABEL_29;
LABEL_12:
v25 = v10;
v24 = 8LL * (unsigned int)i;
v13 = sub_1800EDBF4(8LL * (unsigned int)i);
for ( j = 0LL; ; j = (unsigned int)(j + 1) )
{
v16 = v7 + (unsigned int)j;
if ( !(sub_1800D2938(v9, v7 + (unsigned int)j, &v28, &v29) & 1) )
break;
LODWORD(v15) = v29;
if ( (_DWORD)j )
{
if ( !v29 )
break;
}
if ( v29 == v31 && (_DWORD)j && v28 == v30 )
break;
if ( (unsigned int)i < (unsigned int)j )
sub_1800D489C("number of states (%d) less than required for %s (%d)\n", &byte_180101040, i, v25, j, v24);
if ( v6 )
v15 = 0x3B9ACA000000uLL / v29;
*(_DWORD *)(v13 + 8LL * (unsigned int)j) = v15;
sub_1800D2938(v8, v7 + j, &v27, &v26);
*(_DWORD *)(v13 + 8LL * (unsigned int)j + 4) = v27;
}
v17 = (unsigned int)j;
while ( v17 >= 2 )
{
v18 = (unsigned int)(v17 - 1);
v19 = (_DWORD *)(v13 + 8LL * (unsigned int)v18);
if ( *(_DWORD *)v13 != *v19 )
break;
v20 = v13 + 8 * v18;
v22 = *(_DWORD *)(v20 + 4);
v21 = (_DWORD *)(v20 + 4);
if ( *(_DWORD *)(v13 + 4) != v22 )
break;
*v19 = 0;
*v21 = 0;
--v17;
v16 = (unsigned int)(v16 - 1);
}
sub_1800EC16C(v11, v25, (_QWORD *)v13, v24);
sub_1800EE010((_QWORD *)v13);
}
else
{
LABEL_29:
v16 = 0LL;
}
if ( 5139240511851214385LL != v32 )
sub_1800D4A5C();
return v16;
}
// 180101040: using guessed type char byte_180101040;
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800B96DC) ----------------------------------------------------
void __fastcall sub_1800B96DC(__int64 a1, _BYTE *a2, int a3, int a4, unsigned int a5)
{
unsigned int v5; // w21
int v6; // w22
int v7; // w23
_BYTE *v8; // x19
__int64 v9; // x20
unsigned int v10; // w25
unsigned int i; // w24
unsigned int v12; // w24
_QWORD *v13; // x25
unsigned int v14; // w26
int v15; // [xsp+Ch] [xbp-64h]
int v16; // [xsp+10h] [xbp-60h]
char v17; // [xsp+14h] [xbp-5Ch]
int v18; // [xsp+18h] [xbp-58h]
int v19; // [xsp+1Ch] [xbp-54h]
int v20; // [xsp+20h] [xbp-50h]
int v21; // [xsp+24h] [xbp-4Ch]
__int64 v22; // [xsp+28h] [xbp-48h]
v5 = a5;
v6 = a4;
v7 = a3;
v8 = a2;
v9 = a1;
v22 = 5139240511851214385LL;
if ( (unsigned int)sub_1800D2938(a4, a5, &v19, &v17) && (unsigned int)sub_1800D2938(v7, v5, &v20, &v21) )
{
v10 = 0;
for ( i = v5; (unsigned int)sub_1800D2938(v7, i, &v16, &v18); ++i )
{
if ( !(sub_1800D2938(v6, i, &v15, &v17) & 1) )
v15 = v19;
if ( v18 != v21 || v16 != v20 || v15 != v19 )
++v10;
}
if ( v10 )
{
v12 = 4 * v10;
v13 = (_QWORD *)sub_1800EDBF4(4LL * v10);
v14 = 0;
while ( (unsigned int)sub_1800D2938(v7, v5, &v16, &v18) )
{
if ( !(sub_1800D2938(v6, v5, &v15, &v17) & 1) )
v15 = v19;
if ( v18 != v21 || v16 != v20 || v15 != v19 )
*((_DWORD *)v13 + v14++) = v5;
++v5;
}
sub_1800EC16C(v9, v8, v13, v12);
sub_1800EE010(v13);
}
}
if ( 5139240511851214385LL != v22 )
sub_1800D4A5C();
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800B98B4) ----------------------------------------------------
void sub_1800B98B4()
{
++LODWORD(qword_1801158C8[2155]);
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B98C8) ----------------------------------------------------
__int64 __fastcall sub_1800B98C8(__int64 result, int a2)
{
__int64 v2; // x11
_DWORD *v3; // x8
v2 = LODWORD(qword_1801158C8[2155]);
v3 = (_DWORD *)(MEMORY[0x180119C38] + 8 * v2);
*v3 = result - MEMORY[0x180119C30];
v3[1] = a2;
LODWORD(qword_1801158C8[2155]) = v2 + 1;
return result;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800B98F8) ----------------------------------------------------
signed __int64 sub_1800B98F8()
{
signed __int64 result; // x0
__int64 v1; // [xsp+0h] [xbp-40h]
__int64 v2; // [xsp+8h] [xbp-38h]
__int64 v3; // [xsp+10h] [xbp-30h]
int v4; // [xsp+1Ch] [xbp-24h]
_DWORD *v5; // [xsp+20h] [xbp-20h]
__int64 v6; // [xsp+28h] [xbp-18h]
v6 = 5139240511851214385LL;
if ( !(sub_1800EBDF4(0LL, "arm-io/pmgr", &v3) & 1) )
sub_1800D489C("arm-io/pmgr not found\n", &byte_180101040, v1);
if ( !(sub_1800EBDF4(0LL, "arm-io", &v2) & 1) )
sub_1800D489C("arm-io not found\n", &byte_180101040, v1);
MEMORY[0x180119C84] = 0;
if ( (unsigned int)sub_1800EC0DC(v3, "optional-bridge-mask", &v5, &v4) && v4 == 4 )
MEMORY[0x180119C84] = *v5;
sub_1800BA258(v3, "devices", (_QWORD *)0x180119C48LL, (_DWORD *)0x180119C74LL);
sub_1800BA258(v3, "ps-regs", (_QWORD *)0x180119C40LL, (_DWORD *)0x180119C70LL);
MEMORY[0x180119C74] /= 0x30u;
MEMORY[0x180119C70] /= 0xCu;
sub_1800BA258(v3, "bridge-reg-index", &v5, &v4);
MEMORY[0x180119C80] = *v5;
MEMORY[0x180119C50] = 0LL;
MEMORY[0x180119C58] = 0LL;
MEMORY[0x180119C68] = 0LL;
MEMORY[0x180119C60] = 0LL;
sub_1800BA258(v3, "reg", (_QWORD *)0x180119C58LL, (_DWORD *)0x180119C78LL);
result = sub_1800BA258(v2, "ranges", (_QWORD *)0x180119C60LL, (_DWORD *)0x180119C7CLL);
MEMORY[0x180119C78] >>= 4;
MEMORY[0x180119C7C] /= 0x18u;
if ( 5139240511851214385LL != v6 )
sub_1800D4A5C();
return result;
}
// 180101040: using guessed type char byte_180101040;
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800B9AA4) ----------------------------------------------------
__int64 __fastcall sub_1800B9AA4(_BYTE *a1)
{
_BYTE *v1; // x19
__int64 v2; // x8
int v3; // w20
unsigned int *v4; // x8
unsigned int v5; // w21
__int64 result; // x0
__int64 v7; // [xsp+28h] [xbp-38h]
__int64 v8; // [xsp+30h] [xbp-30h]
__int64 v9; // [xsp+38h] [xbp-28h]
v1 = a1;
v9 = 5139240511851214385LL;
if ( *a1 & 0x10 )
{
result = 0LL;
}
else
{
v2 = (unsigned __int8)a1[11];
if ( (unsigned int)v2 >= MEMORY[0x180119C70] )
sub_1800D489C("pmgr %s %x use wrong ps group\n", &byte_180101040, (__int64)(a1 + 32), (unsigned __int8)a1[3]);
v3 = (unsigned __int8)a1[10];
if ( !((1LL << v3) & *(unsigned int *)(MEMORY[0x180119C40] + 12 * v2 + 8)) )
sub_1800D489C("pmgr %s %x use forbidden ps index\n", &byte_180101040, (__int64)(a1 + 32), (unsigned __int8)a1[3]);
v4 = (unsigned int *)(MEMORY[0x180119C40] + 12 * v2);
v5 = v4[1];
if ( !(sub_1800BA2A0(*v4, &v8, &v7) & 1) )
sub_1800D489C(
"pmgr %s %x use a ps group with invalid mapping\n",
&byte_180101040,
(__int64)(v1 + 32),
(unsigned __int8)v1[3]);
result = v8 + v5 + 8 * v3;
if ( result + 8 >= (unsigned __int64)(v7 + v8) )
sub_1800D489C(
"pmgr %s %x use a PS address %p outside the ps mapping 0x%llx size 0x%llx\n",
&byte_180101040,
(__int64)(v1 + 32),
(unsigned __int8)v1[3],
v8 + v5 + 8 * v3,
v8,
v7 + v8);
}
if ( 5139240511851214385LL != v9 )
sub_1800D4A5C();
return result;
}
// 180101040: using guessed type char byte_180101040;
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800B9C08) ----------------------------------------------------
// write access to const memory has been detected, the output may be wrong!
void __fastcall sub_1800B9C08(int a1, int a2)
{
int v2; // w20
__int64 v3; // x1
__int64 v4; // x2
__int64 v5; // x3
__int64 v6; // x4
__int64 v7; // x5
__int64 v8; // x6
__int64 v9; // x7
int v10; // w22
__int64 v11; // x8
__int64 v12; // x23
signed __int64 v13; // x25
unsigned __int64 v14; // x21
__int64 v15; // x8
unsigned __int64 v16; // x9
unsigned __int64 v17; // x9
unsigned __int64 v18; // x10
signed __int64 v19; // x8
signed __int64 v20; // x12
unsigned __int64 v21; // x20
signed __int64 v22; // x24
unsigned __int64 v23; // x1
unsigned int i; // w22
unsigned __int64 v25; // x21
unsigned int *v26; // x0
unsigned int *v27; // x20
int v28; // w9
__int64 v29; // x0
unsigned int v30; // w9
__int64 *v31; // x24
__int64 v32; // x8
int v33; // w9
unsigned int j; // w23
int v35; // w10
signed __int64 v36; // x22
__int64 v37; // x26
__int64 v38; // x24
__int64 v39; // x1
__int64 v40; // x2
__int64 v41; // x3
__int64 v42; // x4
__int64 v43; // x5
__int64 v44; // x6
__int64 v45; // x7
__int64 v46; // x5
__int64 v47; // x6
__int64 v48; // x7
int v49; // w20
unsigned __int64 v50; // x19
signed int v51; // w19
_DWORD *v52; // x0
__int64 v53; // [xsp+0h] [xbp-150h]
__int64 v54; // [xsp+10h] [xbp-140h]
unsigned int v55; // [xsp+30h] [xbp-120h]
int v56; // [xsp+34h] [xbp-11Ch]
char v57; // [xsp+38h] [xbp-118h]
int v58; // [xsp+3Ch] [xbp-114h]
__int64 v59; // [xsp+40h] [xbp-110h]
__int64 v60; // [xsp+48h] [xbp-108h]
__int64 v61; // [xsp+50h] [xbp-100h]
char v62; // [xsp+58h] [xbp-F8h]
int v63; // [xsp+98h] [xbp-B8h]
__int64 v64; // [xsp+A0h] [xbp-B0h]
__int64 v65; // [xsp+A8h] [xbp-A8h]
char v66; // [xsp+B0h] [xbp-A0h]
char v67; // [xsp+B1h] [xbp-9Fh]
int v68; // [xsp+B8h] [xbp-98h]
__int64 v69; // [xsp+C0h] [xbp-90h]
__int64 v70; // [xsp+C8h] [xbp-88h]
char v71; // [xsp+D0h] [xbp-80h]
char v72; // [xsp+D1h] [xbp-7Fh]
int v73; // [xsp+D8h] [xbp-78h]
__int64 v74; // [xsp+E0h] [xbp-70h]
__int64 v75; // [xsp+E8h] [xbp-68h]
__int16 v76; // [xsp+F0h] [xbp-60h]
__int64 v77; // [xsp+F8h] [xbp-58h]
v2 = a2;
v77 = 5139240511851214385LL;
v56 = a1;
sub_1800F0620((signed __int64 *)0x180119C40LL, 0, 0xA8uLL);
dword_180114578 = v2;
sub_1800B98F8();
v10 = MEMORY[0x180119C74];
v11 = (unsigned int)(MEMORY[0x180119C74] - 1);
v12 = (signed int)v11;
v13 = 16 * ((v11 << 32 >> 31) + (signed int)v11) | 4;
v14 = 0xFFFFLL;
while ( !(--v10 & 0x80000000) )
{
v15 = MEMORY[0x180119C48];
v16 = *(unsigned __int8 *)(MEMORY[0x180119C48] + 48LL * v10 + 3);
if ( v14 <= v16 )
{
sub_1800EF260(
(__int64)"pmgr %s %x id greater than next id\n",
v3,
v4,
v5,
v6,
v7,
v8,
v9,
MEMORY[0x180119C48] + 48LL * v10 + 32);
v15 = MEMORY[0x180119C48];
v16 = *(unsigned __int8 *)(MEMORY[0x180119C48] + 48LL * v10 + 3);
}
v14 = v16;
v17 = *(unsigned __int8 *)(v15 + 48LL * v10 + 24);
if ( *(_BYTE *)(v15 + 48LL * v10 + 24) )
{
v18 = 0LL;
v19 = v15 + 48 * v12 + 28;
while ( v18 < v17 )
{
v20 = 1LL << *(_BYTE *)(v19 + v18++);
if ( !((unsigned int)v20 & MEMORY[0x180119C84]) )
{
sub_1800BA39C(6443605192LL, v14);
break;
}
}
}
if ( sub_1800BA3EC(6443605192LL, v14) )
{
v21 = 0LL;
v22 = v13;
while ( v21 <= 3 )
{
v23 = *(unsigned __int8 *)(MEMORY[0x180119C48] + v22);
if ( (unsigned int)v23 >= (unsigned int)v14 )
sub_1800D489C(
"pmgr %s %x has one child with an ID %x lower than itself\n",
&byte_180101040,
MEMORY[0x180119C48] + 48LL * v10 + 32,
*(unsigned __int8 *)(MEMORY[0x180119C48] + 48LL * v10 + 3));
sub_1800BA39C(6443605192LL, v23);
++v21;
++v22;
}
}
--v12;
v13 -= 48LL;
}
for ( i = 0; i < MEMORY[0x180119C74]; ++i )
{
v25 = *(unsigned __int8 *)(MEMORY[0x180119C48] + 48LL * i + 3);
if ( sub_1800BA3EC(6443605192LL, v25) )
{
v26 = (unsigned int *)sub_1800B9AA4((_BYTE *)(MEMORY[0x180119C48] + 48LL * i));
v27 = v26;
if ( v26 )
{
v28 = *v26 & 0xF;
if ( v28 != 15 )
{
if ( v28 == 4 )
{
v29 = 6443605160LL;
}
else
{
if ( v28 )
sub_1800D489C(
"pmgr %s %x ps(%p) has an invalid value %x\n",
&byte_180101040,
MEMORY[0x180119C48] + 48LL * i + 32,
*(unsigned __int8 *)(MEMORY[0x180119C48] + 48LL * i + 3),
v26,
*v26);
v29 = 6443605128LL;
}
sub_1800BA39C(v29, v25);
*v27 |= 0xFu;
while ( ~*v27 & 0xF0 )
;
}
}
}
}
if ( sub_1800EBDF4(0LL, "arm-io/pmgr", &v61) & 1 )
{
v30 = 0;
v31 = qword_1801121F8;
while ( 1 )
{
v49 = MEMORY[0x180119C74];
if ( v30 >= MEMORY[0x180119C74] )
break;
v32 = MEMORY[0x180119C48];
v55 = v30;
v33 = *(unsigned __int8 *)(MEMORY[0x180119C48] + 48LL * v30 + 24);
if ( v33 )
{
for ( j = 0; j < (unsigned __int8)v33; ++j )
{
v35 = *(unsigned __int8 *)(v32 + 48LL * v55 + j + 28);
v36 = 1LL << v35;
if ( !(MEMORY[0x180119C84] & (unsigned __int64)(1LL << v35)) )
{
v37 = (__int64)v31;
if ( !(sub_1800BA2A0(MEMORY[0x180119C80] + v35, &v60, &v59) & 1) )
sub_1800D489C(
"pmgr %s %x bridge %d doesn't exist\n",
&byte_180101040,
MEMORY[0x180119C48] + 48LL * v55 + 32,
*(unsigned __int8 *)(MEMORY[0x180119C48] + 48LL * v55 + 3),
*(unsigned __int8 *)(MEMORY[0x180119C48] + 48LL * v55 + j + 28));
v38 = v60;
LODWORD(qword_1801158C8[2155]) = 0;
MEMORY[0x180119C30] = v38;
MEMORY[0x180119C38] = 0LL;
v63 = v56;
v64 = 0LL;
v65 = v38 - 1;
v66 = 1;
v67 = 1;
v68 = v56;
v69 = v59 + v38;
v70 = -1LL;
v71 = 1;
v72 = 1;
v73 = -1;
v74 = -1LL;
v75 = -1LL;
v76 = 0;
sub_1800B85F4((signed __int64)sub_1800B98B4, v56, (__int64)&v63, v37, (__int64)qword_18010C428);
if ( LODWORD(qword_1801158C8[2155]) )
{
v54 = LODWORD(qword_1801158C8[2155]);
sub_1800EF260(
(__int64)"Bridge %s 0x%llx %d tunables found\n",
v39,
v40,
v41,
v42,
v43,
v44,
v45,
MEMORY[0x180119C48] + 48LL * v55 + 32);
v31 = (__int64 *)v37;
sub_1800B85F4(0LL, v56, (__int64)&v63, v37, (__int64)qword_18010C428);
MEMORY[0x180119C38] = sub_1800EDBF4(8LL * LODWORD(qword_1801158C8[2155]));
if ( !MEMORY[0x180119C38] )
sub_1800D489C("pmgr: not enough space for tunable\n", &byte_180101040, v53);
LODWORD(qword_1801158C8[2155]) = 0;
sub_1800B85F4((signed __int64)sub_1800B98C8, v56, (__int64)&v63, v37, (__int64)qword_18010C428);
sub_1800EFC74(
&v62,
0x40uLL,
0LL,
0x40uLL,
(__int64)"bridge-settings-%d",
v46,
v47,
v48,
*(unsigned __int8 *)(MEMORY[0x180119C48] + 48LL * v55 + j + 28));
sub_1800EC16C(v61, &v62, MEMORY[0x180119C38], 8 * LODWORD(qword_1801158C8[2155]));
sub_1800EE010(MEMORY[0x180119C38]);
}
else
{
sub_1800EF260(
(__int64)"Bridge %s 0x%llx no tunables found\n",
v39,
v40,
v41,
v42,
v43,
v44,
v45,
MEMORY[0x180119C48] + 48LL * v55 + 32);
sub_1800EC0DC(v61, "optional-bridge-mask", &v62, &v57);
v58 = **(_DWORD **)&v62 | v36;
sub_1800EC16C(v61, "optional-bridge-mask", &v58, 4u);
v31 = (__int64 *)v37;
}
v32 = MEMORY[0x180119C48];
LOBYTE(v33) = *(_BYTE *)(MEMORY[0x180119C48] + 48LL * v55 + 24);
}
}
}
v30 = v55 + 1;
}
}
else
{
v49 = MEMORY[0x180119C74];
}
while ( !(--v49 & 0x80000000) )
{
v50 = *(unsigned __int8 *)(MEMORY[0x180119C48] + 48LL * v49 + 3);
if ( sub_1800BA3EC(6443605128LL, v50) )
{
v51 = 0;
LABEL_50:
v52 = (_DWORD *)sub_1800B9AA4((_BYTE *)(MEMORY[0x180119C48] + 48LL * v49));
if ( v52 )
{
if ( !(*v52 & 0xF) )
sub_1800D489C(
"pmgr %s %x ps should be enabled\n",
&byte_180101040,
MEMORY[0x180119C48] + 48LL * v49 + 32,
*(unsigned __int8 *)(MEMORY[0x180119C48] + 48LL * v49 + 3),
v54);
*v52 = *v52 & 0xFFFFFFF0 | v51;
while ( (*v52 & 0xF0) != 16 * v51 )
;
}
}
else if ( sub_1800BA3EC(6443605160LL, v50) )
{
v51 = 4;
goto LABEL_50;
}
}
if ( 5139240511851214385LL != v77 )
sub_1800D4A5C();
}
// 1800B9C74: write access to const memory at 180114578 has been detected
// 180101040: using guessed type char byte_180101040;
// 18010C428: using guessed type __int64 qword_18010C428[4];
// 1801121F8: using guessed type __int64 qword_1801121F8[2];
// 180114578: using guessed type int dword_180114578;
// 180114C90: using guessed type __int64 qword_180114C90;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800BA258) ----------------------------------------------------
signed __int64 __fastcall sub_1800BA258(__int64 a1, _BYTE *a2, _QWORD *a3, _DWORD *a4)
{
__int64 v4; // x19
signed __int64 result; // x0
v4 = (__int64)a2;
*a4 = 0;
result = sub_1800EC0DC(a1, a2, a3, a4);
if ( !(result & 1) )
sub_1800D489C("Node %s not found\n", &byte_180101040, v4);
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800BA2A0) ----------------------------------------------------
signed __int64 __fastcall sub_1800BA2A0(unsigned int a1, _QWORD *a2, _QWORD *a3)
{
__int64 v3; // x9
unsigned __int64 v5; // x8
unsigned int *v6; // x12
__int64 *v7; // x13
unsigned __int64 v8; // x16
__int64 v9; // x14
unsigned __int64 v10; // x16
__int64 v11; // x8
if ( MEMORY[0x180119C78] <= a1 )
return 0LL;
if ( MEMORY[0x180119C50] )
{
*a2 = *(unsigned int *)(MEMORY[0x180119C50] + 8LL * a1);
v3 = *(unsigned int *)(MEMORY[0x180119C50] + 8LL * a1 + 4);
}
else
{
*a2 = *(_QWORD *)(MEMORY[0x180119C58] + 16LL * a1);
v3 = *(_QWORD *)(MEMORY[0x180119C58] + 16LL * a1 + 8);
}
v5 = 0LL;
*a3 = v3;
v6 = (unsigned int *)(MEMORY[0x180119C68] + 4LL);
v7 = (__int64 *)(MEMORY[0x180119C60] + 8LL);
while ( v5 < MEMORY[0x180119C7C] )
{
if ( MEMORY[0x180119C68] )
{
v8 = *(v6 - 1);
v9 = *a2 - v8;
if ( *a2 >= v8 && *a2 < (unsigned __int64)(v6[1] + (unsigned int)v8) )
{
v11 = *v6;
LABEL_18:
*a2 = v9 + v11;
return 1LL;
}
}
if ( MEMORY[0x180119C60] )
{
v10 = *(v7 - 1);
v9 = *a2 - v10;
if ( *a2 >= v10 && *a2 < v7[1] + v10 )
{
v11 = *v7;
goto LABEL_18;
}
}
++v5;
v6 += 3;
v7 += 3;
}
return 1LL;
}
//----- (00000001800BA39C) ----------------------------------------------------
__int64 __fastcall sub_1800BA39C(__int64 result, unsigned __int64 a2)
{
if ( a2 >= 0x100 )
sub_1800D489C("pmgr_dynamic_tunables_set_bit %d\n", &byte_180101040, a2);
*(_QWORD *)(result + ((a2 >> 3) & 0x1FFFFFFFFFFFFFF8LL)) |= 1LL << (a2 & 0x3F);
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800BA3EC) ----------------------------------------------------
bool __fastcall sub_1800BA3EC(__int64 a1, unsigned __int64 a2)
{
if ( a2 >= 0x100 )
sub_1800D489C("pmgr_dynamic_tunables_get_bit %d\n", &byte_180101040, a2);
return (*(_QWORD *)(a1 + ((a2 >> 3) & 0x1FFFFFFFFFFFFFF8LL)) & (1LL << (a2 & 0x3F))) != 0;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800BA43C) ----------------------------------------------------
__int64 __fastcall sub_1800BA43C(unsigned __int16 a1, unsigned __int16 a2)
{
__int64 result; // x0
MEMORY[0x206500004] = 0;
result = a1 | ((unsigned int)a2 << 16);
MEMORY[0x206500008] = result;
MEMORY[0x206500000] = 3;
return result;
}
//----- (00000001800BA5EC) ----------------------------------------------------
signed __int64 *__fastcall sub_1800BA5EC(signed __int64 *result, unsigned __int64 a2, __int64 a3, int a4)
{
int v4; // w23
__int64 v5; // x19
unsigned __int64 v6; // x22
__int64 v7; // x20
__int64 v8; // x25
_DWORD *v9; // x21
unsigned __int64 *v10; // x26
signed __int64 v11; // x8
__int64 v12; // x9
signed __int64 v13; // x8
__int64 v14; // x9
v4 = a4;
v5 = a3;
v6 = a2;
v7 = (__int64)result;
v8 = (unsigned int)result;
v9 = (_DWORD *)(168LL * (unsigned int)result + 6443605232LL);
v10 = (unsigned __int64 *)(168LL * (unsigned int)result + 6443605240LL);
if ( !*(_DWORD *)(168LL * (unsigned int)result + 0x180119CF0LL) )
goto LABEL_11;
if ( (*(_QWORD *)(168LL * (unsigned int)result + 0x180119CF8LL) ^ a2) >= 0x400
|| *(_DWORD *)(168LL * (unsigned int)result + 0x180119D00LL) != a4 )
{
result = sub_1800BA730((__int64)result, 168LL * (unsigned int)result + 6443605232LL);
}
if ( *v9 )
{
v11 = 168 * v8 + 6443605232LL;
v12 = *(unsigned int *)(168 * v8 + 0x180119D14LL);
*(_QWORD *)(v11 + 8 * v12 + 40) = v5;
*(_DWORD *)(v11 + ((unsigned int)v12 & 0xFFFFFFFC) + 20) |= ((v6 >> 2) & 0xFF) << 8 * ((unsigned __int8)v12 & 3u);
LODWORD(v12) = *(_DWORD *)(168 * v8 + 0x180119D14LL) + 1;
*(_DWORD *)(v11 + 36) = v12;
if ( (_DWORD)v12 == 16 )
result = sub_1800BA730(v7, (__int64)v9);
}
else
{
LABEL_11:
*v9 = 1;
*v10 = v6;
v13 = 168 * v8 + 6443605232LL;
*(_DWORD *)(v13 + 16) = v4;
*(_DWORD *)(v13 + 4LL * *(unsigned int *)(168 * v8 + 0x180119D14LL) + 20) = ((v6 >> 2) & 0xFF) << 8 * (*(_DWORD *)(168 * v8 + 0x180119D14LL) & 3u);
v14 = *(unsigned int *)(168 * v8 + 0x180119D14LL);
*(_QWORD *)(v13 + 8 * v14 + 40) = v5;
*(_DWORD *)(v13 + 36) = v14 + 1;
}
return result;
}
//----- (00000001800BA730) ----------------------------------------------------
signed __int64 *__fastcall sub_1800BA730(__int64 a1, __int64 a2)
{
signed __int64 *v2; // x19
unsigned int v3; // w10
unsigned int v4; // w11
__int64 v5; // x12
int v6; // w13
unsigned int i; // w13
signed __int64 v8; // x11
int v9; // w14
int v10; // w11
__int64 v11; // x12
unsigned int j; // w10
signed __int64 v13; // x11
signed __int64 v14; // x11
__int64 v15; // t1
__int64 v16; // x15
int v17; // w16
int v18; // w11
__int64 v19; // x13
int v20; // w14
v2 = (signed __int64 *)a2;
v3 = 0;
v4 = ((unsigned int)(*(_QWORD *)(a2 + 8) >> 10) << 6) & 0xFFFFFFFD | 2 * (*(_DWORD *)(a2 + 16) & 1) | (4 * *(_DWORD *)(a2 + 36) + 60) & 0x3C | 1;
v5 = *(_QWORD *)(8LL * (unsigned int)a1 + 0x18011A260LL);
v6 = *(_DWORD *)(4LL * (unsigned int)a1 + 0x18011A23CLL);
*(_DWORD *)(4LL * (unsigned int)a1 + 0x18011A23CLL) = v6 + 1;
for ( i = 4 * v6; ; i = 4 * v9 )
{
*(_DWORD *)(v5 + i) = v4;
if ( v3 > (unsigned int)(*(_DWORD *)(a2 + 36) - 1) >> 2 )
break;
v8 = a2 + 4LL * v3++;
v4 = *(_DWORD *)(v8 + 20);
v5 = *(_QWORD *)(8LL * (unsigned int)a1 + 0x18011A260LL);
v9 = *(_DWORD *)(4LL * (unsigned int)a1 + 0x18011A23CLL);
*(_DWORD *)(4LL * (unsigned int)a1 + 0x18011A23CLL) = v9 + 1;
}
if ( *(_DWORD *)(a2 + 16) )
{
v10 = *(_DWORD *)(4LL * (unsigned int)a1 + 0x18011A23CLL);
if ( v10 & 1 )
{
v11 = *(_QWORD *)(8LL * (unsigned int)a1 + 0x18011A260LL);
*(_DWORD *)(4LL * (unsigned int)a1 + 0x18011A23CLL) = v10 + 1;
*(_DWORD *)(v11 + (unsigned int)(4 * v10)) = -559038737;
}
}
for ( j = 0; j < *(_DWORD *)(a2 + 36); ++j )
{
v13 = a2 + 8LL * j;
v15 = *(_QWORD *)(v13 + 40);
v14 = v13 + 40;
v16 = *(_QWORD *)(8LL * (unsigned int)a1 + 0x18011A260LL);
v17 = *(_DWORD *)(4LL * (unsigned int)a1 + 0x18011A23CLL);
*(_DWORD *)(4LL * (unsigned int)a1 + 0x18011A23CLL) = v17 + 1;
*(_DWORD *)(v16 + (unsigned int)(4 * v17)) = v15;
if ( *(_DWORD *)(a2 + 16) )
{
v18 = *(_DWORD *)(v14 + 4);
v19 = *(_QWORD *)(8LL * (unsigned int)a1 + 0x18011A260LL);
v20 = *(_DWORD *)(4LL * (unsigned int)a1 + 0x18011A23CLL);
*(_DWORD *)(4LL * (unsigned int)a1 + 0x18011A23CLL) = v20 + 1;
*(_DWORD *)(v19 + (unsigned int)(4 * v20)) = v18;
}
}
sub_1800BAA8C(a1);
return sub_1800F0620(v2, 0, 0xA8uLL);
}
//----- (00000001800BA890) ----------------------------------------------------
__int64 __fastcall sub_1800BA890(signed __int64 *a1, unsigned __int64 a2, __int64 a3, __int64 a4, int a5, int a6)
{
int v6; // w22
int v7; // w23
__int64 v8; // x21
__int64 v9; // x20
unsigned __int64 v10; // x24
__int64 v11; // x19
__int64 v12; // x9
int v13; // w10
int v14; // w0
__int64 v15; // x8
int v16; // w9
int v17; // w9
__int64 v18; // x10
__int64 v19; // x11
__int64 v20; // x11
int v21; // w12
__int64 v22; // x9
__int64 v23; // x10
__int64 v24; // x9
signed __int64 v25; // x10
int v26; // w11
__int64 v27; // x8
v6 = a6;
v7 = a5;
v8 = a4;
v9 = a3;
v10 = a2;
v11 = (__int64)a1;
sub_1800BAA6C(a1);
if ( !v7 && !LOBYTE(qword_1801158C8[2349]) )
sub_1800D489C("%llx:%d", &byte_180101040, -1120701505042910129LL, 218LL);
v12 = *(_QWORD *)(8LL * (unsigned int)v11 + 0x18011A260LL);
v13 = *(_DWORD *)(4LL * (unsigned int)v11 + 0x18011A23CLL);
*(_DWORD *)(4LL * (unsigned int)v11 + 0x18011A23CLL) = v13 + 1;
*(_DWORD *)(v12 + (unsigned int)(4 * v13)) = (v10 >> 4) & 0xFFFFFFC0 | 32 * (v6 & 1) | 2;
v14 = sub_1800C783C(v7 != 0, v7, v10);
v15 = *(_QWORD *)(8LL * (unsigned int)v11 + 0x18011A260LL);
v16 = *(_DWORD *)(4LL * (unsigned int)v11 + 0x18011A23CLL);
*(_DWORD *)(4LL * (unsigned int)v11 + 0x18011A23CLL) = v16 + 1;
*(_DWORD *)(v15 + (unsigned int)(4 * v16)) = v14;
if ( v6 )
{
v17 = *(_DWORD *)(4LL * (unsigned int)v11 + 0x18011A23CLL);
if ( v17 & 1 )
{
v18 = *(_QWORD *)(8LL * (unsigned int)v11 + 0x18011A260LL);
*(_DWORD *)(4LL * (unsigned int)v11 + 0x18011A23CLL) = v17 + 1;
*(_DWORD *)(v18 + (unsigned int)(4 * v17)) = -559038737;
v17 = *(_DWORD *)(4LL * (unsigned int)v11 + 0x18011A23CLL);
}
v19 = *(_QWORD *)(8LL * (unsigned int)v11 + 0x18011A260LL);
*(_DWORD *)(4LL * (unsigned int)v11 + 0x18011A23CLL) = v17 + 1;
*(_DWORD *)(v19 + (unsigned int)(4 * v17)) = v8;
v20 = *(_QWORD *)(8LL * (unsigned int)v11 + 0x18011A260LL);
v21 = *(_DWORD *)(4LL * (unsigned int)v11 + 0x18011A23CLL);
*(_DWORD *)(4LL * (unsigned int)v11 + 0x18011A23CLL) = v21 + 1;
*(_DWORD *)(v20 + (unsigned int)(4 * v21)) = HIDWORD(v8);
v22 = *(_QWORD *)(8LL * (unsigned int)v11 + 0x18011A260LL);
LODWORD(v20) = *(_DWORD *)(4LL * (unsigned int)v11 + 0x18011A23CLL);
*(_DWORD *)(4LL * (unsigned int)v11 + 0x18011A23CLL) = v20 + 1;
*(_DWORD *)(v22 + (unsigned int)(4 * v20)) = v9;
v23 = *(_QWORD *)(8LL * (unsigned int)v11 + 0x18011A260LL);
LODWORD(v20) = *(_DWORD *)(4LL * (unsigned int)v11 + 0x18011A23CLL);
*(_DWORD *)(4LL * (unsigned int)v11 + 0x18011A23CLL) = v20 + 1;
*(_DWORD *)(v23 + (unsigned int)(4 * v20)) = HIDWORD(v9);
}
else
{
v24 = *(_QWORD *)(8LL * (unsigned int)v11 + 0x18011A260LL);
v25 = 4LL * (unsigned int)v11 + 6443606576LL;
v26 = *(_DWORD *)(4LL * (unsigned int)v11 + 0x18011A23CLL);
*(_DWORD *)(v25 + 12) = v26 + 1;
*(_DWORD *)(v24 + (unsigned int)(4 * v26)) = v8;
v27 = *(_QWORD *)(8LL * (unsigned int)v11 + 0x18011A260LL);
LODWORD(v24) = *(_DWORD *)(4LL * (unsigned int)v11 + 0x18011A23CLL);
*(_DWORD *)(v25 + 12) = v24 + 1;
*(_DWORD *)(v27 + (unsigned int)(4 * v24)) = v9;
}
return sub_1800BAA8C(v11);
}
// 180101040: using guessed type char byte_180101040;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800BAA6C) ----------------------------------------------------
signed __int64 *__fastcall sub_1800BAA6C(signed __int64 *result)
{
if ( *(_DWORD *)(168LL * (unsigned int)result + 0x180119CF0LL) )
result = sub_1800BA730((__int64)result, 168LL * (unsigned int)result + 6443605232LL);
return result;
}
//----- (00000001800BAA8C) ----------------------------------------------------
__int64 __fastcall sub_1800BAA8C(__int64 result)
{
__int64 v1; // x29
__int64 v2; // x30
if ( (unsigned __int64)(unsigned int)(4 * *(_DWORD *)(4LL * (unsigned int)result + 0x18011A23CLL)) >= *(_QWORD *)(8LL * (unsigned int)result + 0x18011A2A0LL) )
sub_1800D489C("%llx:%d", &byte_180101040, -1120701505042910129LL, 67LL, v1, v2);
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800BAB44) ----------------------------------------------------
__int64 __fastcall sub_1800BAB44(signed __int64 *a1, unsigned int a2)
{
unsigned __int64 v2; // x19
__int64 v3; // x10
int v4; // w11
signed __int64 *v6; // x20
v6 = a1;
v2 = (unsigned int)sub_1800D389C(6) * (unsigned __int64)a2 / 0xF4240;
sub_1800BAA6C(v6);
v3 = *(_QWORD *)(8LL * (unsigned int)v6 + 0x18011A260LL);
v4 = *(_DWORD *)(4LL * (unsigned int)v6 + 0x18011A23CLL);
*(_DWORD *)(4LL * (unsigned int)v6 + 0x18011A23CLL) = v4 + 1;
*(_DWORD *)(v3 + (unsigned int)(4 * v4)) = ((_DWORD)v2 << 6) | 4;
return sub_1800BAA8C((__int64)v6);
}
//----- (00000001800BAB80) ----------------------------------------------------
__int64 __fastcall sub_1800BAB80(signed __int64 *a1)
{
__int64 v1; // x19
__int64 v2; // x9
int v3; // w10
v1 = (__int64)a1;
sub_1800BAA6C(a1);
v2 = *(_QWORD *)(8LL * (unsigned int)v1 + 0x18011A260LL);
v3 = *(_DWORD *)(4LL * (unsigned int)v1 + 0x18011A23CLL);
*(_DWORD *)(4LL * (unsigned int)v1 + 0x18011A23CLL) = v3 + 1;
*(_DWORD *)(v2 + (unsigned int)(4 * v3)) = 68;
return sub_1800BAA8C(v1);
}
//----- (00000001800BABD0) ----------------------------------------------------
__int64 __fastcall sub_1800BABD0(signed __int64 *a1, int *a2, unsigned int a3)
{
unsigned int v3; // w21
int *v4; // x20
signed __int64 *v5; // x19
__int64 i; // x8
int v7; // t1
__int64 v8; // x10
int v9; // w12
v3 = a3;
v4 = a2;
v5 = a1;
sub_1800BAA6C(a1);
if ( *(_BYTE *)(4LL * (unsigned int)v5 + 0x18011A23CLL) & 1 )
sub_1800BAB80(v5);
for ( i = v3; i; --i )
{
v7 = *v4;
++v4;
v8 = *(_QWORD *)(8LL * (unsigned int)v5 + 0x18011A260LL);
v9 = *(_DWORD *)(4LL * (unsigned int)v5 + 0x18011A23CLL);
*(_DWORD *)(4LL * (unsigned int)v5 + 0x18011A23CLL) = v9 + 1;
*(_DWORD *)(v8 + (unsigned int)(4 * v9)) = v7;
}
return sub_1800BAA8C((__int64)v5);
}
//----- (00000001800BAC60) ----------------------------------------------------
unsigned __int64 __fastcall sub_1800BAC60(int a1)
{
__int64 v1; // x0
unsigned __int64 result; // x0
_DWORD *v3; // x8
_DWORD *v4; // [xsp+10h] [xbp-10h]
__int64 v5; // [xsp+18h] [xbp-8h]
v5 = 5139240511851214385LL;
if ( a1 == 5 )
{
v1 = 1LL;
}
else
{
if ( a1 != 3 )
sub_1800D489C("%llx:%d", &byte_180101040, -1120701505042910129LL, 339LL);
v1 = 0LL;
}
sub_1800C6F10(v1, (_QWORD *)0x18011A260LL, (_QWORD *)0x18011A2A0LL, &v4);
result = sub_1800BADA0();
v3 = v4;
MEMORY[0x210000100] = ((_DWORD)v4 - result) & 0x1FFF80;
*v4 = MEMORY[0x18011A260] >> 4;
v3[1] = MEMORY[0x18011A268] >> 4;
v3[2] = MEMORY[0x18011A270] >> 4;
v3[3] = MEMORY[0x18011A278] >> 4;
v3[4] = MEMORY[0x18011A280] >> 4;
v3[5] = MEMORY[0x18011A288] >> 4;
v3[6] = MEMORY[0x18011A290] >> 4;
v3[7] = MEMORY[0x18011A298] >> 4;
if ( 5139240511851214385LL != v5 )
sub_1800D4A5C();
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800BADA0) ----------------------------------------------------
unsigned __int64 sub_1800BADA0()
{
unsigned __int64 *v0; // x0
unsigned __int64 *v1; // x19
unsigned __int64 *v2; // x0
unsigned __int64 *v3; // x20
unsigned __int64 *v4; // x0
unsigned __int64 v5; // x8
unsigned __int64 result; // x0
sub_1800E0964();
v1 = v0;
sub_1800E0964();
v3 = v2;
v4 = (unsigned __int64 *)sub_1800E086C(13);
if ( !v3 || (v5 = *v3, *v3 == -1LL) )
{
if ( !v1 || (v5 = *v1, *v1 == -1LL) )
sub_1800D489C("%llx:%d", &byte_180101040, -1120701505042910129LL, 318LL);
}
if ( v5 >= *v4 )
result = *v4;
else
result = v5;
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800BAFFC) ----------------------------------------------------
__int64 __fastcall sub_1800BAFFC(int a1)
{
bool v1; // zf
unsigned __int64 v2; // x0
__int64 result; // x0
signed __int64 v4; // x8
if ( a1 == 3 )
v1 = 1;
else
v1 = a1 == 5;
if ( !v1 )
{
v4 = 557LL;
goto LABEL_8;
}
v2 = sub_1800BADA0();
MEMORY[0x21000011C] = ((284032767 - (_DWORD)v2) << 10) & 0x7FFF0000 | ((unsigned int)(284000256 - v2) >> 6) & 0x7FFF;
MEMORY[0x210000120] = 1;
result = sub_1800D9F80(v2);
if ( MEMORY[0x210000120] != 1 )
{
v4 = 576LL;
LABEL_8:
sub_1800D489C("%llx:%d", &byte_180101040, -1120701505042910129LL, v4);
}
return result;
}
// 1800D9F80: using guessed type __int64 __fastcall sub_1800D9F80(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800BB0B0) ----------------------------------------------------
signed __int64 __fastcall sub_1800BB0B0(__int64 a1)
{
__int64 v1; // x19
int v2; // w20
__int64 v3; // x1
__int64 v4; // x2
__int64 v5; // x3
__int64 v6; // x4
__int64 v7; // x5
__int64 v8; // x6
__int64 v9; // x7
unsigned __int64 v10; // x25
char v11; // w26
_DWORD *v12; // x22
signed __int64 result; // x0
__int64 v14; // x1
__int64 v15; // x2
__int64 v16; // x3
__int64 v17; // x4
__int64 v18; // x5
__int64 v19; // x6
__int64 v20; // x7
signed __int64 v21; // x8
int v22; // [xsp+14h] [xbp-5Ch]
__int64 v23; // [xsp+18h] [xbp-58h]
v1 = a1;
v23 = 5139240511851214385LL;
if ( !a1 )
sub_1800D489C("%llx:%d", &byte_180101040, -5752675860205613128LL, 403LL);
v22 = 0;
sub_1800B4014(2u, 0LL, 0LL);
v2 = sub_1800B43E0(2u);
MEMORY[0x18011A2F4] = -1;
MEMORY[0x18011A2F6] = 3;
MEMORY[0x18011A2F5] = 103;
MEMORY[0x18011A2F7] = 0;
MEMORY[0x18011A2F8] = 0;
if ( v2 == 2 )
{
if ( (unsigned int)sub_1800B4440(2u, 6443606772LL, 0) )
goto LABEL_19;
}
else if ( (unsigned int)sub_1800B4428(2u, (_QWORD *)0x18011A2F4LL, 0) )
{
goto LABEL_19;
}
if ( !(unsigned int)sub_1800BB5F4(0xF4240u) )
{
if ( MEMORY[0x18011A304] == 160 )
{
v10 = 0LL;
v11 = 1;
v12 = (_DWORD *)6443606752LL;
while ( v10 <= 4 )
{
MEMORY[0x18011A2F4] = -1;
MEMORY[0x18011A2F6] = 4;
MEMORY[0x18011A2F5] = 110;
MEMORY[0x18011A2F7] = v10;
MEMORY[0x18011A2F8] = 0;
if ( v2 == 2 )
{
if ( (unsigned int)sub_1800B4440(2u, 6443606772LL, 0) )
goto LABEL_19;
}
else if ( (unsigned int)sub_1800B4428(2u, (_QWORD *)0x18011A2F4LL, 0) )
{
goto LABEL_19;
}
if ( (unsigned int)sub_1800BB5F4(0xF4240u) )
goto LABEL_19;
*v12 = MEMORY[0x18011A304];
++v12;
v11 &= (unsigned int)sub_1800F0718((_BYTE *)0x18011A304LL, &v22, 4LL) == 0;
++v10;
}
if ( !(v11 & 1) )
{
sub_1800B4458(2u);
result = 0LL;
*(_DWORD *)(v1 + 16) = MEMORY[0x18011A2F0];
*(_QWORD *)(v1 + 8) = MEMORY[0x18011A2E8];
*(_QWORD *)v1 = MEMORY[0x18011A2E0];
goto LABEL_20;
}
v21 = 298LL;
}
else
{
v21 = 267LL;
}
sub_1800D489C("%llx:%d", &byte_180101040, -5752675860205613128LL, v21);
}
LABEL_19:
sub_1800EF260((__int64)"%llx:%d\n", v3, v4, v5, v6, v7, v8, v9, -5752675860205613128LL);
sub_1800B4458(2u);
sub_1800EF260((__int64)"%llx:%d\n", v14, v15, v16, v17, v18, v19, v20, -5752675860205613128LL);
result = 0xFFFFFFFFLL;
LABEL_20:
if ( 5139240511851214385LL != v23 )
sub_1800D4A5C();
return result;
}
// 180101040: using guessed type char byte_180101040;
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800BB34C) ----------------------------------------------------
signed __int64 sub_1800BB34C()
{
int v0; // w0
int v1; // w0
__int64 v2; // x1
__int64 v3; // x2
__int64 v4; // x3
__int64 v5; // x4
__int64 v6; // x5
__int64 v7; // x6
__int64 v8; // x7
__int64 v9; // x1
__int64 v10; // x2
__int64 v11; // x3
__int64 v12; // x4
__int64 v13; // x5
__int64 v14; // x6
__int64 v15; // x7
signed __int64 result; // x0
sub_1800B4014(2u, 0LL, 0LL);
v0 = sub_1800B43E0(2u);
MEMORY[0x18011A2F4] = -1;
MEMORY[0x18011A2F6] = 15;
MEMORY[0x18011A2F5] = 0;
MEMORY[0x18011A2F7] = 0;
MEMORY[0x18011A2F8] = 0;
if ( v0 == 2 )
v1 = sub_1800B4440(2u, 6443606772LL, 0);
else
v1 = sub_1800B4428(2u, (_QWORD *)0x18011A2F4LL, 0);
if ( v1 || (unsigned int)sub_1800BB5F4(0x1E8480u) )
{
sub_1800EF260((__int64)"%llx:%d\n", v2, v3, v4, v5, v6, v7, v8, -5752675860205613128LL);
sub_1800B4458(2u);
sub_1800EF260((__int64)"%llx:%d\n", v9, v10, v11, v12, v13, v14, v15, -5752675860205613128LL);
result = 0xFFFFFFFFLL;
}
else
{
sub_1800B4458(2u);
result = 0LL;
}
return result;
}
//----- (00000001800BB444) ----------------------------------------------------
signed __int64 __fastcall sub_1800BB444(__int64 a1, unsigned int a2)
{
unsigned int v2; // w19
__int64 v3; // x20
int v4; // w21
unsigned int v5; // w26
__int64 v6; // x1
__int64 v7; // x2
__int64 v8; // x3
__int64 v9; // x4
__int64 v10; // x5
__int64 v11; // x6
__int64 v12; // x7
signed int v13; // w24
unsigned __int64 v14; // x24
__int64 v16; // x1
__int64 v17; // x2
__int64 v18; // x3
__int64 v19; // x4
__int64 v20; // x5
__int64 v21; // x6
__int64 v22; // x7
v2 = a2;
v3 = a1;
if ( !a1 )
sub_1800D489C("%llx:%d", &byte_180101040, -5752675860205613128LL, 440LL);
sub_1800B4014(2u, 0LL, 0LL);
v4 = sub_1800B43E0(2u);
v5 = 0;
while ( 1 )
{
if ( !v2 )
{
sub_1800B4458(2u);
return 0LL;
}
MEMORY[0x18011A2F4] = -1;
MEMORY[0x18011A2F6] = 16;
MEMORY[0x18011A2F5] = 0;
MEMORY[0x18011A2F7] = 0;
MEMORY[0x18011A2F8] = 0;
if ( v4 != 2 )
break;
if ( (unsigned int)sub_1800B4440(2u, 6443606772LL, 0) )
goto LABEL_17;
LABEL_7:
v13 = 2000000;
while ( sub_1800BB5F4(0) & 0x80000000 )
{
sub_1800D5F60(100LL);
v13 -= 100;
if ( v13 < 1 )
goto LABEL_17;
}
if ( v2 >= 4 )
v14 = 4LL;
else
v14 = v2;
sub_1800F03F0((_QWORD *)(v3 + v5), (_QWORD *)0x18011A304LL, v14);
v5 += v14;
v2 -= v14;
}
if ( !(unsigned int)sub_1800B4428(2u, (_QWORD *)0x18011A2F4LL, 0) )
goto LABEL_7;
LABEL_17:
sub_1800EF260((__int64)"%llx:%d\n", v6, v7, v8, v9, v10, v11, v12, -5752675860205613128LL);
sub_1800B4458(2u);
sub_1800EF260((__int64)"%llx:%d\n", v16, v17, v18, v19, v20, v21, v22, -5752675860205613128LL);
return 0xFFFFFFFFLL;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800BB5F4) ----------------------------------------------------
signed __int64 __fastcall sub_1800BB5F4(unsigned int a1)
{
unsigned int v1; // w19
int v2; // w20
signed __int64 result; // x0
bool v4; // zf
v1 = a1;
v2 = sub_1800B43E0(2u);
while ( 1 )
{
if ( v2 == 2 )
{
result = sub_1800B4410(2u, 6443606792LL, v1);
if ( result & 0x80000000 )
return result;
}
else
{
result = sub_1800B43F8(2u, (__int64 *)0x18011A308LL, v1);
if ( result & 0x80000000 )
return result;
}
v4 = (unsigned int)MEMORY[0x18011A30A] - 201 <= 0x36 ? ((1LL << (MEMORY[0x18011A30A] + 55)) & 0x40000000000203LL) == 0 : 1;
if ( v4 )
break;
qword_1801158C8[2376] = 0LL;
}
*(_OWORD *)&qword_1801158C8[2375] = (unsigned __int64)qword_1801158C8[2376];
return result;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800BB6A0) ----------------------------------------------------
__int64 __fastcall sub_1800BB6A0(unsigned __int16 a1, unsigned __int16 a2)
{
__int64 result; // x0
MEMORY[0x2064C0004] = 0;
result = a1 | ((unsigned int)a2 << 16);
MEMORY[0x2064C0008] = result;
MEMORY[0x2064C0210] = 3;
MEMORY[0x2064C0000] = 3;
return result;
}
//----- (00000001800BB6C4) ----------------------------------------------------
void sub_1800BB6C4()
{
__int64 i; // x9
__int64 v1; // x9
for ( i = 0uLL; i != 128; ++i )
*(_DWORD *)(i * 4 + 8695578636LL) = dword_180104690[i];
v1 = 0uLL;
MEMORY[0x2064C020C] = 0x40000;
while ( v1 != 224 )
{
*(_DWORD *)(v1 * 4 + 8695579668LL) = dword_180104890[v1];
++v1;
}
MEMORY[0x2064C0794] = 0x4000;
}
// 180104690: using guessed type int dword_180104690[];
// 180104890: using guessed type int dword_180104890[];
//----- (00000001800BB730) ----------------------------------------------------
signed __int64 __fastcall sub_1800BB730(unsigned int a1, int a2, __int16 a3, int a4, int a5)
{
int v5; // w22
int v6; // w19
int v7; // w20
unsigned int v8; // w21
__int64 v9; // x1
__int64 v10; // x2
__int64 v11; // x3
__int64 v12; // x4
__int64 v13; // x5
__int64 v14; // x6
__int64 v15; // x7
signed __int64 result; // x0
unsigned __int8 v17; // [xsp+14h] [xbp-2Ch]
char v18; // [xsp+15h] [xbp-2Bh]
char v19; // [xsp+16h] [xbp-2Ah]
char v20; // [xsp+17h] [xbp-29h]
__int64 v21; // [xsp+18h] [xbp-28h]
v5 = a5;
v6 = a4;
v7 = a2;
v8 = a1;
v21 = 5139240511851214385LL;
v18 = HIBYTE(a3);
v19 = a3;
v20 = a4;
if ( (unsigned int)sub_1800E2408(a1, a2, (unsigned __int8 *)&v18, 3LL) )
{
sub_1800EF260((__int64)"%llx:%d\n", v9, v10, v11, v12, v13, v14, v15, -3975070616357390019LL);
LABEL_5:
result = 0LL;
goto LABEL_6;
}
if ( !v5 )
goto LABEL_5;
sub_1800E2268(v8, v7, (unsigned __int8 *)&v18, 2LL, &v17, 1LL, 1);
if ( v17 == v6 )
goto LABEL_5;
result = 0xFFFFFFFFLL;
LABEL_6:
if ( 5139240511851214385LL != v21 )
sub_1800D4A5C();
return result;
}
//----- (00000001800BB818) ----------------------------------------------------
signed __int64 __fastcall sub_1800BB818(unsigned int a1, int a2, __int16 a3, _BYTE *a4)
{
signed __int64 result; // x0
char v5; // [xsp+6h] [xbp-Ah]
char v6; // [xsp+7h] [xbp-9h]
__int64 v7; // [xsp+8h] [xbp-8h]
v7 = 5139240511851214385LL;
v5 = HIBYTE(a3);
v6 = a3;
result = sub_1800E2268(a1, a2, (unsigned __int8 *)&v5, 2LL, a4, 1LL, 1);
if ( 5139240511851214385LL != v7 )
sub_1800D4A5C();
return result;
}
//----- (00000001800BB884) ----------------------------------------------------
signed __int64 __fastcall sub_1800BB884(unsigned int a1, __int16 a2, int a3, int a4)
{
return sub_1800BB730(a1, 232, a2, a3, a4);
}
//----- (00000001800BB8A4) ----------------------------------------------------
signed __int64 __fastcall sub_1800BB8A4(unsigned int a1, __int16 a2, _BYTE *a3)
{
return sub_1800BB818(a1, 233, a2, a3);
}
//----- (00000001800BB8BC) ----------------------------------------------------
signed __int64 __fastcall sub_1800BB8BC(__int64 a1)
{
__int64 v1; // x19
signed __int64 result; // x0
v1 = a1;
if ( LOBYTE(qword_1801158C8[2379]) == 1 )
return sub_1800BB930(a1);
result = sub_1800BB930(6443606824LL);
MEMORY[0x18011A320] = 1;
*(_DWORD *)(v1 + 24) = MEMORY[0x18011A340];
*(_QWORD *)(v1 + 16) = MEMORY[0x18011A338];
*(_QWORD *)(v1 + 8) = MEMORY[0x18011A330];
*(_QWORD *)v1 = MEMORY[0x18011A328];
return result;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800BB930) ----------------------------------------------------
signed __int64 __fastcall sub_1800BB930(__int64 a1)
{
signed __int64 result; // x0
__int16 v2; // [xsp+6h] [xbp-Ah]
__int64 v3; // [xsp+8h] [xbp-8h]
v3 = 5139240511851214385LL;
*(_DWORD *)(a1 + 24) = 0;
*(_QWORD *)(a1 + 8) = 0LL;
*(_QWORD *)(a1 + 16) = 0LL;
*(_QWORD *)a1 = 0LL;
v2 = 16385;
result = sub_1800E2268(1u, 233, (unsigned __int8 *)&v2, 2LL, (_BYTE *)a1, 28LL, 1);
if ( 5139240511851214385LL != v3 )
sub_1800D4A5C();
return result;
}
//----- (00000001800BB9AC) ----------------------------------------------------
signed __int64 __fastcall sub_1800BB9AC(__int16 a1, _BYTE *a2, __int64 a3)
{
signed __int64 result; // x0
char v4; // [xsp+6h] [xbp-Ah]
char v5; // [xsp+7h] [xbp-9h]
__int64 v6; // [xsp+8h] [xbp-8h]
v6 = 5139240511851214385LL;
v4 = HIBYTE(a1);
v5 = a1;
result = sub_1800E2268(1u, 233, (unsigned __int8 *)&v4, 2LL, a2, a3, 1);
if ( 5139240511851214385LL != v6 )
sub_1800D4A5C();
return result;
}
//----- (00000001800BBA24) ----------------------------------------------------
signed __int64 __fastcall sub_1800BBA24(__int16 a1, _QWORD *a2, unsigned __int64 a3)
{
__int64 v3; // x19
unsigned __int8 *v4; // x20
signed __int64 result; // x0
__int64 v6; // [xsp+0h] [xbp-20h]
__int64 v7; // [xsp+8h] [xbp-18h]
v7 = 5139240511851214385LL;
v3 = a3 + 2;
v4 = (unsigned __int8 *)&v6 - (((_WORD)a3 + 17) & 0x3F0);
*v4 = HIBYTE(a1);
v4[1] = a1;
sub_1800F03F0(v4 + 2, a2, a3);
result = sub_1800E2408(1u, 232, v4, v3);
if ( 5139240511851214385LL != v7 )
sub_1800D4A5C();
return result;
}
//----- (00000001800BBAB0) ----------------------------------------------------
__int64 sub_1800BBAB0()
{
int v0; // w8
__int64 result; // x0
int v2; // [xsp+4h] [xbp-Ch]
__int64 v3; // [xsp+8h] [xbp-8h]
v3 = 5139240511851214385LL;
v2 = 0;
v0 = sub_1800BBB20(1u, &v2);
result = 0LL;
if ( !v0 )
result = (unsigned int)(5000 * v2) >> 12;
if ( 5139240511851214385LL != v3 )
sub_1800D4A5C();
return result;
}
//----- (00000001800BBB20) ----------------------------------------------------
signed __int64 __fastcall sub_1800BBB20(unsigned __int8 a1, int *a2)
{
int *v2; // x19
__int64 v3; // x0
signed __int64 v4; // x20
unsigned __int64 v5; // x21
__int64 v6; // x0
__int64 v7; // x1
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
__int16 v15; // [xsp+18h] [xbp-48h]
char v16; // [xsp+1Ah] [xbp-46h]
unsigned __int8 v17; // [xsp+1Bh] [xbp-45h]
char v18; // [xsp+1Ch] [xbp-44h]
__int64 v19; // [xsp+38h] [xbp-28h]
v2 = a2;
v19 = 5139240511851214385LL;
v3 = sub_1800BB730(1u, 232, 0x4000, a1, 0);
if ( (_DWORD)v3 )
{
v4 = 0xFFFFFFFFLL;
}
else
{
v15 = 320;
v5 = sub_1800D5F1C(v3) + 50000;
while ( 1 )
{
sub_1800D5F60(1000LL);
v6 = sub_1800E2268(1u, 233, (unsigned __int8 *)&v15, 2LL, &v16, 2LL, 1);
v4 = v6;
if ( (_DWORD)v6 )
break;
if ( !(v16 & 0x80) )
{
v4 = 0LL;
*v2 = v16 & 0xF | 16 * v17;
break;
}
if ( sub_1800D5F1C(v6) > v5 )
{
sub_1800EF260((__int64)"%llx:%d\n", v7, v8, v9, v10, v11, v12, v13, -3975070616357390019LL);
v4 = 0xFFFFFFFFLL;
break;
}
}
sub_1800BB8BC((__int64)&v18);
}
if ( 5139240511851214385LL != v19 )
sub_1800D4A5C();
return v4;
}
//----- (00000001800BBC40) ----------------------------------------------------
signed __int64 __fastcall sub_1800BBC40(char a1, _DWORD *a2)
{
_DWORD *v2; // x19
signed __int64 result; // x0
__int64 v4; // x9
unsigned int v5; // w8
unsigned int v6; // w11
signed __int64 v7; // x12
bool v8; // cf
bool v9; // zf
int v10; // [xsp+4h] [xbp-1Ch]
__int64 v11; // [xsp+8h] [xbp-18h]
v2 = a2;
v11 = 5139240511851214385LL;
v10 = 0;
result = sub_1800BBB20(a1 + 89, &v10);
if ( !(_DWORD)result )
{
v4 = 0LL;
v5 = (unsigned int)(100000 * v10) >> 12;
do
{
v6 = qword_180104C10[v4 + 1];
v7 = v4 * 8 + 8;
if ( v4 == 32 )
{
v8 = 1;
v9 = 0;
}
else
{
v8 = v5 >= v6;
v9 = v5 == v6;
}
++v4;
}
while ( v9 || !v8 );
*v2 = (signed int)((*(_DWORD *)((char *)qword_180104C10 + v7 - 4) - *(_DWORD *)((char *)qword_180104C10 + v7 + 4))
* (v5 - v6))
/ (signed int)(*(_DWORD *)((char *)&qword_180104C10[-1] + v7) - v6)
+ *(_DWORD *)((char *)qword_180104C10 + v7 + 4);
}
if ( 5139240511851214385LL != v11 )
sub_1800D4A5C();
return result;
}
// 180104C10: using guessed type __int64 qword_180104C10[35];
//----- (00000001800BBD08) ----------------------------------------------------
__int64 sub_1800BBD08()
{
__int64 v0; // x1
__int64 v1; // x2
__int64 v2; // x3
__int64 v3; // x4
__int64 v4; // x5
__int64 v5; // x6
__int64 v6; // x7
__int64 result; // x0
char v8; // [xsp+18h] [xbp-28h]
__int64 v9; // [xsp+20h] [xbp-20h]
unsigned int v10; // [xsp+28h] [xbp-18h]
char v11; // [xsp+37h] [xbp-9h]
__int64 v12; // [xsp+38h] [xbp-8h]
v12 = 5139240511851214385LL;
if ( (unsigned int)sub_1800BB818(1u, 233, 320, (_BYTE *)0x18011A310LL) )
sub_1800EF260((__int64)"%llx:%d\n", v0, v1, v2, v3, v4, v5, v6, -3975070616357390019LL);
sub_1800F0E80(0x2003A00u, &v9, &v10, &v8);
sub_1800BBDF4(v9, v10);
result = sub_1800D8634();
if ( !(result & 1) )
{
sub_1800F0E80(0x2003300u, &v9, &v10, &v8);
sub_1800BBDF4(v9, v10);
result = sub_1800BB818(1u, 233, 347, &v11);
}
if ( 5139240511851214385LL != v12 )
sub_1800D4A5C();
return result;
}
//----- (00000001800BBDF4) ----------------------------------------------------
signed __int64 __fastcall sub_1800BBDF4(signed __int64 result, unsigned int a2)
{
signed __int64 v2; // x19
unsigned __int64 v3; // x23
unsigned int v4; // w21
unsigned __int64 v5; // x24
int v6; // w2
__int64 v7; // x1
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
__int64 v14; // x1
__int64 v15; // x2
__int64 v16; // x3
__int64 v17; // x4
__int64 v18; // x5
__int64 v19; // x6
__int64 v20; // x7
signed __int64 v21; // x8
v2 = result;
v3 = 0LL;
v4 = 0;
v5 = a2;
while ( v3 < v5 )
{
v6 = *(unsigned __int16 *)(v2 + 4);
if ( v6 == 28672 )
{
if ( *(_WORD *)(v2 + 6) )
{
if ( *(_WORD *)(v2 + 6) == 1 )
{
if ( v4 )
{
v21 = 516LL;
goto LABEL_18;
}
result = sub_1800D7568(*(_DWORD *)v2);
if ( (_DWORD)result )
{
result = sub_1800EF260((__int64)"%llx:%d\n", v7, v8, v9, v10, v11, v12, v13, -3975070616357390019LL);
v4 = 0;
}
else
{
v4 = *(_DWORD *)v2;
}
}
}
else
{
if ( v4 != *(_DWORD *)v2 )
{
v21 = 526LL;
LABEL_18:
sub_1800D489C("%llx:%d", &byte_180101040, -3975070616357390019LL, v21);
}
result = sub_1800D75CC(v4);
v4 = 0;
}
}
else
{
result = sub_1800BB730(*(_DWORD *)v2, 232, v6, *(unsigned __int8 *)(v2 + 6), 1);
if ( (_DWORD)result )
result = sub_1800EF260((__int64)"%llx:%d\n", v14, v15, v16, v17, v18, v19, v20, -3975070616357390019LL);
}
++v3;
v2 += 8LL;
}
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800BBF1C) ----------------------------------------------------
__int64 sub_1800BBF1C()
{
int v0; // w0
int v1; // w0
__int64 result; // x0
__int64 v3; // [xsp+0h] [xbp-30h]
__int64 v4; // [xsp+8h] [xbp-28h]
unsigned int v5; // [xsp+10h] [xbp-20h]
__int64 v6; // [xsp+18h] [xbp-18h]
v6 = 5139240511851214385LL;
v0 = sub_1800C6E78();
sub_1800BBFDC(v0);
sub_1800F68C8();
sub_1800F68D0();
v1 = sub_1800C6EB0();
sub_1800BC0B4(v1);
sub_1800F68D8();
sub_1800F68E0();
sub_1800F0E80(0x2003600u, &v4, &v5, &v3);
sub_1800BBDF4(v4, v5);
result = sub_1800D8634();
if ( !(result & 1) )
{
sub_1800F0E80(0x2003500u, &v4, &v5, &v3);
result = sub_1800BBDF4(v4, v5);
}
if ( 5139240511851214385LL != v6 )
sub_1800D4A5C();
return result;
}
//----- (00000001800BBFDC) ----------------------------------------------------
signed __int64 __fastcall sub_1800BBFDC(int a1)
{
int v1; // w19
signed __int64 result; // x0
unsigned int v3; // w8
int v4; // w19
unsigned int v5; // w20
__int64 v6; // [xsp+0h] [xbp-30h]
__int64 v7; // [xsp+8h] [xbp-28h]
unsigned __int64 v8; // [xsp+10h] [xbp-20h]
__int64 v9; // [xsp+18h] [xbp-18h]
v1 = a1;
v9 = 5139240511851214385LL;
if ( (unsigned int)(a1 - 500) <= 0x31C )
{
sub_1800F0E80(0x2003800u, &v7, &v8, &v6);
v3 = 0;
v4 = (1000 * v1 - 496876) / 0xC35u & 0xFF;
while ( 1 )
{
v5 = v3;
if ( v3 >= v8 )
break;
sub_1800BB730(*(_DWORD *)(v7 + 8LL * v3), 232, *(_WORD *)(v7 + 8LL * v3 + 6), v4, 1);
v3 = v5 + 1;
}
result = 0LL;
}
else
{
result = 0xFFFFFFFFLL;
}
if ( 5139240511851214385LL != v9 )
sub_1800D4A5C();
return result;
}
//----- (00000001800BC0B4) ----------------------------------------------------
signed __int64 __fastcall sub_1800BC0B4(int a1)
{
int v1; // w19
signed __int64 result; // x0
unsigned int v3; // w8
int v4; // w19
unsigned int v5; // w20
__int64 v6; // [xsp+0h] [xbp-30h]
__int64 v7; // [xsp+8h] [xbp-28h]
unsigned __int64 v8; // [xsp+10h] [xbp-20h]
__int64 v9; // [xsp+18h] [xbp-18h]
v1 = a1;
v9 = 5139240511851214385LL;
sub_1800F0E80(0x2003700u, &v7, &v8, &v6);
if ( (unsigned int)(v1 - 600) <= 0x320 )
{
v3 = 0;
v4 = (1000 * v1 - 596876) / 0xC35u & 0xFF;
while ( 1 )
{
v5 = v3;
if ( v3 >= v8 )
break;
sub_1800BB730(*(_DWORD *)(v7 + 8LL * v3), 232, *(_WORD *)(v7 + 8LL * v3 + 6), v4, 1);
v3 = v5 + 1;
}
result = 0LL;
}
else
{
result = 0xFFFFFFFFLL;
}
if ( 5139240511851214385LL != v9 )
sub_1800D4A5C();
return result;
}
//----- (00000001800BC18C) ----------------------------------------------------
signed __int64 __fastcall sub_1800BC18C(_BYTE *a1, bool *a2, _BYTE *a3)
{
_BYTE *v3; // x19
bool *v4; // x20
_BYTE *v5; // x21
signed __int64 result; // x0
__int64 v7; // x8
__int16 v8; // [xsp+Eh] [xbp-62h]
__int64 v9; // [xsp+10h] [xbp-60h]
__int64 v10; // [xsp+18h] [xbp-58h]
__int64 v11; // [xsp+20h] [xbp-50h]
int v12; // [xsp+28h] [xbp-48h]
char v13[2]; // [xsp+2Ch] [xbp-44h]
char v14; // [xsp+2Eh] [xbp-42h]
char v15; // [xsp+31h] [xbp-3Fh]
__int64 v16; // [xsp+48h] [xbp-28h]
v3 = a3;
v4 = a2;
v5 = a1;
v16 = 5139240511851214385LL;
sub_1800BB8BC((__int64)v13);
v12 = 0;
v10 = 0LL;
v11 = 0LL;
v9 = 0LL;
v8 = -32767;
result = sub_1800E2268(1u, 233, (unsigned __int8 *)&v8, 2LL, &v9, 28LL, 1);
v7 = 0uLL;
*v5 = 0;
while ( v7 != 28 )
{
v13[v7] &= ~byte_180104D28[v7];
++v7;
}
*v4 = (v15 & 0xF) != 0;
*v3 = v14 & 1;
if ( 5139240511851214385LL != v16 )
sub_1800D4A5C();
return result;
}
// 1800BC18C: using guessed type char var_44[2];
//----- (00000001800BC278) ----------------------------------------------------
signed __int64 __fastcall sub_1800BC278(unsigned int a1, _BYTE *a2)
{
_BYTE *v2; // x19
signed __int64 result; // x0
__int64 v4; // x8
signed int v5; // w22
_BYTE *v6; // x20
v2 = a2;
if ( a1 > 0xF )
return 0xFFFFFFFFLL;
v4 = *((unsigned __int8 *)&dword_180104D44 + a1);
v5 = 1 << v4;
if ( (1 << v4) & MEMORY[0x18011A324] )
{
v6 = (_BYTE *)(v4 + 6443606852LL);
LABEL_5:
result = 0LL;
*v2 = *v6;
return result;
}
v6 = (_BYTE *)(v4 + 6443606852LL);
result = sub_1800BB818(1u, 233, (unsigned __int16)v4 | 0x5000u, (_BYTE *)(v4 + 6443606852LL));
if ( !(_DWORD)result )
{
MEMORY[0x18011A324] |= v5;
goto LABEL_5;
}
return result;
}
// 180104D44: using guessed type int dword_180104D44;
//----- (00000001800BC320) ----------------------------------------------------
signed __int64 __fastcall sub_1800BC320(unsigned int a1, int a2)
{
__int16 v3; // w9
int v4; // w12
if ( a1 > 0xF )
return 0xFFFFFFFFLL;
v3 = *((unsigned __int8 *)&dword_180104D44 + a1);
v4 = MEMORY[0x18011A324];
if ( (1 << v3) & MEMORY[0x18011A324]
&& *(unsigned __int8 *)(*((unsigned __int8 *)&dword_180104D44 + a1) + 0x18011A344LL) == a2 )
{
return 0LL;
}
*(_BYTE *)(*((unsigned __int8 *)&dword_180104D44 + a1) + 0x18011A344LL) = a2;
MEMORY[0x18011A324] = (1 << v3) | v4;
return sub_1800BB730(1u, 232, v3 | 0x5000u, a2, 0);
}
// 180104D44: using guessed type int dword_180104D44;
//----- (00000001800BC3A0) ----------------------------------------------------
signed __int64 __fastcall sub_1800BC3A0(int a1)
{
int v1; // w19
signed __int64 result; // x0
char v3; // [xsp+Eh] [xbp-52h]
__int16 v4; // [xsp+2Ah] [xbp-36h]
__int64 v5; // [xsp+2Ch] [xbp-34h]
__int64 v6; // [xsp+34h] [xbp-2Ch]
__int64 v7; // [xsp+3Ch] [xbp-24h]
int v8; // [xsp+44h] [xbp-1Ch]
__int64 v9; // [xsp+48h] [xbp-18h]
v1 = a1;
v9 = 5139240511851214385LL;
result = sub_1800BB8BC((__int64)&v3);
if ( v1 )
{
v4 = -16383;
v6 = -225LL;
v5 = -16492674482177LL;
v8 = -1;
v7 = -1LL;
result = sub_1800E2408(1u, 232, (unsigned __int8 *)&v4, 30LL);
}
if ( 5139240511851214385LL != v9 )
sub_1800D4A5C();
return result;
}
//----- (00000001800BC444) ----------------------------------------------------
void __noreturn sub_1800BC444()
{
sub_1800BC454(1);
}
//----- (00000001800BC454) ----------------------------------------------------
void __fastcall __noreturn sub_1800BC454(int a1)
{
int v1; // w19
unsigned int v2; // w20
signed int v3; // w21
signed __int16 v4; // w22
__int16 v5; // w23
unsigned __int8 v6; // [xsp+Fh] [xbp-31h]
v1 = a1;
if ( a1 == 1 )
{
v2 = 0;
v3 = 2241;
v4 = 2304;
while ( v3 != 2367 )
{
if ( v2 <= 0x10 )
v5 = v4;
else
v5 = v3;
if ( !(unsigned int)sub_1800BB818(1u, 233, v5, &v6) && (v6 & 0xC1) == 1 )
{
v6 &= 0xFEu;
sub_1800BB730(1u, 232, v5, v6, 0);
}
++v2;
v3 += 6;
v4 += 2;
}
}
sub_1800BB730(1u, 232, 1024, v1, 0);
sub_1800F612C();
while ( 1 )
;
}
//----- (00000001800BC50C) ----------------------------------------------------
signed __int64 __fastcall sub_1800BC50C(__int64 a1, unsigned int a2, unsigned int *a3)
{
unsigned int *v3; // x19
unsigned int v4; // w20
__int64 v5; // x21
unsigned int v6; // w9
__int64 v7; // x8
unsigned int v8; // w8
signed __int64 result; // x0
__int64 v10; // [xsp+0h] [xbp-40h]
char v11; // [xsp+8h] [xbp-38h]
__int64 v12; // [xsp+10h] [xbp-30h]
__int64 v13; // [xsp+18h] [xbp-28h]
v3 = a3;
v4 = a2;
v5 = a1;
v13 = 5139240511851214385LL;
if ( (unsigned int)a1 > 5 )
{
result = 0xFFFFFFFFLL;
}
else
{
sub_1800F0E80(0x2003900u, &v12, &v11, &v10);
v6 = *(unsigned __int16 *)(v12 + (v5 << 32 >> 29) - (signed int)v5 + 1);
if ( v6 <= v4 && (v7 = v12 + 7LL * (signed int)v5, *(unsigned __int16 *)(v7 + 3) >= v4) )
{
result = 0LL;
v8 = (*(unsigned __int16 *)(v7 + 5) + 1000 * (v4 - v6) - 1) / *(unsigned __int16 *)(v7 + 5);
}
else
{
v8 = 0;
result = 0xFFFFFFFFLL;
}
*v3 = v8;
}
if ( 5139240511851214385LL != v13 )
sub_1800D4A5C();
return result;
}
//----- (00000001800BC6A8) ----------------------------------------------------
signed __int64 sub_1800BC6A8()
{
return 0xFFFFFFFFLL;
}
//----- (00000001800BC6B0) ----------------------------------------------------
signed __int64 sub_1800BC6B0()
{
__int64 v0; // x8
char v1; // w9
unsigned __int64 v2; // x12
int v3; // w14
unsigned __int64 v4; // x8
char v5; // w11
signed __int64 v6; // x19
__int64 v8; // x1
__int64 v9; // x2
__int64 v10; // x3
__int64 v11; // x4
__int64 v12; // x5
__int64 v13; // x6
__int64 v14; // x7
char v15; // [xsp+16h] [xbp-3Ah]
char v16; // [xsp+17h] [xbp-39h]
__int64 v17; // [xsp+18h] [xbp-38h]
__int64 v18; // [xsp+20h] [xbp-30h]
__int64 v19; // [xsp+28h] [xbp-28h]
__int64 v20; // [xsp+30h] [xbp-20h]
__int64 v21; // [xsp+38h] [xbp-18h]
v21 = 5139240511851214385LL;
if ( qword_1801158C8[2379] & 1 )
{
LODWORD(v20) = MEMORY[0x18011A340];
v19 = MEMORY[0x18011A338];
v17 = MEMORY[0x18011A328];
v18 = MEMORY[0x18011A330];
}
else
{
sub_1800BB8BC((__int64)&v17);
}
v0 = 0uLL;
v1 = 0;
while ( v0 != 2 )
{
v2 = (unsigned __int16)word_1801139D0[v0];
v3 = *((unsigned __int8 *)&v17 + (v2 >> 8));
if ( (unsigned int)v2 & v3 )
{
*((_BYTE *)&v17 + (v2 >> 8)) = v3 & ~(_BYTE)v2;
v1 = 1;
}
++v0;
}
if ( !(v1 & 1) )
goto LABEL_15;
v4 = 0uLL;
while ( v4 <= 0x1B )
{
v5 = *((_BYTE *)&v17 + v4) & byte_180104D70[v4];
++v4;
if ( v5 )
goto LABEL_15;
}
if ( !(sub_1800D9AA4() & 1) )
{
v6 = 1LL;
if ( !(unsigned int)sub_1800BC278(4u, &v16) && v16 )
{
v15 = 0;
v6 = 2LL;
sub_1800BC278(2u, &v15);
sub_1800EF260((__int64)"%llx:%d\n", v8, v9, v10, v11, v12, v13, v14, -3975070616357390019LL);
sub_1800D8A88();
}
}
else
{
LABEL_15:
v6 = 0LL;
}
if ( 5139240511851214385LL != v21 )
sub_1800D4A5C();
return v6;
}
// 1801139D0: using guessed type __int16 word_1801139D0[];
// 180114C90: using guessed type __int64 qword_180114C90;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800BC910) ----------------------------------------------------
signed __int64 __fastcall sub_1800BC910(int a1, int a2)
{
int v2; // w20
signed __int64 result; // x0
int *v4; // x21
__int16 v5; // w19
int v6; // w8
unsigned __int8 v7; // [xsp+7h] [xbp-29h]
__int64 v8; // [xsp+8h] [xbp-28h]
v2 = a2;
v8 = 5139240511851214385LL;
if ( (unsigned int)(a1 - 1) <= 0x21 )
{
v4 = &dword_180104D8C[3 * (a1 - 1)];
v5 = *((_WORD *)v4 + 4);
sub_1800BB818(1u, 233, *((_WORD *)v4 + 4), &v7);
v6 = *((unsigned __int8 *)v4 + 10);
if ( v2 )
LOBYTE(v6) = v7 | v6;
else
v6 = v7 & ~v6;
v7 = v6;
sub_1800BB730(1u, 232, v5, (unsigned __int8)v6, 1);
result = 0LL;
}
else
{
result = 0xFFFFFFFFLL;
}
if ( 5139240511851214385LL != v8 )
sub_1800D4A5C();
return result;
}
// 180104D8C: using guessed type int dword_180104D8C[];
//----- (00000001800BC9E0) ----------------------------------------------------
signed __int64 __fastcall sub_1800BC9E0(_BYTE *a1, _BYTE *a2)
{
_BYTE *v2; // x19
_BYTE *v3; // x20
signed __int64 result; // x0
unsigned int v5; // w8
unsigned __int8 v6; // [xsp+7h] [xbp-19h]
__int64 v7; // [xsp+8h] [xbp-18h]
v2 = a2;
v3 = a1;
v7 = 5139240511851214385LL;
result = sub_1800BB818(1u, 233, 1280, &v6);
if ( (_DWORD)result )
{
result = 0xFFFFFFFFLL;
}
else
{
v5 = v6;
*v3 = (v6 >> 6) & 1;
*v2 = (v5 >> 1) & 1;
}
if ( 5139240511851214385LL != v7 )
sub_1800D4A5C();
return result;
}
//----- (00000001800BCA68) ----------------------------------------------------
signed __int64 __fastcall sub_1800BCA68(int a1)
{
int v1; // w19
int v2; // w3
signed __int64 result; // x0
int v4; // [xsp+Ch] [xbp-24h]
char v5; // [xsp+12h] [xbp-1Eh]
int v6; // [xsp+14h] [xbp-1Ch]
__int64 v7; // [xsp+18h] [xbp-18h]
v1 = a1;
v7 = 5139240511851214385LL;
if ( a1 )
{
if ( (unsigned int)sub_1800BB9AC(1282, &v5, 6LL) )
goto LABEL_7;
v4 = v6 + v1;
if ( (unsigned int)sub_1800BBA24(1288, &v4, 4uLL) )
goto LABEL_7;
v2 = 64;
}
else
{
v2 = 0;
}
if ( (unsigned int)sub_1800BB730(1u, 232, 1280, v2, 0) )
{
LABEL_7:
result = 0xFFFFFFFFLL;
goto LABEL_8;
}
result = 0LL;
LABEL_8:
if ( 5139240511851214385LL != v7 )
sub_1800D4A5C();
return result;
}
//----- (00000001800BCB2C) ----------------------------------------------------
_QWORD *__fastcall sub_1800BCB2C(__int64 a1, int a2, __int64 *a3, __int64 a4, int a5)
{
int v5; // w21
__int64 v6; // x20
__int64 *v7; // x22
int v8; // w23
__int64 v9; // x19
_QWORD *v10; // x9
_QWORD *result; // x0
char v12; // [xsp+8h] [xbp-78h]
char v13; // [xsp+9h] [xbp-77h]
int v14; // [xsp+Ch] [xbp-74h]
__int64 v15; // [xsp+20h] [xbp-60h]
_QWORD *v16; // [xsp+28h] [xbp-58h]
__int64 v17; // [xsp+30h] [xbp-50h]
int v18; // [xsp+38h] [xbp-48h]
__int64 v19; // [xsp+48h] [xbp-38h]
v5 = a5;
v6 = a4;
v7 = a3;
v8 = a2;
v9 = a1;
v19 = 5139240511851214385LL;
sub_1800BCC04(*(_QWORD *)(a1 + 168), (__int64)&v12);
v12 = 1;
v13 |= 0x20u;
v14 = v8;
v15 = *v7;
if ( v5 == 1 )
{
v16 = 0LL;
}
else
{
v10 = v7 + 1;
if ( v5 == 2 )
v10 = (_QWORD *)*v10;
v16 = v10;
}
v17 = v6;
v18 = v5 - 1;
result = sub_1800BCC2C(*(_QWORD *)(v9 + 168), &v12);
if ( 5139240511851214385LL != v19 )
sub_1800D4A5C();
return result;
}
//----- (00000001800BCC04) ----------------------------------------------------
__int64 __fastcall sub_1800BCC04(__int64 result, __int64 a2)
{
int v2; // w8
*(_QWORD *)(a2 + 48) = 0LL;
*(_QWORD *)(a2 + 56) = 0LL;
*(_QWORD *)(a2 + 32) = 0LL;
*(_QWORD *)(a2 + 40) = 0LL;
*(_QWORD *)(a2 + 16) = 0LL;
*(_QWORD *)(a2 + 24) = 0LL;
*(_QWORD *)a2 = 0LL;
*(_QWORD *)(a2 + 8) = 0LL;
v2 = (*(unsigned __int16 *)(result + 32) + 1) & 0xF;
*(_WORD *)(result + 32) = (*(_WORD *)(result + 32) + 1) & 0xF;
*(_WORD *)(a2 + 2) = v2;
return result;
}
//----- (00000001800BCC2C) ----------------------------------------------------
_QWORD *__fastcall sub_1800BCC2C(__int64 a1, _QWORD *a2)
{
__int64 v2; // x19
_QWORD *result; // x0
int v4; // w8
int v5; // w8
v2 = a1;
result = sub_1800F03F0(
(_QWORD *)(*(_QWORD *)(a1 + 40) + ((unsigned __int64)*(unsigned int *)(a1 + 12) << 6)),
a2,
0x40uLL);
v4 = *(_DWORD *)(v2 + 12);
if ( v4 == *(_DWORD *)(v2 + 16) - 1 )
v5 = 0;
else
v5 = v4 + 1;
*(_DWORD *)(v2 + 12) = v5;
return result;
}
//----- (00000001800BCD80) ----------------------------------------------------
signed __int64 __fastcall sub_1800BCD80(unsigned int a1)
{
__int64 v1; // x29
__int64 v2; // x30
if ( a1 >= 3 )
sub_1800D489C("%llx:%d", &byte_180101040, 8415054965657969967LL, 2091LL, v1, v2);
return 464LL * (signed int)a1 + 6443606896LL;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800BCDD4) ----------------------------------------------------
signed __int64 __fastcall sub_1800BCDD4(_QWORD *a1, __int64 a2)
{
_QWORD *v2; // x19
__int64 v3; // x0
__int64 v4; // x1
__int64 v5; // x2
__int64 v6; // x3
__int64 v7; // x4
__int64 v8; // x5
__int64 v9; // x6
__int64 v10; // x7
__int64 v11; // x20
__int64 v12; // x1
__int64 v13; // x2
__int64 v14; // x3
__int64 v15; // x4
__int64 v16; // x5
__int64 v17; // x6
__int64 v18; // x7
unsigned __int64 v19; // x0
__int64 v20; // x1
__int64 v21; // x2
__int64 v22; // x3
__int64 v23; // x4
__int64 v24; // x5
__int64 v25; // x6
__int64 v26; // x7
signed __int64 v27; // x21
__int64 v29; // x1
__int64 v30; // x2
__int64 v31; // x3
__int64 v32; // x4
__int64 v33; // x5
__int64 v34; // x6
__int64 v35; // x7
__int64 v36; // x2
__int64 v37; // x3
__int64 v38; // x4
__int64 v39; // x5
__int64 v40; // x6
__int64 v41; // x7
unsigned __int64 v42; // x0
__int64 v43; // x1
__int64 v44; // x2
__int64 v45; // x3
__int64 v46; // x4
__int64 v47; // x5
__int64 v48; // x6
__int64 v49; // x7
v2 = a1;
a1[23] = a2;
v3 = sub_1800E3ABC(a2, 0, 0x186A0uLL);
v11 = v3;
if ( v3 )
{
if ( (unsigned int)sub_1800E4304(v3) == 98306 )
{
v19 = sub_1800E4394(v11, 0);
v2[26] = v19;
if ( v19 >> 13 )
{
sub_1800E47F0(v11);
sub_1800E4708(v11);
sub_1800E4920(v11, v29, v30, v31, v32, v33, v34, v35);
v42 = sub_1800E43A0(v11, 0LL, v36, v37, v38, v39, v40, v41);
if ( v42 )
{
v2[25] = v42;
sub_1800E4314(v11, 1);
sub_1800E4354(v11, 1);
v27 = 0LL;
v2[24] = v11;
goto LABEL_8;
}
sub_1800EF260((__int64)"%llx:%d\n", v43, v44, v45, v46, v47, v48, v49, 8415054965657969967LL);
v27 = 4294962292LL;
}
else
{
sub_1800EF260((__int64)"%llx:%d\n", v20, v21, v22, v23, v24, v25, v26, 8415054965657969967LL);
v27 = 4294962294LL;
}
}
else
{
sub_1800EF260((__int64)"%llx:%d\n", v12, v13, v14, v15, v16, v17, v18, 8415054965657969967LL);
v27 = 4294962295LL;
}
sub_1800E4244(v11);
}
else
{
sub_1800EF260((__int64)"%llx:%d\n", v4, v5, v6, v7, v8, v9, v10, 8415054965657969967LL);
v27 = 4294962296LL;
}
LABEL_8:
sub_1800BE038((__int64)v2, v27);
return v27;
}
//----- (00000001800BCF38) ----------------------------------------------------
__int64 __fastcall sub_1800BCF38(__int64 result, char a2, char a3)
{
char v3; // w20
__int64 v4; // x19
_QWORD *v5; // x0
__int64 v6; // x9
__int64 v7; // x8
__int64 v8; // x9
int v9; // w10
__int64 v10; // x12
__int64 v11; // x13
__int64 v12; // x12
__int64 v13; // x13
v3 = a3;
v4 = result;
if ( !(a2 & 1) )
{
v5 = (_QWORD *)sub_1800EE264(0x8000uLL, 0x1000uLL);
*(_QWORD *)(v4 + 320) = v5;
*(_QWORD *)(v4 + 328) = v5;
*(_QWORD *)(v4 + 336) = v5 + 4096;
sub_1800F05A0(v5, 0x8000uLL);
result = (*(__int64 (__fastcall **)(_QWORD, _QWORD, signed __int64, signed __int64, _QWORD))(MEMORY[0x18011A718]
+ 40LL))(
*(unsigned int *)(v4 + 220),
*(_QWORD *)(v4 + 320),
2147500032LL,
8LL,
0LL);
v6 = *(_QWORD *)(v4 + 328);
*(_QWORD *)(v4 + 312) = v6 + 2147500032LL - *(_QWORD *)(v4 + 320);
*(_QWORD *)(v4 + 328) = v6 + 0x2000;
*(_QWORD *)(v4 + 440) = v6;
*(_QWORD *)(v4 + 448) = v6 + 4096;
}
if ( !(v3 & 1) )
{
v7 = 0LL;
v8 = 0LL;
v9 = 0;
while ( v8 != 64 )
{
v10 = *(_QWORD *)(v4 + 328);
*(_QWORD *)(v4 + 328) = v10 + 4096;
v11 = v4 + v8;
*(_WORD *)(v11 + 116) = v9;
*(_QWORD *)(v11 + 120) = v10;
*(_DWORD *)(v11 + 112) = 16;
*(_QWORD *)(v11 + 104) = 0LL;
*(_QWORD *)(v11 + 96) = v10 + 2147500032LL - *(_QWORD *)(v4 + 320);
v12 = *(_QWORD *)(v4 + 328);
*(_QWORD *)(v4 + 328) = v12 + 4096;
v13 = v4 + v7;
*(_QWORD *)(v13 + 40) = v12;
*(_WORD *)(v13 + 20) = v9;
*(_DWORD *)(v13 + 16) = 16;
*(_QWORD *)(v13 + 8) = 0LL;
*(_QWORD *)(v13 + 24) = v4 + v8 + 96;
*(_QWORD *)v13 = v12 + 2147500032LL - *(_QWORD *)(v4 + 320);
++v9;
v8 += 32LL;
v7 += 48LL;
}
*(_QWORD *)(v4 + 160) = v4;
*(_QWORD *)(v4 + 168) = v4 + 48;
}
return result;
}
//----- (00000001800BD078) ----------------------------------------------------
signed __int64 __fastcall sub_1800BD078(__int64 a1, int a2)
{
int v2; // w20
__int64 v3; // x19
signed __int64 v4; // x21
unsigned int *v5; // x9
unsigned int v6; // w8
__int64 v7; // x9
bool v8; // zf
__int64 v9; // x1
__int64 v10; // x2
__int64 v11; // x3
__int64 v12; // x4
__int64 v13; // x5
__int64 v14; // x6
__int64 v15; // x7
signed __int64 v16; // x0
unsigned __int64 v17; // x21
_QWORD *v18; // x22
unsigned int v19; // w23
unsigned int v20; // w0
unsigned int v21; // w10
unsigned __int64 v22; // x9
__int64 v23; // x21
__int64 v24; // x22
__int64 v25; // x20
__int64 v26; // x1
__int64 v27; // x2
__int64 v28; // x3
__int64 v29; // x4
__int64 v30; // x5
__int64 v31; // x6
__int64 v32; // x7
unsigned __int64 v33; // x23
signed __int64 v35; // x20
__int64 v36; // x1
__int64 v37; // x2
__int64 v38; // x3
__int64 v39; // x4
__int64 v40; // x5
__int64 v41; // x6
__int64 v42; // x7
signed __int64 v43; // x20
signed __int64 v44; // x22
_QWORD *v45; // x0
__int64 v46; // x20
__int64 v47; // x1
__int64 v48; // x2
__int64 v49; // x3
__int64 v50; // x4
__int64 v51; // x5
__int64 v52; // x6
__int64 v53; // x7
__int64 v54; // x1
__int64 v55; // x2
__int64 v56; // x3
__int64 v57; // x4
__int64 v58; // x5
__int64 v59; // x6
__int64 v60; // x7
__int64 v61; // x1
__int64 v62; // x2
__int64 v63; // x3
__int64 v64; // x4
__int64 v65; // x5
__int64 v66; // x6
__int64 v67; // x7
__int64 v68; // x1
__int64 v69; // x2
__int64 v70; // x3
__int64 v71; // x4
__int64 v72; // x5
__int64 v73; // x6
__int64 v74; // x7
__int64 v75; // x1
__int64 v76; // x2
__int64 v77; // x3
__int64 v78; // x4
__int64 v79; // x5
__int64 v80; // x6
__int64 v81; // x7
__int64 v82; // x1
__int64 v83; // x2
__int64 v84; // x3
__int64 v85; // x4
__int64 v86; // x5
__int64 v87; // x6
__int64 v88; // x7
__int64 v89; // x1
__int64 v90; // x2
__int64 v91; // x3
__int64 v92; // x4
__int64 v93; // x5
__int64 v94; // x6
__int64 v95; // x7
__int64 v96; // x1
__int64 v97; // x2
__int64 v98; // x3
__int64 v99; // x4
__int64 v100; // x5
__int64 v101; // x6
__int64 v102; // x7
__int64 v103; // x1
__int64 v104; // x2
__int64 v105; // x3
__int64 v106; // x4
__int64 v107; // x5
__int64 v108; // x6
__int64 v109; // x7
__int64 v110; // x1
__int64 v111; // x2
__int64 v112; // x3
__int64 v113; // x4
__int64 v114; // x5
__int64 v115; // x6
__int64 v116; // x7
__int64 v117; // x1
__int64 v118; // x2
__int64 v119; // x3
__int64 v120; // x4
__int64 v121; // x5
__int64 v122; // x6
__int64 v123; // x7
__int64 v124; // x1
__int64 v125; // x2
__int64 v126; // x3
__int64 v127; // x4
__int64 v128; // x5
__int64 v129; // x6
__int64 v130; // x7
__int64 v131; // x1
__int64 v132; // x2
__int64 v133; // x3
__int64 v134; // x4
__int64 v135; // x5
__int64 v136; // x6
__int64 v137; // x7
__int64 v138; // x1
__int64 v139; // x2
__int64 v140; // x3
__int64 v141; // x4
__int64 v142; // x5
__int64 v143; // x6
__int64 v144; // x7
__int64 v145; // x1
__int64 v146; // x2
__int64 v147; // x3
__int64 v148; // x4
__int64 v149; // x5
__int64 v150; // x6
__int64 v151; // x7
__int64 v152; // x1
__int64 v153; // x2
__int64 v154; // x3
__int64 v155; // x4
__int64 v156; // x5
__int64 v157; // x6
__int64 v158; // x7
__int64 v159; // x1
__int64 v160; // x2
__int64 v161; // x3
__int64 v162; // x4
__int64 v163; // x5
__int64 v164; // x6
__int64 v165; // x7
__int64 v166; // x1
__int64 v167; // x2
__int64 v168; // x3
__int64 v169; // x4
__int64 v170; // x5
__int64 v171; // x6
__int64 v172; // x7
__int64 v173; // x1
__int64 v174; // x2
__int64 v175; // x3
__int64 v176; // x4
__int64 v177; // x5
__int64 v178; // x6
__int64 v179; // x7
unsigned int v180; // w8
unsigned int v181; // w8
bool v182; // cf
bool v183; // zf
unsigned int v184; // w8
unsigned int v185; // w8
bool v186; // cf
bool v187; // zf
__int64 v188; // x1
__int64 v189; // x2
__int64 v190; // x3
__int64 v191; // x4
__int64 v192; // x5
__int64 v193; // x6
__int64 v194; // x7
unsigned int v195; // w8
signed int v196; // w8
__int64 v197; // x1
__int64 v198; // x2
__int64 v199; // x3
__int64 v200; // x4
__int64 v201; // x5
__int64 v202; // x6
__int64 v203; // x7
unsigned __int64 v204; // x0
_QWORD *v205; // x0
unsigned int i; // w22
__int64 v207; // x1
__int64 v208; // x2
__int64 v209; // x3
__int64 v210; // x4
__int64 v211; // x5
__int64 v212; // x6
__int64 v213; // x7
__int64 v214; // x10
__int64 v215; // [xsp+10h] [xbp-A0h]
__int64 v216; // [xsp+18h] [xbp-98h]
__int64 v217; // [xsp+20h] [xbp-90h]
char v218; // [xsp+28h] [xbp-88h]
int v219; // [xsp+2Ch] [xbp-84h]
__int64 v220; // [xsp+40h] [xbp-70h]
int v221; // [xsp+50h] [xbp-60h]
int v222; // [xsp+54h] [xbp-5Ch]
__int64 v223; // [xsp+68h] [xbp-48h]
v2 = a2;
v3 = a1;
v223 = 5139240511851214385LL;
v4 = sub_1800BE85C(a1, 0);
if ( (_DWORD)v4 )
goto LABEL_39;
*(_BYTE *)(v3 + 179) = v2;
if ( v2 != 1 )
{
if ( LOBYTE(qword_1801158C8[2505]) == 1 )
sub_1800D489C("%llx:%d", &byte_180101040, 8415054965657969967LL, 1337LL);
LOBYTE(qword_1801158C8[2505]) = 1;
v16 = sub_1800E086C(0);
v18 = *(_QWORD **)v16;
v17 = *(_QWORD *)(v16 + 8);
sub_1800F05A0(*(_QWORD **)v16, v17);
v19 = sub_1800BEA58(v3, 0x1808u);
if ( v19 == -1 || (v20 = sub_1800BEA58(v3, 0x180Cu), v20 == -1) )
{
v4 = 4294962293LL;
goto LABEL_39;
}
if ( v19 )
{
if ( v19 & 0xFFF )
v21 = (v19 + 4095) & 0xFFF;
else
v21 = v19;
if ( (v20 - 1) & v20 )
goto LABEL_90;
v22 = v20;
if ( v20 > v17 )
goto LABEL_90;
if ( v21 > v17 )
{
LABEL_22:
v4 = 4294961145LL;
goto LABEL_39;
}
if ( v17 > v20 )
v22 = v17;
v33 = 2952790016u - v22;
if ( (2952790016u - v22) & (v20 - 1) )
{
LABEL_90:
v4 = 4294961146LL;
goto LABEL_39;
}
if ( v33 < 0x8020D000 )
goto LABEL_22;
(*(void (__fastcall **)(_QWORD, _QWORD *, unsigned __int64, unsigned __int64, _QWORD))(MEMORY[0x18011A718] + 40LL))(
*(unsigned int *)(v3 + 220),
v18,
2952790016u - v22,
v17 >> 12,
0LL);
*(_QWORD *)(v3 + 344) = v33;
*(_QWORD *)(v3 + 456) = v18;
*(_DWORD *)(v3 + 352) = v17;
sub_1800BE9F0(v3, 0x1810u, v33);
sub_1800BE998(v3, 0x1818u, v17);
}
}
v5 = *(unsigned int **)(v3 + 200);
v6 = *v5;
if ( *v5 == -1
|| ((v7 = v5[1], (_DWORD)v7 != -1) ? (v8 = (v6 | ((unsigned __int64)(unsigned int)v7 << 32)) == -1LL) : (v8 = 1), v8) )
{
v4 = 4294962293LL;
LABEL_10:
sub_1800BE038(v3, v4);
LABEL_11:
sub_1800EF260((__int64)"%llx:%d\n", v9, v10, v11, v12, v13, v14, v15, 8415054965657969967LL);
LABEL_39:
sub_1800BDAB8(v3);
goto LABEL_40;
}
if ( ((unsigned __int8)v7 & 0xFu) > 7 )
{
v4 = 4294961196LL;
goto LABEL_10;
}
*(_DWORD *)(v3 + 216) = 4 << (v7 & 0xF);
if ( (v7 << 32) & 0xF000000000000LL )
{
v4 = 4294961195LL;
goto LABEL_10;
}
if ( (unsigned __int16)v6 <= 0xEuLL )
{
v4 = 4294961194LL;
goto LABEL_10;
}
v23 = *(_QWORD *)(v3 + 160);
v24 = *(_QWORD *)(v23 + 24);
*(_QWORD *)(v23 + 8) = 0LL;
*(_DWORD *)(v24 + 8) = 0;
*(_DWORD *)(*(_QWORD *)(v23 + 24) + 12LL) = 0;
sub_1800F05A0(*(_QWORD **)(v23 + 40), (unsigned __int64)*(unsigned int *)(v23 + 16) << 6);
sub_1800F05A0(*(_QWORD **)(v24 + 24), 16LL * *(unsigned int *)(v24 + 16));
*(_BYTE *)(v24 + 22) &= 0xFEu;
sub_1800BE998(v3, 0x1800u, v2);
sub_1800BE998(v3, 0x14u, 4587520);
sub_1800BE998(v3, 0x24u, ((*(_DWORD *)(v24 + 16) << 16) - 0x10000) | (*(_DWORD *)(v23 + 16) - 1));
sub_1800BE9F0(v3, 0x30u, *(_QWORD *)v24);
sub_1800BE9F0(v3, 0x28u, *(_QWORD *)v23);
*(_BYTE *)(v24 + 23) = 1;
*(_BYTE *)(v23 + 22) = 1;
v4 = sub_1800BE85C(v3, 1);
if ( (_DWORD)v4 )
goto LABEL_39;
*(_BYTE *)(v3 + 178) = 1;
if ( !*(_BYTE *)(v3 + 177) )
{
v216 = 0LL;
v217 = 0LL;
v215 = 0LL;
v4 = sub_1800BDE28(v3);
if ( !(_DWORD)v4 )
{
v35 = *(_QWORD *)(v3 + 448) + 2147500032LL - *(_QWORD *)(v3 + 320);
sub_1800BCC04(*(_QWORD *)(v3 + 160), (__int64)&v218);
v218 = 6;
v219 = 0;
v220 = v35;
v221 = 1;
sub_1800BCC2C(*(_QWORD *)(v3 + 160), &v218);
v4 = sub_1800BDE64(v3, *(_QWORD *)(v3 + 160), 0x2DC6C0uLL);
if ( !(_DWORD)v4 )
{
v43 = sub_1800EDBF4(0x1000uLL);
sub_1800F03F0((_QWORD *)v43, *(_QWORD **)(v3 + 448), 0x1000uLL);
*(_WORD *)(v3 + 224) = *(_WORD *)v43;
*(_DWORD *)(v3 + 242) = *(_DWORD *)(v43 + 20);
*(_QWORD *)(v3 + 234) = *(_QWORD *)(v43 + 12);
*(_QWORD *)(v3 + 226) = *(_QWORD *)(v43 + 4);
sub_1800F03F0((_QWORD *)(v3 + 247), (_QWORD *)(v43 + 24), 0x28uLL);
*(_QWORD *)(v3 + 288) = *(_QWORD *)(v43 + 64);
*(_BYTE *)(v3 + 246) = 0;
*(_BYTE *)(v3 + 287) = 0;
*(_BYTE *)(v3 + 296) = 0;
sub_1800EF260((__int64)"%llx:%d\n", v47, v48, v49, v50, v51, v52, v53, 8415054965657969967LL);
sub_1800EF260((__int64)"%llx:%d\n", v54, v55, v56, v57, v58, v59, v60, 8415054965657969967LL);
*(_WORD *)(v43 + 3102);
sub_1800EF260((__int64)"%llx:%d\n", v61, v62, v63, v64, v65, v66, v67, 8415054965657969967LL);
*(_WORD *)(v43 + 3102);
sub_1800EF260((__int64)"%llx:%d\n", v68, v69, v70, v71, v72, v73, v74, 8415054965657969967LL);
*(_WORD *)(v43 + 3102);
sub_1800EF260((__int64)"%llx:%d\n", v75, v76, v77, v78, v79, v80, v81, 8415054965657969967LL);
*(_WORD *)(v43 + 3102);
sub_1800EF260((__int64)"%llx:%d\n", v82, v83, v84, v85, v86, v87, v88, 8415054965657969967LL);
sub_1800EF260((__int64)"%llx:%d\n", v89, v90, v91, v92, v93, v94, v95, 8415054965657969967LL);
if ( (*(_WORD *)(v43 + 3102) & 0x187) == 129 )
sub_1800EF260((__int64)"%llx:%d\n", v96, v97, v98, v99, v100, v101, v102, 8415054965657969967LL);
sub_1800EF260((__int64)"%llx:%d\n", v96, v97, v98, v99, v100, v101, v102, 8415054965657969967LL);
sub_1800EF260((__int64)"%llx:%d\n", v103, v104, v105, v106, v107, v108, v109, 8415054965657969967LL);
sub_1800EF260((__int64)"%llx:%d\n", v110, v111, v112, v113, v114, v115, v116, 8415054965657969967LL);
sub_1800EF260((__int64)"%llx:%d\n", v117, v118, v119, v120, v121, v122, v123, 8415054965657969967LL);
sub_1800EF260((__int64)"%llx:%d\n", v124, v125, v126, v127, v128, v129, v130, 8415054965657969967LL);
sub_1800EF260((__int64)"%llx:%d\n", v131, v132, v133, v134, v135, v136, v137, 8415054965657969967LL);
sub_1800EF260((__int64)"%llx:%d\n", v138, v139, v140, v141, v142, v143, v144, 8415054965657969967LL);
sub_1800EF260((__int64)"%llx:%d\n", v145, v146, v147, v148, v149, v150, v151, 8415054965657969967LL);
sub_1800EF260((__int64)"%llx:%d\n", v152, v153, v154, v155, v156, v157, v158, 8415054965657969967LL);
sub_1800EF260((__int64)"%llx:%d\n", v159, v160, v161, v162, v163, v164, v165, 8415054965657969967LL);
sub_1800EF260((__int64)"%llx:%d\n", v166, v167, v168, v169, v170, v171, v172, 8415054965657969967LL);
v180 = *(unsigned __int8 *)(v43 + 512);
v182 = v180 >= 0x60;
v181 = v180 & 0xF;
if ( v182 )
{
v182 = v181 >= 6;
v183 = v181 == 6;
}
else
{
v182 = 1;
v183 = 0;
}
if ( !v183 && v182 )
{
v4 = 4294961193LL;
}
else
{
v184 = *(unsigned __int8 *)(v43 + 513);
v182 = v184 >= 0x40;
v185 = v184 & 0xF;
if ( v182 )
{
v186 = v185 >= 4;
v187 = v185 == 4;
}
else
{
v186 = 1;
v187 = 0;
}
if ( v187 || !v186 )
{
v195 = *(unsigned __int8 *)(v43 + 77);
if ( v195 > 0x1F || (v196 = 1 << v195, v196 >= 513) )
v196 = 512;
*(_DWORD *)(v3 + 300) = v196;
*(_DWORD *)(v3 + 304) = *(_DWORD *)(v43 + 516);
*(_DWORD *)(v3 + 308) = *(unsigned __int8 *)(v43 + 3098);
sub_1800EF260((__int64)"%llx:%d\n", v173, v174, v175, v176, v177, v178, v179, 8415054965657969967LL);
sub_1800EF260((__int64)"%llx:%d\n", v197, v198, v199, v200, v201, v202, v203, 8415054965657969967LL);
v204 = *(unsigned int *)(v3 + 304);
if ( (_DWORD)v204 )
{
v205 = (_QWORD *)sub_1800EDBF4(v204);
*(_QWORD *)(v3 + 360) = v205;
sub_1800F05A0(v205, *(unsigned int *)(v3 + 304));
for ( i = 2; i <= *(_DWORD *)(v3 + 304); ++i )
{
v4 = sub_1800BE4F0(*(_DWORD *)(v3 + 180), i, (__int64)&v215);
if ( (_DWORD)v4 )
goto LABEL_84;
v214 = HIDWORD(v217);
*(_BYTE *)(*(_QWORD *)(v3 + 360) + i - 1) = BYTE4(v217);
*(_BYTE *)(v3 + v214 + 368) = i;
sub_1800EF260((__int64)"%llx:%d\n", v207, v208, v209, v210, v211, v212, v213, 8415054965657969967LL);
}
v4 = 0LL;
if ( !v43 )
goto LABEL_52;
}
else
{
v4 = 0LL;
}
LABEL_51:
sub_1800EE010((_QWORD *)v43);
LABEL_52:
sub_1800BE038(v3, v4);
if ( (_DWORD)v4 )
goto LABEL_11;
*(_BYTE *)(v3 + 177) = 1;
goto LABEL_32;
}
v4 = 4294961192LL;
}
LABEL_84:
v44 = v43;
LABEL_48:
v45 = *(_QWORD **)(v3 + 360);
if ( v45 )
sub_1800EE010(v45);
if ( !v44 )
goto LABEL_52;
goto LABEL_51;
}
sub_1800EF260((__int64)"%llx:%d\n", v36, v37, v38, v39, v40, v41, v42, 8415054965657969967LL);
}
v43 = 0LL;
v44 = 0LL;
goto LABEL_48;
}
LABEL_32:
sub_1800EF260((__int64)"%llx:%d\n", v9, v10, v11, v12, v13, v14, v15, 8415054965657969967LL);
v25 = *(_QWORD *)(*(_QWORD *)(v3 + 168) + 24LL);
v4 = sub_1800BDE28(v3);
if ( (_DWORD)v4 )
{
LABEL_55:
sub_1800BE038(v3, v4);
goto LABEL_39;
}
sub_1800F05A0(*(_QWORD **)(v25 + 24), 16LL * *(unsigned int *)(v25 + 16));
sub_1800BCC04(*(_QWORD *)(v3 + 160), (__int64)&v218);
v218 = 5;
v220 = *(_QWORD *)v25;
v221 = ((*(_DWORD *)(v25 + 16) << 16) - 0x10000) | *(unsigned __int16 *)(v25 + 20);
v222 = 1;
sub_1800BCC2C(*(_QWORD *)(v3 + 160), &v218);
v4 = sub_1800BDE64(v3, *(_QWORD *)(v3 + 160), 0x2DC6C0uLL);
if ( (_DWORD)v4 )
goto LABEL_91;
*(_BYTE *)(v25 + 23) = 1;
sub_1800BE038(v3, 0);
v46 = *(_QWORD *)(v3 + 168);
v4 = sub_1800BDE28(v3);
if ( (_DWORD)v4 )
goto LABEL_55;
sub_1800F05A0(*(_QWORD **)(v46 + 40), (unsigned __int64)*(unsigned int *)(v46 + 16) << 6);
sub_1800BCC04(*(_QWORD *)(v3 + 160), (__int64)&v218);
v218 = 1;
v220 = *(_QWORD *)v46;
v221 = ((*(_DWORD *)(v46 + 16) << 16) - 0x10000) | *(unsigned __int16 *)(v46 + 20);
v222 = (*(unsigned __int16 *)(*(_QWORD *)(v46 + 24) + 20LL) << 16) | 1;
sub_1800BCC2C(*(_QWORD *)(v3 + 160), &v218);
v4 = sub_1800BDE64(v3, *(_QWORD *)(v3 + 160), 0x2DC6C0uLL);
if ( (_DWORD)v4 )
{
LABEL_91:
sub_1800EF260((__int64)"%llx:%d\n", v26, v27, v28, v29, v30, v31, v32, 8415054965657969967LL);
goto LABEL_55;
}
*(_BYTE *)(v46 + 22) = 1;
sub_1800BE038(v3, 0);
sub_1800EF260((__int64)"%llx:%d\n", v188, v189, v190, v191, v192, v193, v194, 8415054965657969967LL);
LABEL_40:
if ( 5139240511851214385LL != v223 )
sub_1800D4A5C();
return v4;
}
// 180101040: using guessed type char byte_180101040;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800BD9B0) ----------------------------------------------------
void __fastcall sub_1800BD9B0(unsigned int a1)
{
__int64 v1; // x0
__int64 v2; // x19
__int64 v3; // x2
v1 = sub_1800BCD80(a1);
v2 = v1;
if ( *(_QWORD *)(v1 + 192) )
{
sub_1800BDAB8(v1);
sub_1800BDA6C(v2);
(*(void (__fastcall **)(_QWORD))(MEMORY[0x18011A718] + 32LL))(*(unsigned int *)(v2 + 220));
}
if ( *(_QWORD *)(v2 + 320) )
{
(*(void (__fastcall **)(_QWORD, signed __int64, signed __int64))(MEMORY[0x18011A718] + 48LL))(
*(unsigned int *)(v2 + 220),
2147500032LL,
8LL);
sub_1800EE010(*(_QWORD **)(v2 + 320));
*(_QWORD *)(v2 + 320) = 0LL;
}
if ( *(_QWORD *)(v2 + 344) )
{
v3 = (unsigned int)(*(_DWORD *)(v2 + 352) >> 12);
(*(void (__fastcall **)(_QWORD))(MEMORY[0x18011A718] + 48LL))(*(unsigned int *)(v2 + 220));
*(_QWORD *)(v2 + 344) = 0LL;
*(_DWORD *)(v2 + 352) = 0;
}
*(_BYTE *)(v2 + 176) = 0;
}
//----- (00000001800BDA6C) ----------------------------------------------------
void __fastcall sub_1800BDA6C(__int64 a1)
{
__int64 v1; // x19
v1 = a1;
sub_1800E4314(*(_QWORD *)(a1 + 192), 0);
sub_1800E4354(*(_QWORD *)(v1 + 192), 0);
sub_1800E46A0(*(_WORD **)(v1 + 192), 3);
sub_1800E4244(*(_QWORD *)(v1 + 192));
*(_QWORD *)(v1 + 192) = 0LL;
}
//----- (00000001800BDAB8) ----------------------------------------------------
signed __int64 __fastcall sub_1800BDAB8(__int64 a1)
{
__int64 v1; // x19
__int64 v2; // x21
signed __int64 v3; // x20
__int64 v4; // x1
__int64 v5; // x2
__int64 v6; // x3
__int64 v7; // x4
__int64 v8; // x5
__int64 v9; // x6
__int64 v10; // x7
__int64 v11; // x21
__int64 v12; // x1
__int64 v13; // x2
__int64 v14; // x3
__int64 v15; // x4
__int64 v16; // x5
__int64 v17; // x6
__int64 v18; // x7
__int64 v19; // x0
__int64 v20; // x21
int v21; // w0
__int64 v22; // x1
__int64 v23; // x2
__int64 v24; // x3
__int64 v25; // x4
__int64 v26; // x5
__int64 v27; // x6
__int64 v28; // x7
char v30; // [xsp+18h] [xbp-68h]
int v31; // [xsp+40h] [xbp-40h]
__int64 v32; // [xsp+58h] [xbp-28h]
v1 = a1;
v32 = 5139240511851214385LL;
if ( *(_BYTE *)(a1 + 178) )
{
v2 = *(_QWORD *)(a1 + 168);
if ( *(_BYTE *)(v2 + 22) )
{
v3 = sub_1800BDE28(a1);
if ( !(_DWORD)v3 )
{
sub_1800BCC04(*(_QWORD *)(v1 + 160), (__int64)&v30);
v30 = 0;
v31 = *(unsigned __int16 *)(v2 + 20);
sub_1800BCC2C(*(_QWORD *)(v1 + 160), &v30);
v3 = sub_1800BDE64(v1, *(_QWORD *)(v1 + 160), 0x2DC6C0uLL);
if ( (_DWORD)v3 )
sub_1800EF260((__int64)"%llx:%d\n", v4, v5, v6, v7, v8, v9, v10, 8415054965657969967LL);
}
*(_BYTE *)(v2 + 22) = 0;
*(_QWORD *)(v2 + 8) = 0LL;
sub_1800BE038(v1, v3);
sub_1800BE038(v1, v3);
v2 = *(_QWORD *)(v1 + 168);
}
else
{
v3 = 0LL;
}
v11 = *(_QWORD *)(v2 + 24);
if ( *(_BYTE *)(v11 + 23) )
{
v3 = sub_1800BDE28(v1);
if ( !(_DWORD)v3 )
{
sub_1800BCC04(*(_QWORD *)(v1 + 160), (__int64)&v30);
v30 = 4;
v31 = *(unsigned __int16 *)(v11 + 20);
sub_1800BCC2C(*(_QWORD *)(v1 + 160), &v30);
v3 = sub_1800BDE64(v1, *(_QWORD *)(v1 + 160), 0x2DC6C0uLL);
if ( (_DWORD)v3 )
sub_1800EF260((__int64)"%llx:%d\n", v12, v13, v14, v15, v16, v17, v18, 8415054965657969967LL);
}
*(_BYTE *)(v11 + 23) = 0;
*(_QWORD *)(v11 + 8) = 0LL;
*(_BYTE *)(v11 + 22) &= 0xFEu;
sub_1800BE038(v1, v3);
sub_1800BE038(v1, v3);
}
if ( *(_BYTE *)(v1 + 179) != 1 )
{
v19 = sub_1800BDE28(v1);
if ( !(_DWORD)v19 )
{
v20 = sub_1800D5F1C(v19);
v21 = sub_1800BEA58(v1, 0x14u);
sub_1800BE998(v1, 0x14u, v21 & 0xFFFF3FFF | 0x4000);
while ( (sub_1800BEA58(v1, 0x1Cu) & 0xC) != 8 )
{
if ( sub_1800D5F30(v20, 0xE4E1C00uLL) )
{
sub_1800BEA58(v1, 0x1Cu);
sub_1800EF260((__int64)"%llx:%d\n", v22, v23, v24, v25, v26, v27, v28, 8415054965657969967LL);
v3 = 4294961294LL;
break;
}
sub_1800D5F60(1000LL);
}
}
}
sub_1800BE85C(v1, 0);
*(_BYTE *)(v1 + 178) = 0;
}
else
{
v3 = 0LL;
}
*(_BYTE *)(v1 + 179) = 5;
sub_1800BE038(v1, v3);
if ( 5139240511851214385LL != v32 )
sub_1800D4A5C();
return v3;
}
//----- (00000001800BDD34) ----------------------------------------------------
void sub_1800BDD34()
{
unsigned int i; // w19
for ( i = 0; i != 2; ++i )
sub_1800BD9B0(i);
}
//----- (00000001800BDD68) ----------------------------------------------------
signed __int64 __fastcall sub_1800BDD68(unsigned int a1, int a2)
{
int v2; // w20
__int64 v3; // x19
signed __int64 v4; // x21
char v6; // [xsp+8h] [xbp-68h]
char v7; // [xsp+9h] [xbp-67h]
int v8; // [xsp+Ch] [xbp-64h]
__int64 v9; // [xsp+48h] [xbp-28h]
v2 = a2;
v9 = 5139240511851214385LL;
v3 = sub_1800BCD80(a1);
v4 = sub_1800BDE28(v3);
if ( !(_DWORD)v4 )
{
sub_1800BCC04(*(_QWORD *)(v3 + 168), (__int64)&v6);
v6 = 0;
v8 = v2;
v7 |= 0x20u;
sub_1800BCC2C(*(_QWORD *)(v3 + 168), &v6);
v4 = sub_1800BDE64(v3, *(_QWORD *)(v3 + 168), 0x1C9C380uLL);
}
sub_1800BE038(v3, v4);
if ( 5139240511851214385LL != v9 )
sub_1800D4A5C();
return v4;
}
//----- (00000001800BDE28) ----------------------------------------------------
signed __int64 __fastcall sub_1800BDE28(__int64 a1)
{
signed __int64 result; // x0
unsigned int v2; // w8
bool v3; // cf
bool v4; // zf
if ( *(_BYTE *)(a1 + 384) )
return 4294961293LL;
v2 = *(_DWORD *)(a1 + 380);
if ( v2 + 7004 >= 2 )
v3 = v2 + 6001 >= 2;
else
v3 = 0;
if ( v3 )
v4 = v2 == -5003;
else
v4 = 1;
if ( v4 )
result = v2;
else
result = 0LL;
return result;
}
//----- (00000001800BDE64) ----------------------------------------------------
signed __int64 __fastcall sub_1800BDE64(__int64 a1, __int64 a2, unsigned __int64 a3)
{
unsigned __int64 v3; // x21
__int64 v4; // x20
__int64 v5; // x19
int v6; // w22
unsigned int v7; // w23
__int64 v8; // x0
__int64 v9; // x23
unsigned __int64 v10; // x0
__int64 v11; // x22
__int64 v12; // x25
__int64 v13; // x26
_WORD *v14; // x24
unsigned __int16 *v15; // x9
unsigned int v16; // w8
unsigned __int64 v17; // x10
int v18; // w9
signed __int64 v19; // x21
__int64 v20; // x8
int v21; // w9
unsigned int v23; // w11
signed __int64 v24; // x10
v3 = a3;
v4 = a2;
v5 = a1;
v6 = *(_DWORD *)(a2 + 12);
v7 = 2 * *(unsigned __int16 *)(a2 + 20) * *(_DWORD *)(a1 + 216) + 4096;
((void (*)(void))sub_1800D9F80)();
v8 = sub_1800BE998(v5, v7, v6);
v9 = *(_QWORD *)(v4 + 24);
v10 = sub_1800D5F1C(v8);
v11 = v10;
v12 = *(_QWORD *)(v9 + 24);
v13 = *(unsigned int *)(v9 + 8);
v14 = (_WORD *)(v12 + 16 * v13 + 14);
while ( 1 )
{
if ( (*v14 & 1) != (*(_BYTE *)(v9 + 22) & 1) )
{
sub_1800D9F80(v10);
v15 = (unsigned __int16 *)(v12 + 16 * v13);
v16 = v15[4];
v17 = v15[5];
v18 = v15[6];
if ( v17 <= 1 && *(_BYTE *)(v5 + 48 * v17 + 22) )
{
if ( v16 <= *(_DWORD *)(v5 + 48 * v17 + 16) )
{
v23 = -(((unsigned int)(unsigned __int16)*v14 >> 1) & 0x700 | ((unsigned int)(unsigned __int16)*v14 >> 1) & 0xFF);
v24 = v5 + 48 * v17;
*(_DWORD *)(v24 + 8) = v16;
if ( v18 == *(unsigned __int16 *)(v24 + 32) )
v19 = v23;
else
v19 = 4294960291LL;
goto LABEL_12;
}
v19 = 4294960294LL;
}
else
{
v19 = 4294960295LL;
}
sub_1800BE038(v5, v19);
goto LABEL_16;
}
if ( sub_1800D5F30(v11, v3) )
break;
v10 = sub_1800D5F60(10LL);
}
if ( *(_WORD *)(v9 + 20) )
v19 = 4294960293LL;
else
v19 = 4294960292LL;
LABEL_12:
sub_1800BE038(v5, v19);
if ( (unsigned int)v19 >> 1 == 2147480146 )
return v19;
LABEL_16:
v20 = *(_QWORD *)(v4 + 24);
v21 = *(_DWORD *)(v20 + 8) + 1;
*(_DWORD *)(v20 + 8) = v21;
if ( v21 == *(_DWORD *)(v20 + 16) )
{
*(_DWORD *)(v20 + 8) = 0;
*(_BYTE *)(v20 + 22) ^= 1u;
}
sub_1800BE998(
v5,
(2 * *(unsigned __int16 *)(*(_QWORD *)(v4 + 24) + 20LL) | 1) * *(_DWORD *)(v5 + 216) + 4096,
*(_DWORD *)(*(_QWORD *)(v4 + 24) + 8LL));
return v19;
}
// 1800D9F80: using guessed type __int64 __fastcall sub_1800D9F80(_QWORD);
//----- (00000001800BE038) ----------------------------------------------------
__int64 __fastcall sub_1800BE038(__int64 result, int a2)
{
int v2; // w19
__int64 v3; // x20
__int64 v4; // x1
__int64 v5; // x2
__int64 v6; // x3
__int64 v7; // x4
__int64 v8; // x5
__int64 v9; // x6
__int64 v10; // x7
__int64 v11; // x21
__int64 i; // x21
v2 = a2;
v3 = result;
if ( a2 )
{
if ( *(_QWORD *)(result + 192) )
{
result = sub_1800BEA58(result, 0x1Cu);
if ( result & 2 )
{
if ( !*(_BYTE *)(v3 + 384) )
{
v11 = 0LL;
*(_BYTE *)(v3 + 384) = 1;
while ( v11 != 16 )
{
*(_DWORD *)(v3 + v11 + 388) = sub_1800BEA58(v3, (signed int)v11 + 6416);
v11 += 4LL;
}
for ( i = 0LL; i != 32; i += 4LL )
*(_DWORD *)(v3 + i + 404) = sub_1800BEA58(v3, (signed int)i + 6528);
result = sub_1800EF260((__int64)"%llx:%d\n", v4, v5, v6, v7, v8, v9, v10, 8415054965657969967LL);
}
}
}
if ( !*(_DWORD *)(v3 + 380) )
*(_DWORD *)(v3 + 380) = v2;
}
return result;
}
//----- (00000001800BE11C) ----------------------------------------------------
__int64 __fastcall sub_1800BE11C(unsigned int a1, int a2, __int64 a3, int a4, __int64 a5)
{
__int64 v5; // x19
int v6; // w24
__int64 v7; // x25
int v8; // w21
__int64 v9; // x0
__int64 v10; // x1
__int64 v11; // x2
__int64 v12; // x3
__int64 v13; // x4
__int64 v14; // x5
__int64 v15; // x6
__int64 v16; // x7
__int64 v17; // x20
__int64 v18; // x8
signed __int64 v19; // x28
signed __int64 v20; // x10
__int64 *v21; // x25
signed __int64 v22; // x9
unsigned __int64 v23; // x2
int v24; // w25
signed __int64 v26; // x8
char v27; // [xsp+18h] [xbp-98h]
char v28; // [xsp+19h] [xbp-97h]
int v29; // [xsp+1Ch] [xbp-94h]
__int64 v30; // [xsp+30h] [xbp-80h]
__int64 v31; // [xsp+38h] [xbp-78h]
int v32; // [xsp+40h] [xbp-70h]
int v33; // [xsp+44h] [xbp-6Ch]
int v34; // [xsp+48h] [xbp-68h]
__int64 v35; // [xsp+58h] [xbp-58h]
v5 = a5;
v6 = a4;
v7 = a3;
v8 = a2;
v35 = 5139240511851214385LL;
v9 = sub_1800BCD80(a1);
v17 = v9;
if ( v7 & 0xFFF )
{
v26 = 2415LL;
LABEL_26:
sub_1800D489C("%llx:%d", &byte_180101040, 8415054965657969967LL, v26);
}
if ( !(_DWORD)v5 || *(_DWORD *)(v9 + 300) < (unsigned int)v5 )
{
v26 = 2416LL;
goto LABEL_26;
}
if ( *(_BYTE *)(v9 + 178) && !(unsigned int)sub_1800BDE28(v9) )
{
(*(void (__fastcall **)(_QWORD, __int64, signed __int64, __int64, _QWORD))(MEMORY[0x18011A718] + 40LL))(
*(unsigned int *)(v17 + 220),
v7,
2147536896LL,
v5,
0LL);
v18 = 0LL;
v19 = 100000LL;
v20 = 2147536896LL;
while ( (unsigned int)v5 != v18 )
{
*(_QWORD *)(*(_QWORD *)(v17 + 440) + 8 * v18++) = (unsigned int)v20 & 0xFFFFF000;
v19 += 30000LL;
v20 += 4096LL;
}
v21 = *(__int64 **)(v17 + 440);
sub_1800BCC04(*(_QWORD *)(v17 + 168), (__int64)&v27);
v27 = 2;
v29 = v8;
v28 |= 0x20u;
v30 = *v21;
if ( (unsigned __int16)v5 == 2 )
{
v22 = v21[1];
}
else
{
if ( (unsigned __int16)v5 == 1 )
{
v31 = 0LL;
goto LABEL_17;
}
v22 = *(_QWORD *)(v17 + 312) + 8LL;
}
v31 = v22;
LABEL_17:
v32 = v6;
v33 = 0;
v34 = (unsigned __int16)v5 - 1;
sub_1800BCC2C(*(_QWORD *)(v17 + 168), &v27);
if ( *(_BYTE *)(v17 + 179) == 1 )
v23 = v19;
else
v23 = 30000000LL;
v24 = sub_1800BDE64(v17, *(_QWORD *)(v17 + 168), v23);
(*(void (__fastcall **)(_QWORD, signed __int64, __int64))(MEMORY[0x18011A718] + 48LL))(
*(unsigned int *)(v17 + 220),
2147536896LL,
v5);
sub_1800BE038(v17, v24);
if ( !v24 )
goto LABEL_22;
}
sub_1800EF260((__int64)"%llx:%d\n", v10, v11, v12, v13, v14, v15, v16, 8415054965657969967LL);
v5 = 0LL;
LABEL_22:
if ( 5139240511851214385LL != v35 )
sub_1800D4A5C();
return v5;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800BE3CC) ----------------------------------------------------
void sub_1800BE3CC()
{
JUMPOUT(&loc_1800BE124);
}
//----- (00000001800BE3D4) ----------------------------------------------------
signed __int64 __fastcall sub_1800BE3D4(unsigned int a1, __int64 a2)
{
__int64 v2; // x19
signed __int64 v3; // x21
__int64 v4; // x0
__int64 v5; // x1
__int64 v6; // x2
__int64 v7; // x3
__int64 v8; // x4
__int64 v9; // x5
__int64 v10; // x6
__int64 v11; // x7
__int64 v12; // x20
int v13; // w8
__int64 v14; // x1
__int64 v15; // x2
__int64 v16; // x3
__int64 v17; // x4
__int64 v18; // x5
__int64 v19; // x6
__int64 v20; // x7
signed __int64 result; // x0
char v22; // [xsp+17h] [xbp-29h]
__int64 v23; // [xsp+18h] [xbp-28h]
v2 = a2;
v23 = 5139240511851214385LL;
v3 = sub_1800BCD80(a1);
v22 = 0;
v4 = sub_1800EC548(v2, 0);
v12 = v4;
if ( v2 && v4 )
{
v13 = *(_DWORD *)(v3 + 304);
v22 = *(_DWORD *)(v3 + 304);
if ( v13 )
{
sub_1800EC16C(v4, "namespaces-present", &v22, 1u);
sub_1800EF260((__int64)"%llx:%d\n", v14, v15, v16, v17, v18, v19, v20, 8415054965657969967LL);
}
result = sub_1800D9FD0();
if ( (_DWORD)result )
{
v22 = 1;
sub_1800EC16C(v12, "ibec-boot", &v22, 1u);
result = sub_1800EC16C(v2, "ignore-link-speed-mismatch", &v22, 1u);
}
}
else
{
result = sub_1800EF260((__int64)"%llx:%d\n", v5, v6, v7, v8, v9, v10, v11, 8415054965657969967LL);
}
if ( 5139240511851214385LL != v23 )
sub_1800D4A5C();
return result;
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800BE4F0) ----------------------------------------------------
signed __int64 __fastcall sub_1800BE4F0(unsigned int a1, unsigned int a2, __int64 a3)
{
__int64 v3; // x20
unsigned int v4; // w21
__int64 v5; // x19
__int64 v6; // x1
__int64 v7; // x2
__int64 v8; // x3
__int64 v9; // x4
__int64 v10; // x5
__int64 v11; // x6
__int64 v12; // x7
signed __int64 v13; // x21
signed __int64 v14; // x23
__int64 v15; // x1
__int64 v16; // x2
__int64 v17; // x3
__int64 v18; // x4
__int64 v19; // x5
__int64 v20; // x6
__int64 v21; // x7
signed __int64 v23; // x21
__int64 v24; // x10
char v25; // [xsp+18h] [xbp-78h]
unsigned int v26; // [xsp+1Ch] [xbp-74h]
__int64 v27; // [xsp+30h] [xbp-60h]
int v28; // [xsp+40h] [xbp-50h]
__int64 v29; // [xsp+58h] [xbp-38h]
v3 = a3;
v4 = a2;
v29 = 5139240511851214385LL;
v5 = sub_1800BCD80(a1);
if ( (unsigned int)sub_1800BDE28(v5) )
goto LABEL_2;
if ( *(_DWORD *)(v5 + 304) < v4 )
{
sub_1800EF260((__int64)"%llx:%d\n", v6, v7, v8, v9, v10, v11, v12, 8415054965657969967LL);
v13 = 4294959296LL;
goto LABEL_7;
}
v14 = *(_QWORD *)(v5 + 448) + 2147500032LL - *(_QWORD *)(v5 + 320);
sub_1800BCC04(*(_QWORD *)(v5 + 160), (__int64)&v25);
v25 = 6;
v26 = v4;
v27 = v14;
v28 = 0;
sub_1800BCC2C(*(_QWORD *)(v5 + 160), &v25);
v13 = sub_1800BDE64(v5, *(_QWORD *)(v5 + 160), 0x2DC6C0uLL);
if ( !(_DWORD)v13 )
{
v23 = sub_1800EDBF4(0x1000uLL);
sub_1800F03F0((_QWORD *)v23, *(_QWORD **)(v5 + 448), 0x1000uLL);
if ( *(_QWORD *)(v23 + 8) )
{
if ( *(_QWORD *)v23
&& (v24 = *(_BYTE *)(v23 + 26) & 0xF, *(_BYTE *)(v23 + 128 + 4 * v24 + 2) == 12LL)
&& !*(_WORD *)(v23 + 128 + 4 * v24) )
{
*(_BYTE *)v3 = 1;
*(_QWORD *)(v3 + 8) = *(_QWORD *)v23;
*(_DWORD *)(v3 + 16) = 4096;
*(_DWORD *)(v3 + 20) = *(unsigned __int8 *)(v23 + 384);
}
else
{
*(_BYTE *)v3 = 0;
}
}
else
{
*(_BYTE *)v3 = 0;
if ( !v23 )
goto LABEL_2;
}
sub_1800EE010((_QWORD *)v23);
LABEL_2:
v13 = sub_1800BDE28(v5);
goto LABEL_7;
}
sub_1800EF260((__int64)"%llx:%d\n", v15, v16, v17, v18, v19, v20, v21, 8415054965657969967LL);
LABEL_7:
if ( 5139240511851214385LL != v29 )
sub_1800D4A5C();
return v13;
}
//----- (00000001800BE6BC) ----------------------------------------------------
__int64 __fastcall sub_1800BE6BC(unsigned int a1)
{
return *(unsigned int *)(sub_1800BCD80(a1) + 300);
}
//----- (00000001800BE6D4) ----------------------------------------------------
__int64 __fastcall sub_1800BE6D4(unsigned int a1, __int64 a2)
{
return *(unsigned __int8 *)(sub_1800BCD80(a1) + a2 + 368);
}
//----- (00000001800BE85C) ----------------------------------------------------
signed __int64 __fastcall sub_1800BE85C(__int64 a1, int a2)
{
int v2; // w20
__int64 v3; // x19
__int64 v4; // x21
int v5; // w0
int v6; // w2
unsigned __int64 v7; // x1
BOOL v8; // w22
int v9; // w0
__int64 v10; // x1
__int64 v11; // x2
__int64 v12; // x3
__int64 v13; // x4
__int64 v14; // x5
__int64 v15; // x6
__int64 v16; // x7
signed __int64 v17; // x20
v2 = a2;
v3 = a1;
v4 = sub_1800D5F1C(a1);
v5 = sub_1800BEA58(v3, 0x14u);
if ( v5 != -1 )
{
if ( v2 )
v6 = v5 | 1;
else
v6 = v5 & 0xFFFFFFFE;
sub_1800BE998(v3, 0x14u, v6);
while ( 1 )
{
v7 = v2 && *(_BYTE *)(v3 + 179) != 1 ? 240000000LL : 5000000LL;
v8 = sub_1800D5F30(v4, v7);
v9 = sub_1800BEA58(v3, 0x1Cu);
if ( v9 == -1 )
break;
if ( v2 )
{
if ( v9 & 1 )
goto LABEL_19;
if ( v8 )
{
sub_1800EF260((__int64)"%llx:%d\n", v10, v11, v12, v13, v14, v15, v16, 8415054965657969967LL);
v17 = 4294961295LL;
goto LABEL_21;
}
}
else
{
if ( !(v9 & 1) )
{
LABEL_19:
v17 = 0LL;
goto LABEL_21;
}
if ( v8 )
{
sub_1800EF260((__int64)"%llx:%d\n", v10, v11, v12, v13, v14, v15, v16, 8415054965657969967LL);
v17 = 4294961296LL;
goto LABEL_21;
}
}
sub_1800D5F60(1000LL);
}
}
v17 = 4294962293LL;
LABEL_21:
sub_1800BE038(v3, v17);
return v17;
}
//----- (00000001800BE998) ----------------------------------------------------
__int64 __fastcall sub_1800BE998(__int64 result, unsigned int a2, int a3)
{
__int64 v3; // x29
__int64 v4; // x30
if ( a2 > (unsigned __int64)(*(_QWORD *)(result + 208) - 4LL) )
sub_1800D489C("%llx:%d", &byte_180101040, 8415054965657969967LL, 319LL, v3, v4);
*(_DWORD *)(*(_QWORD *)(result + 200) + a2) = a3;
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800BE9F0) ----------------------------------------------------
__int64 __fastcall sub_1800BE9F0(__int64 result, unsigned int a2, __int64 a3)
{
__int64 v3; // x29
__int64 v4; // x30
if ( a2 > (unsigned __int64)(*(_QWORD *)(result + 208) - 8LL) )
sub_1800D489C("%llx:%d", &byte_180101040, 8415054965657969967LL, 326LL, v3, v4);
*(_QWORD *)(*(_QWORD *)(result + 200) + a2) = a3;
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800BEA58) ----------------------------------------------------
__int64 __fastcall sub_1800BEA58(__int64 a1, unsigned int a2)
{
__int64 v2; // x29
__int64 v3; // x30
if ( a2 > (unsigned __int64)(*(_QWORD *)(a1 + 208) - 4LL) )
sub_1800D489C("%llx:%d", &byte_180101040, 8415054965657969967LL, 346LL, v2, v3);
return *(unsigned int *)(*(_QWORD *)(a1 + 200) + a2);
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800BEAB0) ----------------------------------------------------
__int64 __fastcall sub_1800BEAB0(__int64 a1)
{
__int64 v1; // x19
__int64 v2; // x0
__int64 v3; // x3
__int64 v4; // x4
__int64 v5; // x5
__int64 v6; // x6
__int64 v7; // x7
__int64 v8; // x0
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
__int64 v14; // x0
__int64 v15; // x3
__int64 v16; // x4
__int64 v17; // x5
__int64 v18; // x6
__int64 v19; // x7
__int64 v20; // x0
__int64 v21; // x3
__int64 v22; // x4
__int64 v23; // x5
__int64 v24; // x6
__int64 v25; // x7
v1 = a1;
if ( (unsigned int)sub_1800BE6D4(a1, 2LL) )
{
v2 = sub_1800BE6D4(v1, 2LL);
sub_1800BEB7C(v1, 2LL, v2, v3, v4, v5, v6, v7);
}
if ( (unsigned int)sub_1800BE6D4(v1, 3LL) )
{
v8 = sub_1800BE6D4(v1, 3LL);
sub_1800BEB7C(v1, 3LL, v8, v9, v10, v11, v12, v13);
}
if ( (unsigned int)sub_1800BE6D4(v1, 5LL) )
{
v14 = sub_1800BE6D4(v1, 5LL);
sub_1800BEB7C(v1, 5LL, v14, v15, v16, v17, v18, v19);
}
if ( (unsigned int)sub_1800BE6D4(v1, 8LL) )
{
v20 = sub_1800BE6D4(v1, 8LL);
sub_1800BEB7C(v1, 8LL, v20, v21, v22, v23, v24, v25);
}
return 0LL;
}
//----- (00000001800BEB7C) ----------------------------------------------------
// write access to const memory has been detected, the output may be wrong!
__int64 __fastcall sub_1800BEB7C(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
unsigned int v8; // w22
int v9; // w20
__int64 v10; // x21
__int64 v11; // x19
unsigned int v12; // w24
__int64 v13; // x5
__int64 v14; // x6
__int64 v15; // x7
const char *v16; // x4
signed int v17; // w8
bool v18; // zf
__int64 result; // x0
signed __int64 v20; // x8
char v21; // [xsp+10h] [xbp-70h]
unsigned int v22; // [xsp+18h] [xbp-68h]
char v23; // [xsp+28h] [xbp-58h]
__int64 v24; // [xsp+38h] [xbp-48h]
v8 = a3;
v9 = a2;
v10 = a1;
v24 = 5139240511851214385LL;
sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, 1859462069615974072LL);
v11 = 0LL;
if ( !(unsigned int)sub_1800BE4F0(v10, v8, (__int64)&v21) && v21 )
{
v12 = v22;
v11 = ((__int64 (__fastcall *)(signed __int64, signed __int64, _QWORD))loc_1800EDE2C)(1LL, 152LL, 0LL);
*(_DWORD *)(v11 + 112) = v10;
*(_DWORD *)(v11 + 116) = v8;
*(_DWORD *)(v11 + 120) = sub_1800BE6BC(v10);
*(_DWORD *)(v11 + 128) = 1;
switch ( v9 )
{
case 1:
v16 = "nvme_nand%d";
goto LABEL_9;
case 2:
v16 = "nvme_firmware%d";
goto LABEL_9;
case 3:
sub_1800EFC74(&v23, 0x10uLL, 0LL, 0x10uLL, (__int64)"nvme_syscfg%d", v13, v14, v15, v10);
*(_QWORD *)(v11 + 124) = 8589934596LL;
v12 += 4;
goto LABEL_12;
case 5:
sub_1800EFE14((__int64)&v23, (__int64)"nvram", 0x10uLL, 0x10uLL);
v17 = 2;
goto LABEL_11;
case 6:
v16 = "nvme_efface%d";
LABEL_9:
sub_1800EFC74(&v23, 0x10uLL, 0LL, 0x10uLL, (__int64)v16, v13, v14, v15, v10);
goto LABEL_12;
case 8:
sub_1800EFE14((__int64)&v23, (__int64)"paniclog", 0x10uLL, 0x10uLL);
v17 = 256;
LABEL_11:
*(_DWORD *)(v11 + 128) = v17;
LABEL_12:
if ( (unsigned int)sub_1800EA0FC(
v11,
(__int64)&v23,
v12
/ *(_DWORD *)(v11 + 128)
* (unsigned __int64)(unsigned int)(*(_DWORD *)(v11 + 128) << 12),
*(_DWORD *)(v11 + 128) << 12) )
{
v20 = 243LL;
}
else
{
sub_1800EA0D0(v11, 0x1000u);
*(_QWORD *)(v11 + 48) = sub_1800BEE60;
if ( v9 == 8 )
v18 = 1;
else
v18 = v9 == 5;
if ( v18 )
*(_QWORD *)(v11 + 64) = sub_1800BEED8;
if ( (unsigned int)sub_1800E9E00((_QWORD *)v11) )
{
sub_1800EE010((_QWORD *)v11);
v11 = 0LL;
break;
}
if ( &off_180114580 && &off_180114580 == &off_180114580 )
{
*(_QWORD *)(v11 + 136) = &off_180114580;
*(_QWORD *)(v11 + 144) = &off_180114580;
off_180114588 = (void **)(v11 + 136);
off_180114580 = (void *)(v11 + 136);
break;
}
v20 = 62LL;
}
LABEL_30:
sub_1800D489C("%llx:%d", &byte_180101040, 1859462069615974072LL, v20);
return result;
default:
v20 = 229LL;
goto LABEL_30;
}
}
if ( 5139240511851214385LL != v24 )
sub_1800D4A5C();
return v11;
}
// 1800BEDA0: write access to const memory at 180114588 has been detected
// 1800BEDA4: write access to const memory at 180114580 has been detected
// 180101040: using guessed type char byte_180101040;
// 180114580: using guessed type void *off_180114580;
// 180114588: using guessed type void **off_180114588;
//----- (00000001800BEE30) ----------------------------------------------------
signed __int64 __fastcall sub_1800BEE30(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x0
__int64 v10; // x19
__int64 v11; // x0
__int64 v12; // x20
signed __int64 v13; // x22
_QWORD *v14; // x21
__int64 v15; // x5
__int64 v16; // x6
__int64 v17; // x7
signed int v18; // w0
signed __int64 v19; // x9
int v20; // w10
__int64 v21; // x13
__int64 *v22; // x15
__int64 v23; // x14
__int64 v24; // x15
__int64 *v25; // x16
__int64 v26; // x17
signed __int64 v27; // x8
__int64 *v28; // x24
signed __int64 v29; // x25
_QWORD *v30; // x0
char v31; // [xsp+18h] [xbp-168h]
__int64 v32[32]; // [xsp+38h] [xbp-148h]
__int64 v33[32]; // [xsp+48h] [xbp-138h]
__int64 v34[32]; // [xsp+50h] [xbp-130h]
__int64 v35; // [xsp+138h] [xbp-48h]
v8 = sub_1800BEB7C(a1, 1LL, 1LL, a4, a5, a6, a7, a8);
if ( !v8 )
return 0xFFFFFFFFLL;
v10 = v8 + 80;
v35 = 5139240511851214385LL;
v11 = sub_1800E9DAC((_BYTE *)(v8 + 80));
v12 = v11;
if ( v11 )
{
v13 = sub_1800F4788(v11);
if ( (signed int)v13 <= 0 )
{
sub_1800F0E34(0x200u, 196608, v32);
v14 = (_QWORD *)sub_1800EE264(0x40uLL, v32[0]);
if ( (*(unsigned int (__fastcall **)(__int64, _QWORD *, signed __int64, signed __int64))(v12 + 40))(
v12,
v14,
446LL,
64LL) == 64 )
{
v18 = sub_1800F4B08((__int64)v14, v12, (__int64)v32);
if ( v18 == 1 )
{
if ( HIDWORD(v32[0]) == 238 )
v18 = sub_1800F4518(v12, (__int64)v32);
else
v18 = 1;
}
v19 = 0LL;
v20 = 0;
while ( v19 < v18 )
{
v21 = 0LL;
v22 = &v32[4 * v19];
v23 = v22[1];
v24 = v22[2] + v23;
v25 = v33;
while ( v18 != v21 )
{
if ( v19 != v21 )
{
v26 = *(v25 - 1);
v20 |= v26 <= v23 && *v25 + v26 >= v24 || v26 >= v23 && v26 < v24 || *v25 + v26 <= v24 && *v25 + v26 > v23;
}
++v21;
v25 += 4;
}
++v19;
}
if ( v20 & 1 )
v13 = 0LL;
else
v13 = (unsigned int)v18;
if ( !v14 )
goto LABEL_27;
}
else
{
v13 = 0LL;
if ( !v14 )
{
LABEL_27:
v27 = 0LL;
v28 = v34;
while ( v27 < (signed int)v13 )
{
v29 = v27 + 97;
sub_1800EFC74(&v31, 0x20uLL, 0LL, 0x20uLL, (__int64)"%s%c", v15, v16, v17, v10);
if ( !sub_1800E9DAC(&v31) )
{
v30 = sub_1800EA860((__int64)&v31, v12, *(v28 - 2), *(v28 - 1), *(_DWORD *)(v12 + 12));
if ( v30 )
{
if ( *(_DWORD *)v28 == 2 )
*((_DWORD *)v30 + 2) |= 2u;
sub_1800E9E00(v30);
}
}
v28 += 4;
v27 = v29 - 96;
}
goto LABEL_35;
}
}
sub_1800EE010(v14);
goto LABEL_27;
}
}
else
{
v13 = 0xFFFFFFFFLL;
}
LABEL_35:
if ( 5139240511851214385LL != v35 )
sub_1800D4A5C();
return v13;
}
// 1800BEE30: using guessed type __int64 var_148[32];
//----- (00000001800BEE60) ----------------------------------------------------
signed __int64 __fastcall sub_1800BEE60(__int64 a1, __int64 a2, int a3, int a4)
{
int v4; // w21
int v5; // w22
__int64 v6; // x20
_DWORD *v7; // x0
_DWORD *v8; // x19
int v9; // w8
unsigned int v10; // w3
unsigned int v11; // w9
unsigned int v12; // w8
unsigned int v13; // w10
__int64 v14; // x4
bool v15; // cf
signed __int64 result; // x0
v4 = a4;
v5 = a3;
v6 = a2;
v7 = (_DWORD *)sub_1800BEF50(a1);
v8 = v7;
v9 = v7[32];
v10 = v9 * v5;
v11 = v9 * v4;
v13 = v7[30];
v12 = v7[31];
if ( v11 >= v13 )
v14 = v13;
else
v14 = v11;
if ( v12 )
{
v15 = v10 >= v12;
v10 -= v12;
if ( !v15 )
return 0xFFFFFFFFLL;
}
result = sub_1800BE11C(v7[28], v7[29], v6, v10, v14);
if ( (_DWORD)result )
result = (unsigned int)result / v8[32];
return result;
}
//----- (00000001800BEED8) ----------------------------------------------------
void __fastcall sub_1800BEED8(__int64 a1, __int64 a2, int a3)
{
int v3; // w22
unsigned int *v4; // x0
unsigned int *v5; // x19
unsigned int v6; // w8
__int64 v7; // x0
unsigned int v8; // w0
__int64 v9; // x0
v3 = a3;
v4 = (unsigned int *)sub_1800BEF50(a1);
v5 = v4;
v6 = v4[31];
if ( !v6 || v4[32] * v3 >= v6 )
{
v7 = v4[28];
sub_1800BE3CC();
if ( v8 )
v9 = v8 / v5[32];
}
}
//----- (00000001800BEF50) ----------------------------------------------------
signed __int64 __fastcall sub_1800BEF50(__int64 a1)
{
__int64 v1; // x29
__int64 v2; // x30
void ***i; // x8
void **v4; // x8
signed __int64 v5; // x8
for ( i = &off_180114588; ; i = (void ***)(v5 + 144) )
{
v4 = *i;
if ( v4 == &off_180114580 )
sub_1800D489C("%llx:%d", &byte_180101040, 1859462069615974072LL, 53LL, v1, v2);
v5 = (signed __int64)(v4 - 17);
if ( v5 == a1 )
break;
}
return v5;
}
// 180101040: using guessed type char byte_180101040;
// 180114580: using guessed type void *off_180114580;
// 180114588: using guessed type void **off_180114588;
//----- (00000001800BEFBC) ----------------------------------------------------
__int64 sub_1800BEFBC()
{
__int64 result; // x0
unsigned __int16 v1; // w0
result = sub_1800D8634();
if ( !(result & 1) )
{
result = sub_1800BF02C();
if ( (_DWORD)result )
{
sub_1800C0014();
sub_1800D5B44(10000LL);
v1 = MEMORY[0x18011A732];
if ( !MEMORY[0x18011A732] )
{
v1 = sub_1800BF04C();
MEMORY[0x18011A732] = v1;
}
if ( v1 >= 0x310u )
((void (__fastcall *)(signed __int64))loc_1800BF090)(19LL);
result = sub_1800E7428(0);
}
}
return result;
}
//----- (00000001800BF02C) ----------------------------------------------------
bool sub_1800BF02C()
{
return (unsigned int)sub_1800E7428(1) == 0;
}
//----- (00000001800BF04C) ----------------------------------------------------
signed __int64 sub_1800BF04C()
{
signed __int64 result; // x0
signed int v1; // w24
unsigned __int64 v2; // x19
int v3; // w22
int v4; // w23
int v5; // w0
result = sub_1800C005C(640, 16LL, 0LL);
if ( !(result & 0x80000000) )
{
result = sub_1800C005C(129, 16LL, 0LL);
if ( !(result & 0x80000000) )
{
v1 = 0;
v2 = 0xFFFFFFFFLL;
do
{
v3 = ((__int64 (__fastcall *)(signed __int64))loc_1800BF248)(1LL);
if ( v3 & 0x80000000 )
break;
v4 = ((__int64 (__fastcall *)(_QWORD))loc_1800BF248)(0LL);
if ( v4 & 0x80000000 )
break;
v5 = ((__int64 (__fastcall *)(signed __int64))loc_1800BF248)(1LL);
if ( v5 & 0x80000000 )
break;
v2 = v5 == v3 ? (unsigned __int64)(v4 | (unsigned int)(v3 << 8)) : (unsigned __int64)(unsigned int)v2;
if ( !(v2 & 0x80000000) )
break;
++v1;
}
while ( v1 < 10 );
result = v2;
}
}
return result;
}
//----- (00000001800BFA30) ----------------------------------------------------
signed __int64 __fastcall sub_1800BFA30(signed __int64 result, signed int *a2)
{
signed int *v2; // x20
_DWORD *v3; // x19
signed int v4; // w8
signed int v5; // w9
v2 = a2;
v3 = (_DWORD *)result;
if ( !MEMORY[0x18011A732] )
{
result = sub_1800BF02C();
if ( (_DWORD)result )
{
sub_1800C0014();
MEMORY[0x18011A732] = sub_1800BF04C();
result = sub_1800E7428(0);
}
}
if ( MEMORY[0x18011A732] >= 0x600u )
v4 = 4;
else
v4 = 65;
if ( MEMORY[0x18011A732] >= 0x600u )
v5 = 20;
else
v5 = 65;
*v2 = v4;
*v3 = v5;
return result;
}
//----- (00000001800BFAA8) ----------------------------------------------------
__int64 sub_1800BFAA8()
{
int v0; // w19
int v1; // w20
unsigned __int16 v2; // w0
signed __int64 v3; // x0
__int64 v4; // x19
signed int v5; // w21
signed int v6; // w22
__int64 v7; // x1
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
__int64 v14; // x1
__int64 v15; // x2
__int64 v16; // x3
__int64 v17; // x4
__int64 v18; // x5
__int64 v19; // x6
__int64 v20; // x7
__int64 v21; // x1
__int64 v22; // x2
__int64 v23; // x3
__int64 v24; // x4
__int64 v25; // x5
__int64 v26; // x6
__int64 v27; // x7
__int64 v28; // x1
__int64 v29; // x2
__int64 v30; // x3
__int64 v31; // x4
__int64 v32; // x5
__int64 v33; // x6
__int64 v34; // x7
__int64 v35; // x1
__int64 v36; // x2
__int64 v37; // x3
__int64 v38; // x4
__int64 v39; // x5
__int64 v40; // x6
__int64 v41; // x7
__int64 v42; // x1
__int64 v43; // x2
__int64 v44; // x3
__int64 v45; // x4
__int64 v46; // x5
__int64 v47; // x6
__int64 v48; // x7
__int64 v49; // x1
__int64 v50; // x2
__int64 v51; // x3
__int64 v52; // x4
__int64 v53; // x5
__int64 v54; // x6
__int64 v55; // x7
__int64 v56; // x1
__int64 v57; // x2
__int64 v58; // x3
__int64 v59; // x4
__int64 v60; // x5
__int64 v61; // x6
__int64 v62; // x7
__int64 v63; // x1
__int64 v64; // x2
__int64 v65; // x3
__int64 v66; // x4
__int64 v67; // x5
__int64 v68; // x6
__int64 v69; // x7
v0 = sub_1800BFCA8(0x2002300u);
if ( !sub_1800BF02C() )
return 0LL;
sub_1800C0014();
v1 = ((__int64 (__fastcall *)(signed __int64))loc_1800BF9AC)(10LL);
if ( v1 == -1 )
goto LABEL_21;
v2 = MEMORY[0x18011A732];
if ( !MEMORY[0x18011A732] )
{
v2 = sub_1800BF04C();
MEMORY[0x18011A732] = v2;
}
v3 = v2 < 0x119u ? 16LL : 50LL;
v5 = ((__int64 (__fastcall *)(signed __int64))loc_1800BF9AC)(v3);
if ( v5 == -1
|| (unsigned int)((__int64 (__fastcall *)(signed __int64))loc_1800BF9AC)(18LL) == -1
|| (unsigned int)((__int64 (__fastcall *)(signed __int64))loc_1800BF9AC)(6LL) == -1
|| (v6 = ((__int64 (__fastcall *)(signed __int64))loc_1800BF9AC)(8LL), v6 == -1)
|| (unsigned int)((__int64 (__fastcall *)(signed __int64))loc_1800BF9AC)(34LL) == -1
|| (unsigned int)((__int64 (__fastcall *)(signed __int64))loc_1800BF9AC)(20LL) == -1 )
{
LABEL_21:
v4 = 0LL;
}
else
{
v4 = ((v1 & v0) == 0 && v5 > 100) & (unsigned __int8)(v6 > 3400);
sub_1800EF260((__int64)"%llx:%d\n", v7, v8, v9, v10, v11, v12, v13, -2513442418506687521LL);
sub_1800EF260((__int64)"%llx:%d\n", v14, v15, v16, v17, v18, v19, v20, -2513442418506687521LL);
sub_1800EF260((__int64)"%llx:%d\n", v21, v22, v23, v24, v25, v26, v27, -2513442418506687521LL);
sub_1800EF260((__int64)"%llx:%d\n", v28, v29, v30, v31, v32, v33, v34, -2513442418506687521LL);
sub_1800EF260((__int64)"%llx:%d\n", v35, v36, v37, v38, v39, v40, v41, -2513442418506687521LL);
sub_1800EF260((__int64)"%llx:%d\n", v42, v43, v44, v45, v46, v47, v48, -2513442418506687521LL);
sub_1800EF260((__int64)"%llx:%d\n", v49, v50, v51, v52, v53, v54, v55, -2513442418506687521LL);
((void (__fastcall *)(_QWORD))loc_1800BF9AC)(0LL);
((void (__fastcall *)(signed __int64))loc_1800BF9AC)(106LL);
((void (__fastcall *)(signed __int64))loc_1800BF9AC)(108LL);
((void (__fastcall *)(signed __int64))loc_1800BF9AC)(28LL);
((void (__fastcall *)(signed __int64))loc_1800BF9AC)(40LL);
((void (__fastcall *)(signed __int64))loc_1800BF9AC)(110LL);
sub_1800EF260((__int64)"%llx:%d\n", v56, v57, v58, v59, v60, v61, v62, -2513442418506687521LL);
sub_1800EF260((__int64)"%llx:%d\n", v63, v64, v65, v66, v67, v68, v69, -2513442418506687521LL);
}
sub_1800E7428(0);
return v4;
}
//----- (00000001800BFCA8) ----------------------------------------------------
__int64 __fastcall sub_1800BFCA8(unsigned int a1)
{
__int64 result; // x0
unsigned int v2; // [xsp+4h] [xbp-Ch]
__int64 v3; // [xsp+8h] [xbp-8h]
v3 = 5139240511851214385LL;
sub_1800F0E34(a1, 0x20000, &v2);
result = v2;
if ( 5139240511851214385LL != v3 )
sub_1800D4A5C();
return result;
}
//----- (00000001800BFCFC) ----------------------------------------------------
signed __int64 sub_1800BFCFC()
{
signed __int64 result; // x0
unsigned __int16 v1; // w0
result = sub_1800BF02C();
if ( (_DWORD)result )
{
sub_1800C0014();
sub_1800D5B44(10000LL);
v1 = MEMORY[0x18011A732];
if ( !MEMORY[0x18011A732] )
{
v1 = sub_1800BF04C();
MEMORY[0x18011A732] = v1;
}
if ( v1 >= 0x310u )
((void (__fastcall *)(signed __int64))loc_1800BF090)(16LL);
result = sub_1800E7428(0);
}
return result;
}
//----- (00000001800BFD64) ----------------------------------------------------
signed __int64 __fastcall sub_1800BFD64(_DWORD *a1)
{
_DWORD *v1; // x19
int v2; // w20
signed __int64 result; // x0
v1 = a1;
if ( !sub_1800BF02C() )
return 0xFFFFFFFFLL;
sub_1800C0014();
v2 = ((__int64 (__fastcall *)(signed __int64))loc_1800BF9AC)(44LL);
sub_1800E7428(0);
if ( v2 == -1 )
return 0xFFFFFFFFLL;
result = 0LL;
*v1 = v2;
return result;
}
//----- (00000001800BFDB8) ----------------------------------------------------
signed __int64 __fastcall sub_1800BFDB8(__int64 a1, signed int a2)
{
signed int v2; // w21
__int64 v3; // x19
int v4; // w0
signed __int64 v5; // x20
signed __int64 v6; // x23
int v7; // w22
__int64 v8; // x0
v2 = a2;
v3 = a1;
v4 = sub_1800D863C();
v5 = 0xFFFFFFFFLL;
if ( v2 <= 32 && v3 && !((v4 ^ 1) & 1) )
{
if ( sub_1800BF02C() )
{
sub_1800C0014();
v5 = sub_1800C005C(481, 16LL, 0LL);
if ( !(v5 & 0x80000000) )
{
sub_1800C005C(703, 16LL, 0LL);
v6 = 0LL;
v7 = 0;
while ( v6 <= 31 )
{
v8 = ((__int64 (__fastcall *)(signed __int64))loc_1800BF248)(v6 + 64);
v5 = v8;
if ( v8 & 0x80000000 )
goto LABEL_13;
*(_BYTE *)(v3 + v6++) = v8;
v7 = v8 + (unsigned __int8)v7;
}
if ( ~((unsigned int)((__int64 (__fastcall *)(signed __int64))loc_1800BF248)(96LL) + v7) & 0xFF )
v5 = 0xFFFFFFFFLL;
else
v5 = 0LL;
}
LABEL_13:
sub_1800E7428(0);
}
else
{
v5 = 0xFFFFFFFFLL;
}
}
return v5;
}
//----- (00000001800BFE98) ----------------------------------------------------
signed __int64 __fastcall sub_1800BFE98(_DWORD *a1)
{
_DWORD *v1; // x19
__int64 v2; // x20
__int64 v3; // x1
__int64 v4; // x2
__int64 v5; // x3
__int64 v6; // x4
__int64 v7; // x5
__int64 v8; // x6
__int64 v9; // x7
signed __int64 result; // x0
v1 = a1;
if ( !a1 || !sub_1800BF02C() )
return 0xFFFFFFFFLL;
sub_1800C0014();
v2 = ((__int64 (__fastcall *)(signed __int64))loc_1800BF9AC)(6LL);
sub_1800E7428(0);
if ( (unsigned int)v2 >= 0x1771 )
{
sub_1800EF260((__int64)"hdqgauge temperature bogus: %ddK\n", v3, v4, v5, v6, v7, v8, v9, v2);
return 0xFFFFFFFFLL;
}
result = 0LL;
*v1 = 10 * v2 - 27320;
return result;
}
//----- (00000001800BFF18) ----------------------------------------------------
signed __int64 __fastcall sub_1800BFF18(_DWORD *a1, _DWORD *a2, signed int *a3)
{
signed int *v3; // x19
_DWORD *v4; // x20
_DWORD *v5; // x21
unsigned __int16 v6; // w0
signed __int64 v7; // x0
unsigned int v9; // w0
signed int v10; // w8
v3 = a3;
v4 = a2;
v5 = a1;
if ( a1 )
*a1 = -1;
if ( a2 )
*a2 = -1;
if ( a3 )
*a3 = -1;
if ( !sub_1800BF02C() )
return 0xFFFFFFFFLL;
sub_1800C0014();
v6 = MEMORY[0x18011A732];
if ( !MEMORY[0x18011A732] )
{
v6 = sub_1800BF04C();
MEMORY[0x18011A732] = v6;
}
if ( v5 )
{
if ( v6 < 0x119u )
v7 = 16LL;
else
v7 = 50LL;
*v5 = ((__int64 (__fastcall *)(signed __int64))loc_1800BF9AC)(v7);
}
if ( v4 )
*v4 = ((__int64 (__fastcall *)(signed __int64))loc_1800BF9AC)(18LL);
if ( v3 )
{
v9 = ((__int64 (__fastcall *)(signed __int64))loc_1800BF9AC)(8LL);
if ( v9 > 0x1770 )
v10 = 1;
else
v10 = v9;
*v3 = v10;
}
sub_1800E7428(0);
return 0LL;
}
//----- (00000001800BFFF0) ----------------------------------------------------
signed __int64 __fastcall sub_1800BFFF0(char a1, unsigned __int8 a2)
{
return sub_1800C005C(a1 & 0x7F | (a2 << 8) | 0x80u, 16LL, 0LL);
}
//----- (00000001800C0008) ----------------------------------------------------
__int64 sub_1800C0008()
{
return 0LL;
}
//----- (00000001800C0014) ----------------------------------------------------
signed __int64 sub_1800C0014()
{
signed __int64 result; // x0
sub_1800E5584(5, 1);
sub_1800D5B44(200LL);
sub_1800E5584(5, 0);
sub_1800D5B44(40LL);
do
result = sub_1800E5384(5, 0);
while ( !(result & 0x80000000) );
return result;
}
//----- (00000001800C005C) ----------------------------------------------------
signed __int64 __fastcall sub_1800C005C(int a1, signed __int64 a2, signed __int64 a3)
{
signed __int64 v3; // x19
signed __int64 v4; // x22
int v5; // w20
signed __int64 result; // x0
signed __int64 i; // x8
char v8; // w13
signed __int64 v9; // x23
int v10; // w0
__int64 v11; // x1
__int64 v12; // x2
__int64 v13; // x3
__int64 v14; // x4
__int64 v15; // x5
__int64 v16; // x6
__int64 v17; // x7
signed __int64 v18; // x8
int v19; // w12
signed int v20; // w13
signed __int64 v21; // x8
signed int v22; // w10
char v23[32]; // [xsp+8h] [xbp-58h]
__int64 v24; // [xsp+28h] [xbp-38h]
v3 = a3;
v4 = a2;
v5 = a1;
v24 = 5139240511851214385LL;
result = 0xFFFFFFFFLL;
if ( (signed int)a2 > 32 || (signed int)a3 > 32 )
goto LABEL_22;
for ( i = 0LL; i < (signed int)a2; ++i )
{
if ( (1 << i) & v5 )
v8 = -2;
else
v8 = -64;
v23[i] = v8;
}
sub_1800C0014();
v9 = 0LL;
while ( v9 < (signed int)v4 )
{
v10 = sub_1800E5258(5, v23[v9++]);
if ( v10 & 0x80000000 )
{
LABEL_21:
result = 0xFFFFFFFFLL;
goto LABEL_22;
}
}
sub_1800EED5C((signed __int64 *)v23, 0, (signed int)v4, 0x20uLL);
result = sub_1800C0234((__int64)v23, v4);
if ( result & 0x80000000 )
goto LABEL_22;
v18 = 0LL;
while ( v18 < (signed int)v4 )
{
v19 = (unsigned __int8)v23[v18];
if ( (1 << v18) & v5 )
v20 = 254;
else
v20 = 192;
++v18;
if ( v19 != v20 )
{
sub_1800EF260((__int64)"hdq read mismatch[%d]\n", v11, v12, v13, v14, v15, v16, v17, v18 - 1);
goto LABEL_21;
}
}
if ( (_DWORD)v3 )
{
sub_1800EED5C((signed __int64 *)v23, 0, (signed int)v3, 0x20uLL);
result = sub_1800C0234((__int64)v23, v3);
if ( result & 0x80000000 )
goto LABEL_22;
v21 = 0LL;
result = 0LL;
while ( v21 < (signed int)v3 )
{
if ( (unsigned __int8)v23[v21] <= 0xF8u )
v22 = 0;
else
v22 = 1 << v21;
result = v22 | (unsigned int)result;
++v21;
}
}
else
{
result = 0LL;
}
LOBYTE(qword_1801158C8[2509]) = 1;
LABEL_22:
if ( 5139240511851214385LL != v24 )
sub_1800D4A5C();
return result;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
// 1800C005C: using guessed type char var_58[32];
//----- (00000001800C0234) ----------------------------------------------------
signed __int64 __fastcall sub_1800C0234(__int64 a1, signed __int64 a2)
{
signed __int64 v2; // x19
__int64 v3; // x20
unsigned __int64 v4; // x0
signed __int64 v5; // x23
unsigned __int64 v6; // x24
__int64 v7; // x1
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
__int64 v14; // x0
__int64 v16; // [xsp+0h] [xbp-30h]
v2 = a2;
v3 = a1;
v4 = sub_1800D5F1C(a1);
v5 = 0LL;
LABEL_7:
if ( v5 < (signed int)v2 )
{
v6 = v4 + 500000;
while ( 1 )
{
v14 = sub_1800E5384(5, 0);
if ( !(v14 & 0x80000000) )
{
*(_BYTE *)(v3 + v5) = v14;
v4 = sub_1800D5F1C(v14);
++v5;
goto LABEL_7;
}
if ( sub_1800D5F1C(v14) > v6 )
break;
sub_1800D5B44(190LL);
}
sub_1800EF260((__int64)"gas gauge read timed out\n", v7, v8, v9, v10, v11, v12, v13, v16);
v2 = 0xFFFFFFFFLL;
}
return v2;
}
//----- (00000001800C02D8) ----------------------------------------------------
signed __int64 sub_1800C02D8()
{
signed __int64 v0; // x19
v0 = 1LL;
sub_1800D39CC(78LL, 1);
if ( MEMORY[0x206600004] != 1 )
{
sub_1800D39CC(78LL, 0);
v0 = 0LL;
}
return v0;
}
//----- (00000001800C032C) ----------------------------------------------------
__int64 __fastcall sub_1800C032C(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x19
__int64 v9; // x1
__int64 v10; // x2
__int64 v11; // x3
__int64 v12; // x4
__int64 v13; // x5
__int64 v14; // x6
__int64 v15; // x7
int *v16; // x24
unsigned int v17; // w27
unsigned int v18; // w8
unsigned __int64 v19; // t2
int v20; // w23
int v21; // w26
int v22; // w8
int v23; // w28
unsigned int v24; // w0
int v25; // w25
int v26; // w23
unsigned __int64 v27; // x28
unsigned __int64 v28; // x8
unsigned __int64 v29; // x9
unsigned __int64 v30; // x8
__int64 v31; // x10
__int64 v32; // x12
__int64 v33; // x11
unsigned __int64 v34; // x12
unsigned __int64 v35; // x13
int v36; // w12
unsigned __int64 v37; // x10
unsigned __int64 v38; // x13
int v39; // w10
unsigned __int64 v40; // x9
int v41; // w9
unsigned __int64 v42; // x10
unsigned __int64 v43; // x10
unsigned __int64 v44; // x10
unsigned __int64 v45; // x11
unsigned __int64 v46; // x9
unsigned __int64 v47; // x10
signed __int64 v48; // x9
unsigned __int64 v49; // x10
unsigned int v50; // w8
unsigned int v51; // w11
signed int v52; // w8
signed int v53; // w8
unsigned int v54; // w8
signed __int64 v56; // x8
int v57; // [xsp+10h] [xbp-60h]
char v58; // [xsp+17h] [xbp-59h]
__int64 v59; // [xsp+18h] [xbp-58h]
v8 = a1;
v59 = 5139240511851214385LL;
sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, 5557653649757020537LL);
sub_1800ECB70("display-timing");
v16 = *(int **)(v8 + 64);
if ( !v16 )
{
v56 = 85LL;
goto LABEL_62;
}
MEMORY[0x18011A750] = v16 + 4;
MEMORY[0x18011A748] = *((_BYTE *)v16 + 15);
v17 = *v16;
MEMORY[0x18011A74C] = *v16 & 0xF;
sub_1800EF260((__int64)"%llx:%d\n", v9, v10, v11, v12, v13, v14, v15, 5557653649757020537LL);
HIDWORD(v19) = *(_DWORD *)(v8 + 56) - 16;
LODWORD(v19) = *(_DWORD *)(v8 + 56) - 16;
v18 = v19 >> 1;
if ( v18 >= 8 || !((0x93u >> ((unsigned int)(*(_DWORD *)(v8 + 56) - 16) >> 1)) & 1) )
{
v56 = 134LL;
goto LABEL_62;
}
v57 = *((unsigned __int8 *)v16 + 3);
v20 = *(_DWORD *)(v8 + 36);
v21 = (*(_DWORD *)(v8 + 20) & 1) + *(_DWORD *)(v8 + 20);
v22 = *((_DWORD *)qword_180104F30 + (signed int)v18);
if ( v16[27] )
v23 = v16[27];
else
v23 = v22;
sub_1800D39CC(78LL, 1);
MEMORY[0x206680034] = 2147483648;
if ( MEMORY[0x2066000C0] & 0x1FFC )
sub_1800D3BDC(78LL);
MEMORY[0x2066000C4] = 0;
MEMORY[0x2066000C8] = 0;
if ( *((_BYTE *)v16 + 4) )
MEMORY[0x206680008] = *((unsigned __int8 *)v16 + 5) | 4 * *((unsigned __int8 *)v16 + 6) | 16
* *((unsigned __int8 *)v16
+ 7) | (*((unsigned __int8 *)v16 + 8) << 6);
MEMORY[0x206600008] = ((unsigned __int8)*v16 >> 4) | 0x100;
MEMORY[0x206600034] = 1;
MEMORY[0x2066000A4] = (MEMORY[0x18011A74C] - 1) | 0x2800;
MEMORY[0x20660002C] = 28;
MEMORY[0x20660000C] = 0;
MEMORY[0x206600010] = v23;
MEMORY[0x20668000C] = v23;
MEMORY[0x206600014] = 0;
MEMORY[0x206600038] = 48899;
MEMORY[0x20660003C] = v21;
v24 = sub_1800D389C(109);
if ( !v24 )
{
v56 = 219LL;
LABEL_62:
sub_1800D489C("%llx:%d", &byte_180101040, 5557653649757020537LL, v56);
}
v25 = (v17 >> 8) & 0x7FFF;
v26 = (v20 & 1) + v20;
v27 = v24;
if ( v25 )
{
v28 = 24000000
* (unsigned __int64)((((unsigned int)*v16 >> 12) & 0x3FF) + 2)
/ ((((unsigned int)*v16 >> 8) & 0xF) + 1)
/ ((((unsigned int)*v16 >> 22) & 1) + 1);
if ( *((_BYTE *)v16 + 14) )
v28 *= *((unsigned __int8 *)v16 + 14);
}
else
{
v28 = (unsigned int)sub_1800D389C(78);
}
v29 = v28 >> 3;
if ( v28 & 7 )
++v29;
v30 = 0x3B9ACA00 / v29;
if ( 1000000000 != 0x3B9ACA00 / v29 * v29 )
++v30;
v31 = *(unsigned int *)(v8 + 24);
v32 = *(unsigned int *)(v8 + 32);
v33 = (unsigned int)(*(_DWORD *)(v8 + 28) + v21 + v32 + v31);
v34 = v32 * v29;
v35 = v34 / v27;
if ( v34 == v34 / v27 * v27 )
v36 = v34 / v27;
else
v36 = v35 + 1;
v37 = v31 * v29;
v38 = v37 / v27;
if ( v37 == v37 / v27 * v27 )
v39 = v37 / v27;
else
v39 = v38 + 1;
v40 = v33 * v29;
if ( v40 == v40 / v27 * v27 )
v41 = v40 / v27;
else
v41 = v40 / v27 + 1;
MEMORY[0x206600048] = v36;
MEMORY[0x20660004C] = v39;
MEMORY[0x206600050] = v41;
MEMORY[0x206600054] = *(_DWORD *)(v8 + 48);
MEMORY[0x206600058] = *(_DWORD *)(v8 + 40);
MEMORY[0x206600060] = v26;
MEMORY[0x206600094] = 0;
v42 = (unsigned int)v27 / 0x3E8;
if ( (_DWORD)v27 != 1000 * (_DWORD)v42 )
++v42;
if ( 1000000000 == 0x3B9ACA00 / v42 * v42 )
v43 = 0x3B9ACA00 / v42;
else
v43 = 0x3B9ACA00 / v42 + 1;
v44 = v43 * v33;
v45 = v44 / 0x3E8;
v46 = v44 % 0x3E8;
v47 = ((unsigned __int8)*v16 >> 4) * v30;
LODWORD(v30) = -99 * v30 + v45 - 22 * v47 - 2 * v47;
if ( v46 )
v30 = (unsigned int)(v30 + 1);
else
v30 = (unsigned int)v30;
v48 = 16 * v47;
v49 = v30 / (16 * v47);
if ( v30 == v49 * v48 )
v50 = v49;
else
v50 = v49 + 1;
v51 = 0x100 / v50;
if ( 256 == 0x100 / v50 * v50 )
v52 = 0;
else
v52 = -1;
MEMORY[0x20660005C] = *(_DWORD *)(v8 + 44) - v51 + v52;
MEMORY[0x206600018] = 0;
MEMORY[0x206600090] = 0;
MEMORY[0x20660009C] = 591135656;
MEMORY[0x206600098] = 4391071;
MEMORY[0x206600068] = 32512;
MEMORY[0x2066000B4] = 0;
sub_1800D5F60(5LL);
MEMORY[0x2066000B4] = 0;
sub_1800D5F60(5LL);
MEMORY[0x2066000B4] = 1;
sub_1800D5F60(5LL);
if ( v25 )
{
MEMORY[0x206600004] = 1;
MEMORY[0x2066000A0] = 4;
MEMORY[0x206680034] |= 0x10000000 | 16 * v57 | 0x2000004;
while ( MEMORY[0x206680034] & 4 )
;
MEMORY[0x206680038] = v25 | 0x4228000;
sub_1800D5F60(2LL);
MEMORY[0x206680034] |= 0x8000000u;
sub_1800D5F60(1LL);
MEMORY[0x206680034] &= 0xF7FFFFFF;
sub_1800D5F60(1LL);
v58 = 0;
sub_1800F0D2C(0x2004900u, 327680, &v58);
if ( v58 )
{
MEMORY[0x20668002C] = 33619970;
MEMORY[0x206680030] = 100729393;
MEMORY[0x206680034] &= 0xEFFFFFFF;
MEMORY[0x206680028] = 5;
}
MEMORY[0x2066000A0] = 13;
sub_1800D5F60(5LL);
MEMORY[0x2066000A0] = 15;
while ( !(MEMORY[0x206680004] & 0x10) )
;
}
else
{
MEMORY[0x206600004] = 1;
MEMORY[0x206680034] |= 0x15003000 | 16 * v57;
MEMORY[0x2066000A0] = 13;
sub_1800D5F60(5LL);
MEMORY[0x2066000A0] = 15;
}
MEMORY[0x206600080] = 25;
MEMORY[0x20660008C] = 25;
if ( MEMORY[0x18011A74C] <= 1u )
v53 = 20;
else
v53 = 148;
v54 = (v53 & 0xFFFFFDFF | ((MEMORY[0x18011A74C] > 2u) << 9)) & 0xFFFFF7FF | ((MEMORY[0x18011A74C] == 4) << 11);
while ( v54 & ~MEMORY[0x2066000B0] )
;
if ( 5139240511851214385LL != v59 )
sub_1800D4A5C();
return 0LL;
}
// 180101040: using guessed type char byte_180101040;
// 180104F30: using guessed type __int64 qword_180104F30[2];
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800C08E4) ----------------------------------------------------
__int64 __fastcall sub_1800C08E4(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, 5557653649757020537LL);
if ( (unsigned int)sub_1800C02D8() )
{
MEMORY[0x2066000C4] = 0x1FFFFF;
MEMORY[0x2066000C8] = 0x1FFF;
MEMORY[0x206600004] = 0;
MEMORY[0x2066000B4] = 1;
sub_1800D5F60(5LL);
MEMORY[0x2066000A0] &= 0xFFFFFFF2;
sub_1800D5F60(5LL);
MEMORY[0x2066000A0] &= 0xFFFFFFFD;
sub_1800D39CC(78LL, 0);
}
return 0LL;
}
//----- (00000001800C0994) ----------------------------------------------------
signed __int64 __fastcall sub_1800C0994(int a1)
{
int v1; // w19
signed __int64 result; // x0
__int64 v3; // x19
signed __int64 v4; // x21
unsigned __int64 v5; // x22
unsigned __int64 v6; // x23
signed __int64 v7; // x8
int v8; // w9
__int64 v9; // x26
unsigned __int8 *v10; // x27
int v11; // t1
v1 = a1;
result = sub_1800C02D8();
if ( (_DWORD)result )
{
if ( v1 )
{
MEMORY[0x206600094] |= 1u;
if ( LOBYTE(qword_1801158C8[2512]) )
{
v3 = MEMORY[0x18011A750];
v4 = MEMORY[0x18011A750] + 15LL;
v5 = (unsigned __int8)*MEMORY[0x18011A750];
v6 = 1LL;
while ( v6 < v5 )
{
v7 = v3 + 10 * v6;
v8 = *(unsigned __int16 *)(v7 + 2);
v9 = *(unsigned __int8 *)(v7 + 4);
MEMORY[0x2066000B4] = 2;
MEMORY[0x2066000B8] = v8 | 0x10000;
sub_1800D5F60(5LL);
MEMORY[0x2066000B4] &= 0xFFFFFFFD;
result = sub_1800D5F60(10LL);
MEMORY[0x2066000B8] &= 0xFFFEFFFF;
v10 = (unsigned __int8 *)v4;
while ( v9 )
{
MEMORY[0x2066000B8] &= 0xFFFFFF00;
v11 = *v10++;
MEMORY[0x2066000B8] |= v11;
sub_1800D5F60(2LL);
MEMORY[0x2066000B4] |= 2u;
result = sub_1800D5F60(10LL);
MEMORY[0x2066000B4] &= 0xFFFFFFFD;
--v9;
}
++v6;
v4 += 10LL;
}
}
}
else
{
MEMORY[0x206600094] &= 0xFFFFFFFE;
}
}
return result;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800C0ADC) ----------------------------------------------------
signed __int64 __fastcall sub_1800C0ADC(int a1)
{
int v1; // w19
signed __int64 result; // x0
v1 = a1;
result = sub_1800C02D8();
if ( (_DWORD)result )
MEMORY[0x206600034] = v1 == 0;
return result;
}
//----- (00000001800C0B20) ----------------------------------------------------
__int64 __fastcall sub_1800C0B20(int a1, unsigned __int8 a2, unsigned __int8 a3)
{
unsigned __int8 v3; // w19
unsigned __int8 v4; // w21
int v5; // w20
v3 = a3;
v4 = a2;
v5 = a1;
if ( (unsigned int)sub_1800C02D8() )
{
MEMORY[0x20660006C] = (v5 & 0xFFFF00FF | (v4 << 8)) & 0xFF00FFFF | (v3 << 16);
while ( !(MEMORY[0x206600074] & 1) )
;
}
return 0LL;
}
//----- (00000001800C0B78) ----------------------------------------------------
signed __int64 __fastcall sub_1800C0B78(int a1, unsigned __int8 *a2, _DWORD *a3)
{
_DWORD *v3; // x19
unsigned __int8 *v4; // x20
int v5; // w21
signed __int64 result; // x0
unsigned __int64 v7; // x23
__int64 v8; // x1
__int64 v9; // x2
__int64 v10; // x3
__int64 v11; // x4
__int64 v12; // x5
__int64 v13; // x6
__int64 v14; // x7
signed int i; // w24
unsigned int v16; // w9
unsigned __int64 j; // x8
signed int v18; // w9
v3 = a3;
v4 = a2;
v5 = a1;
result = sub_1800C02D8();
if ( (_DWORD)result )
{
v7 = (unsigned int)*v3;
MEMORY[0x2066000C0] = 0x1FFF;
sub_1800C0B20(v5, *v4, v4[1]);
for ( i = 4; ; --i )
{
v16 = MEMORY[0x2066000C0];
if ( MEMORY[0x2066000C0] & 0x1FFC || MEMORY[0x2066000C0] & 3 )
{
LABEL_17:
sub_1800EF260((__int64)"%llx:%d\n", v8, v9, v10, v11, v12, v13, v14, 5557653649757020537LL);
return 0xFFFFFFFFLL;
}
if ( !(MEMORY[0x206600074] & 0x40) )
break;
if ( !i )
goto LABEL_17;
sub_1800D5F60(50000LL);
}
for ( j = 0LL; ; ++j )
{
if ( j >= v7 )
{
v18 = 0;
goto LABEL_20;
}
if ( MEMORY[0x206600074] & 0x10 )
break;
if ( !(j & 3) )
v16 = MEMORY[0x206600070];
v4[j] = v16;
v16 >>= 8;
}
v18 = 1;
LABEL_20:
while ( !(MEMORY[0x206600074] & 0x10) )
;
if ( v18 )
{
result = 0LL;
*v3 = j;
}
else
{
result = 0LL;
}
}
return result;
}
//----- (00000001800C0CB4) ----------------------------------------------------
signed __int64 __fastcall sub_1800C0CB4(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x19
signed __int64 result; // x0
__int64 v10; // x1
__int64 v11; // x2
__int64 v12; // x3
__int64 v13; // x4
__int64 v14; // x5
__int64 v15; // x6
__int64 v16; // x7
__int64 v17; // x10
__int64 v18; // x12
unsigned int v19; // w8
unsigned int v20; // w9
signed __int64 v21; // x10
__int64 v22; // [xsp+0h] [xbp-40h]
_DWORD *v23; // [xsp+10h] [xbp-30h]
const char *v24; // [xsp+18h] [xbp-28h]
unsigned int v25; // [xsp+24h] [xbp-1Ch]
__int64 v26; // [xsp+28h] [xbp-18h]
v8 = a1;
v26 = 5139240511851214385LL;
if ( !MEMORY[0x18011A750] )
{
sub_1800EF260((__int64)"something is seriously bad\n", a2, a3, a4, a5, a6, a7, a8, v22);
LABEL_8:
result = 0xFFFFFFFFLL;
goto LABEL_13;
}
v24 = "phy-test-num";
if ( (unsigned int)sub_1800EBFC8(a1, (_BYTE **)&v24, &v23, &v25) )
*v23 = (unsigned __int8)*MEMORY[0x18011A750];
v24 = "phy-test";
result = sub_1800EBFC8(v8, (_BYTE **)&v24, &v23, &v25);
if ( (_DWORD)result )
{
v17 = MEMORY[0x18011A750];
LODWORD(v18) = (unsigned __int8)*MEMORY[0x18011A750];
if ( v25 >= 10 * (signed int)v18 )
{
v19 = 0;
v20 = 0;
while ( v20 < (unsigned __int8)v18 )
{
v21 = v17 + 10LL * v20;
v18 = (__int64)v23 + v19;
*(_WORD *)(v18 + 8) = *(_WORD *)(v21 + 10);
*(_QWORD *)v18 = *(_QWORD *)(v21 + 2);
++v20;
v17 = MEMORY[0x18011A750];
LOBYTE(v18) = *MEMORY[0x18011A750];
v19 += 10;
}
result = 0LL;
goto LABEL_13;
}
sub_1800EF260(
(__int64)"device tree doesn't have enough space for data: propSize %d sizeofData %d\n",
v10,
v11,
v12,
v13,
v14,
v15,
v16,
v25);
goto LABEL_8;
}
LABEL_13:
if ( 5139240511851214385LL != v26 )
sub_1800D4A5C();
return result;
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800C0DF4) ----------------------------------------------------
signed __int64 __fastcall sub_1800C0DF4(__int64 a1, __int64 a2, unsigned int *a3, _DWORD *a4)
{
_DWORD *v4; // x20
unsigned int *v5; // x19
unsigned int v6; // w8
signed __int64 result; // x0
__int64 v8; // [xsp+0h] [xbp-50h]
unsigned int *v9; // [xsp+8h] [xbp-48h]
__int64 v10; // [xsp+10h] [xbp-40h]
__int64 v11; // [xsp+18h] [xbp-38h]
__int64 v12; // [xsp+20h] [xbp-30h]
__int64 v13; // [xsp+28h] [xbp-28h]
v4 = a4;
v5 = a3;
v13 = 5139240511851214385LL;
v11 = a1;
v12 = a2;
if ( (unsigned int)sub_1800C0F4C((unsigned __int64 *)&v11, 2305843009213693968LL, (unsigned __int64 *)&v8, 1) )
goto LABEL_14;
if ( v4 )
{
if ( __CFADD__((char *)v9 - v11, v10) )
goto LABEL_14;
*v4 = (_DWORD)v9 - v11 + v10;
}
if ( !(unsigned int)sub_1800C0F88((unsigned __int64 *)&v11, (unsigned __int64 *)&v9)
&& !(unsigned int)sub_1800C100C((unsigned __int64 *)&v11, "IMG4")
&& !(unsigned int)sub_1800C0F4C((unsigned __int64 *)&v11, 2305843009213693968LL, (unsigned __int64 *)&v8, 1)
&& !(unsigned int)sub_1800C0F88((unsigned __int64 *)&v11, (unsigned __int64 *)&v9)
&& !(unsigned int)sub_1800C100C((unsigned __int64 *)&v11, "IM4P")
&& !(unsigned int)sub_1800C0F4C((unsigned __int64 *)&v11, 22LL, (unsigned __int64 *)&v8, 0)
&& v10 == 4 )
{
if ( v5 )
{
v6 = sub_1800EF128(*v9);
result = 0LL;
*v5 = v6;
}
else
{
result = 0LL;
}
goto LABEL_15;
}
LABEL_14:
result = 0xFFFFFFFFLL;
LABEL_15:
if ( 5139240511851214385LL != v13 )
sub_1800D4A5C();
return result;
}
//----- (00000001800C0F4C) ----------------------------------------------------
signed __int64 __fastcall sub_1800C0F4C(unsigned __int64 *a1, __int64 a2, unsigned __int64 *a3, int a4)
{
unsigned __int64 *v4; // x20
__int64 v5; // x19
signed __int64 result; // x0
v4 = a3;
v5 = a2;
result = sub_1800F8754(a1, a3, a4);
if ( !(_DWORD)result )
{
if ( *v4 == v5 )
result = 0LL;
else
result = 0xFFFFFFFFLL;
}
return result;
}
//----- (00000001800C0F88) ----------------------------------------------------
signed __int64 __fastcall sub_1800C0F88(unsigned __int64 *a1, unsigned __int64 *a2)
{
__int64 v2; // x29
__int64 v3; // x30
unsigned __int64 v4; // x9
unsigned __int64 v5; // x10
__int64 v6; // x8
unsigned __int64 v7; // x9
v4 = *a2;
if ( *a2 < *a1 )
sub_1800D489C("%llx:%d", &byte_180101040, 12791624394463092LL, 134LL, v2, v3);
v5 = *a1 + a1[1];
if ( v4 > v5 )
return 0xFFFFFFFFLL;
v6 = 0LL;
*a1 = v4;
v7 = v5 - v4;
if ( a2[1] < v7 )
v7 = a2[1];
a1[1] = v7;
return v6;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C100C) ----------------------------------------------------
signed __int64 __fastcall sub_1800C100C(unsigned __int64 *a1, _BYTE *a2)
{
_BYTE *v2; // x20
unsigned __int64 *v3; // x19
__int64 v4; // x8
__int64 v5; // x9
bool v6; // cf
unsigned __int64 v7; // x9
unsigned __int64 v8; // x10
unsigned __int64 v9; // x10
signed __int64 result; // x0
char v11; // [xsp+10h] [xbp-30h]
_BYTE *v12; // [xsp+18h] [xbp-28h]
__int64 v13; // [xsp+20h] [xbp-20h]
__int64 v14; // [xsp+28h] [xbp-18h]
v2 = a2;
v3 = a1;
v14 = 5139240511851214385LL;
if ( (unsigned int)sub_1800C0F4C(a1, 22LL, (unsigned __int64 *)&v11, 0) )
goto LABEL_15;
v4 = sub_1800F08E8((__int64)v2);
if ( v13 != v4 || (unsigned int)sub_1800F0718(v12, v2, v4) )
goto LABEL_15;
v5 = (__int64)&v12[-*v3];
if ( (unsigned __int64)v12 < *v3 )
sub_1800D489C("%llx:%d", &byte_180101040, 12791624394463092LL, 174LL);
v6 = __CFADD__(v13, v5);
v7 = v13 + v5;
if ( v6 || (v8 = v3[1], v6 = v8 >= v7, v9 = v8 - v7, !v6) )
{
LABEL_15:
result = 0xFFFFFFFFLL;
}
else
{
result = 0LL;
*v3 += v7;
v3[1] = v9;
}
if ( 5139240511851214385LL != v14 )
sub_1800D4A5C();
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C1108) ----------------------------------------------------
signed __int64 __fastcall sub_1800C1108(__int64 a1, __int64 a2, int a3, __int64 a4)
{
__int64 v4; // x22
int v5; // w21
__int64 v6; // x19
__int64 v7; // x20
__int64 v8; // x8
_QWORD *v9; // x23
__int64 v10; // x25
__int64 v11; // x22
unsigned int v12; // w20
__int64 v13; // x0
signed __int64 result; // x0
int v15; // w8
int v16; // w8
unsigned int v17; // w0
__int64 v18; // x0
__int64 *v19; // [xsp+10h] [xbp-90h]
__int64 v20; // [xsp+18h] [xbp-88h]
__int64 v21; // [xsp+20h] [xbp-80h]
__int64 v22; // [xsp+28h] [xbp-78h]
__int64 v23; // [xsp+58h] [xbp-48h]
v4 = a4;
v5 = a3;
v6 = a2;
v7 = a1;
v23 = 5139240511851214385LL;
if ( LOBYTE(qword_1801158C8[2515]) == 1 )
{
v8 = *(_QWORD *)(a2 + 16);
if ( v8 == 4 )
{
if ( MEMORY[0x18011A790] && !(unsigned int)sub_1800F7624(a2, (unsigned int)a1, &v22, &v19) )
MEMORY[0x18011A790](v7, v5 == 1, v22, (unsigned int)v19);
}
else if ( v8 == 2 )
{
if ( MEMORY[0x18011A788] && !(unsigned int)sub_1800F753C(a2, (unsigned int)a1, (unsigned __int64 *)&v22) )
MEMORY[0x18011A788](v7, v5 == 1, v22);
}
else
{
if ( v8 != 1 )
sub_1800D489C("%llx:%d", &byte_180101040, -825580612549415916LL, 1216LL);
if ( MEMORY[0x18011A780] && !(unsigned int)sub_1800F75B8(a2, (unsigned int)a1, (bool *)&v22) )
MEMORY[0x18011A780](v7, v5 == 1, (unsigned __int8)v22);
}
}
v9 = *(_QWORD **)v4;
v10 = *(_QWORD *)(v4 + 8);
v11 = *(_QWORD *)(v4 + 16);
qword_1801158C8[229] = (__int64)sub_180100E94();
if ( v5 == 1 )
{
switch ( (_DWORD)v7 )
{
case 0x44475354:
v12 = sub_1800F714C(
(__int64)v9,
(_QWORD *)(v11 + 57),
0x30uLL,
(__int64 (__fastcall **)(_QWORD, _QWORD, char *, unsigned __int64, _QWORD))off_180112D68);
if ( v12 )
{
v13 = 1074003995LL;
goto LABEL_64;
}
v12 = sub_1800C2CC8(1145525076LL, v6, (_BYTE *)(v11 + 57), 48LL);
if ( v12 )
{
v13 = 1074003996LL;
goto LABEL_64;
}
break;
case 0x45534543:
*(_BYTE *)(v11 + 6) = 1;
v15 = sub_1800C2C50(1163085123LL, v6, 1);
result = 0LL;
*(_BYTE *)(v11 + 5) = v15 == 0;
goto LABEL_71;
case 0x454B4559:
result = sub_1800C2C50(1162560857LL, v6, 1);
if ( !(_DWORD)result )
{
*(_BYTE *)(v11 + 1) = 1;
goto LABEL_71;
}
break;
case 0x4550524F:
*(_BYTE *)(v11 + 4) = 1;
v16 = sub_1800C2C50(1162891855LL, v6, 1);
result = 0LL;
*(_BYTE *)(v11 + 3) = v16 == 0;
goto LABEL_71;
case 0x4450524F:
result = sub_1800C2C50(1146114639LL, v6, 1);
if ( !(_DWORD)result )
{
*(_BYTE *)v11 = 1;
goto LABEL_71;
}
break;
}
goto LABEL_65;
}
if ( v5 )
goto LABEL_67;
if ( (_DWORD)v7 == 1095585357 )
{
result = sub_1800C2C50(1095585357LL, v6, 1);
if ( !(_DWORD)result )
{
*(_BYTE *)(v11 + 2) = 1;
goto LABEL_71;
}
}
else
{
if ( (_DWORD)v7 != 1112425288 )
{
switch ( (_DWORD)v7 )
{
case 0x424F5244:
v12 = sub_1800C2B9C(0, 1112494660LL, v6, *(_QWORD *)(v10 + 32));
if ( v12 )
{
v13 = 1074003987LL;
goto LABEL_64;
}
break;
case 0x4345504F:
v12 = sub_1800C2B9C(1, 1128616015LL, v6, *(_QWORD *)(v10 + 16));
if ( v12 )
{
v13 = 1074003989LL;
goto LABEL_64;
}
break;
case 0x43484950:
v12 = sub_1800C2B9C(0, 1128810832LL, v6, *(_QWORD *)v10);
if ( v12 )
{
v13 = 1074003986LL;
goto LABEL_64;
}
break;
case 0x4350524F:
v12 = sub_1800C2C50(1129337423LL, v6, *(unsigned __int8 *)(v10 + 40));
if ( v12 )
{
v13 = 1074003990LL;
goto LABEL_64;
}
break;
case 0x43534543:
v12 = sub_1800C2C50(1129530691LL, v6, *(unsigned __int8 *)(v10 + 41));
if ( v12 )
{
v13 = 1074003991LL;
goto LABEL_64;
}
break;
case 0x53444F4D:
v12 = sub_1800C2B9C(0, 1396985677LL, v6, *(_QWORD *)(v10 + 24));
if ( v12 )
{
v13 = 1074003988LL;
goto LABEL_64;
}
break;
case 0x45434944:
v12 = sub_1800C2B9C(0, 1162037572LL, v6, *(_QWORD *)(v10 + 8));
if ( v12 )
{
v13 = 1074003985LL;
LABEL_64:
sub_1800F598C(v13);
goto LABEL_68;
}
break;
}
goto LABEL_65;
}
if ( *(_BYTE *)(v10 + 44) )
{
if ( !*(_BYTE *)(v10 + 42) )
{
v18 = *(_QWORD *)(v10 + 48);
v21 = *(_QWORD *)(v10 + 48);
goto LABEL_63;
}
sub_1800F73BC(v9, 1112425294LL, &v19, &v20);
v12 = v17;
if ( v17 )
{
v13 = 1074003993LL;
goto LABEL_64;
}
if ( v20 == 8 )
{
v21 = *v19;
v18 = v21;
LABEL_63:
sub_1800DA1F0(v18, (__int64)&v22, 0x30uLL);
}
sub_1800F598C(1074003992LL);
LABEL_67:
v12 = -1;
LABEL_68:
if ( v12 )
result = v12;
else
result = 1LL;
goto LABEL_71;
}
}
LABEL_65:
result = 0LL;
LABEL_71:
if ( 5139240511851214385LL != v23 )
sub_1800D4A5C();
return result;
}
// 180101040: using guessed type char byte_180101040;
// 180112D68: using guessed type __int64 (__fastcall *off_180112D68[4])();
// 180114C90: using guessed type __int64 qword_180114C90;
// 180114CE8: using guessed type __int64[105];
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
// 18011A780: using guessed type __int64 (__fastcall *)(_QWORD, _QWORD, _QWORD);
// 18011A788: using guessed type __int64 (__fastcall *)(_QWORD, _QWORD, _QWORD);
// 18011A790: using guessed type __int64 (__fastcall *)(_QWORD, _QWORD, _QWORD, _QWORD);
//----- (00000001800C1698) ----------------------------------------------------
signed __int64 __fastcall sub_1800C1698(__int64 a1, __int64 a2)
{
__int64 v2; // x8
int v3; // w9
signed __int64 v4; // x8
signed __int64 result; // x0
v2 = *(_QWORD *)(a2 + 8);
v3 = *(unsigned __int8 *)(v2 + 105);
v4 = v2 + 106;
if ( v3 )
result = v4;
else
result = 0LL;
return result;
}
//----- (00000001800C16B0) ----------------------------------------------------
// write access to const memory has been detected, the output may be wrong!
__int64 __fastcall sub_1800C16B0(_QWORD *a1, __int64 a2, unsigned __int64 a3, int a4)
{
int v4; // w19
unsigned __int64 v5; // x21
__int64 v6; // x22
_QWORD *v7; // x24
_QWORD *v8; // x23
__int64 i; // x20
unsigned __int64 v10; // x8
unsigned __int64 v11; // x27
unsigned int v12; // w8
__int64 v13; // x25
_QWORD *v14; // x0
__int64 v15; // x8
__int64 v17; // [xsp+10h] [xbp-60h]
__int64 v18; // [xsp+18h] [xbp-58h]
v4 = a4;
v5 = a3;
v6 = a2;
v7 = a1;
v18 = 5139240511851214385LL;
v8 = (_QWORD *)sub_1800EDBF4(0x1EuLL);
for ( i = 0LL; (signed int)i <= 31; i = (unsigned int)(i + 1) )
{
v10 = *(_QWORD *)(v6 + 24);
v11 = v10 - v5;
if ( v10 <= v5 || (signed __int64)v11 < 30 )
break;
v12 = (unsigned int)v11 >= 0x1E ? 30 : (_DWORD)v11;
if ( v7 )
{
v13 = v12;
sub_1800F03F0(v8, v7, v12);
}
else
{
v13 = v12;
if ( (*(unsigned int (__fastcall **)(__int64, _QWORD *, unsigned __int64, _QWORD))(v6 + 40))(v6, v8, v5, v12) != 30 )
break;
}
if ( (unsigned int)sub_1800C0DF4((__int64)v8, v13, (unsigned int *)&v17 + 1, &v17) || (unsigned int)v17 > v11 )
break;
v14 = (_QWORD *)sub_1800EDBF4(0x38uLL);
v14[2] = v6;
v14[3] = v5;
v15 = (unsigned int)v17;
v14[4] = v17;
*((_DWORD *)v14 + 10) = 1768777524;
*((_DWORD *)v14 + 11) = v4;
v14[6] = v14;
if ( !&off_180114598 || &off_180114598 != &off_180114598 )
sub_1800D489C("%llx:%d", &byte_180101040, -825580612549415916LL, 62LL);
v7 = 0LL;
*v14 = &off_180114598;
v14[1] = &off_180114598;
off_1801145A0 = v14;
off_180114598 = v14;
v5 += v15;
}
sub_1800EE010(v8);
if ( 5139240511851214385LL != v18 )
sub_1800D4A5C();
return i;
}
// 1800C1800: write access to const memory at 180114598 has been detected
// 1800C17FC: write access to const memory at 1801145A0 has been detected
// 180101040: using guessed type char byte_180101040;
// 180114598: using guessed type void *off_180114598;
// 1801145A0: using guessed type void *off_1801145A0;
//----- (00000001800C1958) ----------------------------------------------------
void **__fastcall sub_1800C1958(int a1)
{
void **i; // x9
void **v2; // x9
for ( i = &off_1801145A0; ; i = v2 + 1 )
{
v2 = (void **)*i;
if ( v2 == &off_180114598 )
return 0LL;
if ( *((_DWORD *)v2 + 9) == a1 )
break;
}
return v2 + 4;
}
// 180114598: using guessed type void *off_180114598;
// 1801145A0: using guessed type void *off_1801145A0;
//----- (00000001800C1994) ----------------------------------------------------
signed __int64 __fastcall sub_1800C1994(unsigned int *a1, __int64 a2, unsigned int a3, unsigned int *a4, char *a5, unsigned __int64 a6, unsigned __int64 *a7)
{
unsigned __int64 *v7; // x22
unsigned __int64 v8; // x20
char *v9; // x19
unsigned int *v10; // x21
unsigned int v11; // w23
__int64 v12; // x24
unsigned int *v13; // x26
__int64 v14; // x0
signed __int64 *v15; // x0
__int64 v16; // x0
char v17; // w8
char v18; // w0
unsigned int v19; // w8
unsigned __int64 v20; // x27
signed __int64 result; // x0
int v22; // w0
char v23; // w8
unsigned int v24; // w8
int v25; // w10
int v26; // w0
__int64 v27; // x0
int v28; // w24
int v29; // w24
unsigned __int64 v30; // x24
char *v31; // x25
int v32; // w0
signed int v33; // w27
signed __int64 v34; // x8
int v35; // w8
unsigned __int64 v36; // x27
int v37; // w27
__int64 v38; // x26
int v39; // w27
signed __int64 v40; // x0
signed __int64 v41; // x8
__int64 v42; // x0
unsigned __int64 v43; // x9
unsigned __int8 v44; // cf
unsigned __int64 v45; // x9
signed __int64 v46; // x9
unsigned __int64 v47; // x8
__int64 v48; // x4
__int64 v49; // x5
__int64 v50; // x6
__int64 v51; // x7
char *v52; // x0
unsigned __int64 v53; // x1
__int64 v54; // [xsp+0h] [xbp-4D0h]
int v55; // [xsp+24h] [xbp-4ACh]
char *v56; // [xsp+38h] [xbp-498h]
char *v57; // [xsp+40h] [xbp-490h]
char *v58; // [xsp+48h] [xbp-488h]
__int64 *v59; // [xsp+50h] [xbp-480h]
int *v60; // [xsp+58h] [xbp-478h]
unsigned int v61; // [xsp+64h] [xbp-46Ch]
char *v62; // [xsp+68h] [xbp-468h]
unsigned __int64 v63; // [xsp+70h] [xbp-460h]
unsigned __int64 v64; // [xsp+78h] [xbp-458h]
char v65; // [xsp+80h] [xbp-450h]
__int64 *v66; // [xsp+88h] [xbp-448h]
__int64 v67; // [xsp+90h] [xbp-440h]
unsigned __int64 v68[2]; // [xsp+98h] [xbp-438h]
char v69; // [xsp+A8h] [xbp-428h]
__int64 v70; // [xsp+B0h] [xbp-420h]
int v71; // [xsp+C4h] [xbp-40Ch]
unsigned __int64 v72[2]; // [xsp+C8h] [xbp-408h]
char v73; // [xsp+D8h] [xbp-3F8h]
__int64 v74; // [xsp+E0h] [xbp-3F0h]
__int64 v75; // [xsp+F0h] [xbp-3E0h]
__int64 v76; // [xsp+F8h] [xbp-3D8h]
_QWORD v77[6]; // [xsp+100h] [xbp-3D0h]
int v78; // [xsp+130h] [xbp-3A0h]
__int16 v79; // [xsp+134h] [xbp-39Ch]
char v80; // [xsp+136h] [xbp-39Ah]
char v81; // [xsp+137h] [xbp-399h]
char v82; // [xsp+167h] [xbp-369h]
char v83; // [xsp+168h] [xbp-368h]
char v84; // [xsp+199h] [xbp-337h]
int v85; // [xsp+19Ch] [xbp-334h]
unsigned int v86; // [xsp+1A0h] [xbp-330h]
__int64 v87; // [xsp+1A8h] [xbp-328h]
__int64 v88; // [xsp+1B0h] [xbp-320h]
__int64 v89; // [xsp+1B8h] [xbp-318h]
__int64 v90; // [xsp+1C0h] [xbp-310h]
__int64 v91; // [xsp+1C8h] [xbp-308h]
char v92; // [xsp+1D0h] [xbp-300h]
char v93; // [xsp+1D1h] [xbp-2FFh]
char v94; // [xsp+1D2h] [xbp-2FEh]
char v95; // [xsp+1D3h] [xbp-2FDh]
char v96; // [xsp+1D4h] [xbp-2FCh]
unsigned __int64 v97; // [xsp+1D8h] [xbp-2F8h]
__int64 v98; // [xsp+1E0h] [xbp-2F0h]
bool v99; // [xsp+210h] [xbp-2C0h]
char v100; // [xsp+211h] [xbp-2BFh]
_BYTE v101[6]; // [xsp+212h] [xbp-2BEh]
char v102; // [xsp+248h] [xbp-288h]
int v103; // [xsp+410h] [xbp-C0h]
int v104; // [xsp+414h] [xbp-BCh]
__int64 v105; // [xsp+418h] [xbp-B8h]
__int64 v106; // [xsp+420h] [xbp-B0h]
__int64 v107; // [xsp+428h] [xbp-A8h]
__int64 v108; // [xsp+430h] [xbp-A0h]
__int64 v109; // [xsp+438h] [xbp-98h]
__int64 v110; // [xsp+440h] [xbp-90h]
__int64 v111; // [xsp+448h] [xbp-88h]
__int64 v112; // [xsp+450h] [xbp-80h]
__int64 v113; // [xsp+458h] [xbp-78h]
__int64 v114; // [xsp+460h] [xbp-70h]
__int64 v115; // [xsp+468h] [xbp-68h]
__int64 v116; // [xsp+470h] [xbp-60h]
__int64 v117; // [xsp+478h] [xbp-58h]
v7 = a7;
v8 = a6;
v9 = a5;
v10 = a4;
v11 = a3;
v12 = a2;
v13 = a1;
v117 = 5139240511851214385LL;
v64 = 0LL;
if ( !a1 )
{
v34 = 365LL;
goto LABEL_79;
}
if ( !a5 )
{
v34 = 366LL;
goto LABEL_79;
}
if ( *a1 > a6 )
{
v14 = 1074003969LL;
LABEL_5:
sub_1800F598C(v14);
LABEL_14:
sub_1800F05A0(v9, v8);
if ( LOBYTE(qword_1801158C8[2515]) == 1 )
MEMORY[0x18011A798](0LL);
result = 0xFFFFFFFFLL;
goto LABEL_17;
}
sub_1800F0620((signed __int64 *)&v78, 0, 0x74uLL);
v15 = sub_1800F0620(&v87, 0, 0xA0uLL);
v16 = sub_1800F6884(v15);
v89 = (unsigned int)v16;
v87 = (unsigned int)sub_1800F6888(v16);
v91 = (unsigned int)sub_1800C678C();
v88 = sub_1800F6890();
v90 = (unsigned int)sub_1800F685C(v88);
v92 = sub_1800F6858();
v17 = sub_1800F6860();
v18 = 0;
v93 = v17;
v19 = v13[3];
v94 = (v19 >> 2) & 1;
v96 = (v19 >> 3) & 1;
if ( !(v19 & 8) )
v18 = sub_1800C6CC8();
v95 = v18;
v99 = (unsigned int)sub_1800C6A18(&v98) == 0;
if ( v96 && !v94 )
v97 = sub_1800C6838();
v100 = sub_1800C5E80();
if ( !(unsigned int)sub_1800C6AF0(v77) )
sub_1800F03F0(v101, v77, 0x30uLL);
qword_1801158C8[229] = (__int64)sub_180100E94();
v20 = *v13;
if ( (unsigned int)sub_1800C22D4((__int64)v13, v9, v20) )
goto LABEL_14;
if ( *((_BYTE *)v13 + 13) & 1 )
{
if ( v7 )
*v7 = v20;
goto LABEL_24;
}
if ( (unsigned int)sub_1800C0DF4((__int64)v9, 30LL, 0LL, &v64) )
{
v14 = 1074003971LL;
goto LABEL_5;
}
if ( v20 < v64 )
{
v14 = 1074003972LL;
goto LABEL_5;
}
sub_1800F05A0(&v9[v64], v20 - v64);
sub_1800F79B4((__int64)v9, v64, &v102);
if ( v22 )
{
v14 = 1074003973LL;
goto LABEL_5;
}
sub_1800F6FA4((__int64)&v102, &v61);
v23 = (char)MEMORY[0x18011A778];
if ( MEMORY[0x18011A778] )
{
if ( (unsigned int)MEMORY[0x18011A778](v61) )
{
if ( !MEMORY[0x18011A798] )
{
v34 = 456LL;
goto LABEL_79;
}
MEMORY[0x18011A798](0LL);
v23 = 1;
}
else
{
v23 = 0;
}
}
LOBYTE(qword_1801158C8[2515]) = v23;
if ( v11 )
{
v24 = 0;
while ( v24 < v11 )
{
v25 = *(_DWORD *)(v12 + 4LL * v24++);
if ( v25 == v61 )
goto LABEL_40;
}
v14 = 1074003974LL;
goto LABEL_5;
}
LABEL_40:
if ( (unsigned int)sub_1800F724C((__int64)&v102, (bool *)&v82) || !v82 )
{
v27 = 1074003975LL;
goto LABEL_45;
}
v58 = &v102;
v59 = &v87;
v60 = &v78;
sub_1800F7A70(
v61,
(__int64)&v102,
(__int64 (__fastcall **)(unsigned __int64, __int64 *, __int64, __int64))off_180111448,
(__int64)off_180112D68,
(__int64)&v58);
if ( v26 )
{
v27 = 1074003976LL;
LABEL_45:
sub_1800F598C(v27);
v79 = 0;
v78 = 0;
v14 = 1074004003LL;
v80 = 0;
goto LABEL_5;
}
if ( (unsigned int)sub_1800F7274((__int64)&v102, &v81, 0x30uLL, (__int64 (**)(void))off_180112D68) )
{
v34 = 524LL;
goto LABEL_79;
}
if ( v95 && !BYTE2(v78) )
{
if ( !v99 || (unsigned int)sub_1800F0718(&v98, &v81, 48LL) )
{
v27 = 1074003977LL;
goto LABEL_45;
}
v83 = 1;
}
if ( (_BYTE)v79 )
{
v28 = HIBYTE(v78);
if ( v28 != (unsigned int)sub_1800D4E90((unsigned __int8)v78) )
{
v27 = 1074003978LL;
goto LABEL_45;
}
}
if ( v80 )
{
v29 = HIBYTE(v79);
if ( v29 != (unsigned int)sub_1800F6860() )
{
v27 = 1074003979LL;
goto LABEL_45;
}
}
if ( (unsigned int)sub_1800F6F60((__int64)&v102, (__int64)&v62) )
{
v14 = 1074003980LL;
goto LABEL_5;
}
v30 = v63;
if ( v63 > v8 )
{
v14 = 1074004004LL;
goto LABEL_5;
}
v31 = v62;
if ( !BYTE1(v78) )
goto LABEL_102;
if ( (unsigned int)sub_1800F6850() )
{
v14 = 1074004010LL;
goto LABEL_5;
}
v115 = 0LL;
v116 = 0LL;
v113 = 0LL;
v114 = 0LL;
v111 = 0LL;
v112 = 0LL;
v32 = sub_1800F7004((__int64)&v102, (__int64)&v75);
if ( !v75 )
{
v33 = 0;
goto LABEL_75;
}
v33 = 0;
if ( v32 == 6 || !v76 )
{
LABEL_75:
if ( !v33 )
goto LABEL_102;
LABEL_76:
v14 = 1074003982LL;
goto LABEL_5;
}
if ( v32
|| (unsigned int)sub_1800F85F4((unsigned __int64 *)&v75, (unsigned __int64 *)&v73)
|| (unsigned int)sub_1800F8A3C(&v74, (__int64 *)v72) )
{
goto LABEL_76;
}
do
{
if ( (unsigned int)sub_1800F8A58(v72, (unsigned __int64 *)&v69)
|| (unsigned int)sub_1800F8A3C(&v70, (__int64 *)v68)
|| (unsigned int)sub_1800F8A58(v68, (unsigned __int64 *)&v65)
|| (unsigned int)sub_1800F88F8((char **)&v66, &v103) )
{
goto LABEL_76;
}
v33 = -1;
if ( (unsigned int)sub_1800F8A58(v68, (unsigned __int64 *)&v65) || v67 != 16 )
goto LABEL_75;
v106 = v66[1];
v105 = *v66;
if ( (unsigned int)sub_1800F8A58(v68, (unsigned __int64 *)&v65) )
goto LABEL_76;
v35 = 8 * v67;
v104 = 8 * v67;
if ( 8 * (_DWORD)v67 != 128 && v35 != 256 && v35 != 192 )
goto LABEL_76;
v110 = v66[3];
v109 = v66[2];
v108 = v66[1];
v107 = *v66;
switch ( v35 )
{
case 256:
v55 = 0x20000000;
v36 = 32LL;
break;
case 192:
v55 = 0x10000000;
v36 = 24LL;
break;
case 128:
v55 = 0;
v36 = 16LL;
break;
default:
goto LABEL_76;
}
v111 = v105;
v112 = v106;
sub_1800EED30(&v113, &v107, v36, 0x20uLL);
if ( (unsigned int)(v103 - 1) > 1 )
goto LABEL_76;
v71 = 0;
}
while ( (unsigned int)sub_1800C68D8(v103, &v71) );
if ( (unsigned int)sub_1800D6B14(17, (__int64)&v111, (__int64)&v111, v36 + 16, v71, 0LL, 0LL) )
goto LABEL_76;
if ( v30 & 0xF )
{
v34 = 1695LL;
LABEL_79:
sub_1800D489C("%llx:%d", &byte_180101040, -825580612549415916LL, v34);
}
v37 = sub_1800D6B14(17, (__int64)v31, (__int64)v31, v30, v55, (__int64)&v113, &v111);
sub_1800EF16C(&v111, 0x30uLL, 0, 0x30uLL, 0x30uLL);
if ( v37 )
goto LABEL_76;
LABEL_102:
if ( (unsigned int)sub_1800F7048((__int64)&v102, (bool *)&v84) )
{
v14 = 1074003983LL;
goto LABEL_5;
}
if ( !v84 )
goto LABEL_154;
if ( (unsigned int)sub_1800F7080(&v102, &v85, &v86) )
{
v14 = 1074003984LL;
goto LABEL_5;
}
if ( !v84 )
{
LABEL_154:
sub_1800F03F0(v9, v31, v30);
if ( !v7 )
goto LABEL_113;
goto LABEL_112;
}
v38 = v86;
v39 = v85;
if ( v85 )
{
if ( v85 != 1 )
goto LABEL_139;
v40 = sub_1800FC6DC(2193);
v41 = 41984LL;
}
else
{
v40 = 0LL;
v41 = 0x2000LL;
}
v43 = v40 + v30;
if ( __CFADD__(v40, v30)
|| (v44 = __CFADD__(v43, v41), v45 = v43 + v41, v44)
|| v45 > v8
|| (v46 = v40 + v38, __CFADD__(v40, v38))
|| (v44 = __CFADD__(v46, v41), v47 = v46 + v41, v44)
|| v47 > v8 )
{
v14 = 1074004006LL;
goto LABEL_5;
}
v56 = &v9[v8 - v40];
v57 = &v56[-v30];
sub_1800F03F0(&v56[-v30], v31, v30);
if ( v39 == 1 )
{
if ( sub_1800FC728(v9, v38, v57, v30, v56, 2193LL) != v38 )
{
v14 = 1074004008LL;
goto LABEL_5;
}
goto LABEL_141;
}
if ( v39 )
{
LABEL_139:
v14 = 1074004005LL;
goto LABEL_5;
}
if ( (unsigned int)sub_1800F0A2C(v9, v38, v57, v30, v48, v49, v50, v51, v54) != (_DWORD)v38 )
{
v14 = 1074004007LL;
goto LABEL_5;
}
LABEL_141:
v52 = &v9[v38];
if ( v57 <= &v9[v38] )
{
v53 = v8 - v38;
}
else
{
v52 = &v56[-v30];
v53 = &v9[v8] - v57;
}
sub_1800F05A0(v52, v53);
sub_1800F598C(262185LL);
v30 = v86;
if ( v7 )
LABEL_112:
*v7 = v30;
LABEL_113:
if ( v31 <= v9 )
{
v34 = 706LL;
goto LABEL_79;
}
if ( v64 > v30 )
sub_1800F05A0(&v9[v30], v64 - v30);
if ( !BYTE1(v78) )
sub_1800D4DD8();
sub_1800D4E6C((unsigned __int8)v78);
sub_1800D4EB8(&v81);
v42 = !BYTE2(v78) && (v96 || v83);
sub_1800D4EF4(v42);
if ( !v94 )
sub_1800D4F18();
if ( v10 )
*v10 = v61;
LABEL_24:
if ( LOBYTE(qword_1801158C8[2515]) == 1 )
MEMORY[0x18011A798](1LL);
result = 0LL;
LABEL_17:
if ( 5139240511851214385LL != v117 )
sub_1800D4A5C();
return result;
}
// 1800F6850: using guessed type __int64 sub_1800F6850(void);
// 1800F6858: using guessed type __int64 sub_1800F6858(void);
// 1800F685C: using guessed type __int64 __fastcall sub_1800F685C(_QWORD);
// 1800F6884: using guessed type __int64 __fastcall sub_1800F6884(_QWORD);
// 1800F6888: using guessed type __int64 __fastcall sub_1800F6888(_QWORD);
// 1800F6890: using guessed type __int64 sub_1800F6890(void);
// 1800FC728: using guessed type __int64 __fastcall sub_1800FC728(_QWORD, _QWORD, _QWORD, _QWORD, _QWORD, _QWORD);
// 180101040: using guessed type char byte_180101040;
// 180111448: using guessed type __int64 (__fastcall *off_180111448[2])();
// 180112D68: using guessed type __int64 (__fastcall *off_180112D68[4])();
// 180114C90: using guessed type __int64 qword_180114C90;
// 180114CE8: using guessed type __int64[105];
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
// 18011A778: using guessed type __int64 (__fastcall *)(_QWORD);
// 18011A798: using guessed type __int64 (__fastcall *)(_QWORD);
//----- (00000001800C22D4) ----------------------------------------------------
signed __int64 __fastcall sub_1800C22D4(__int64 a1, _QWORD *a2, unsigned __int64 a3)
{
unsigned __int64 v3; // x19
_QWORD *v4; // x20
__int64 v5; // x21
int v6; // w8
__int64 v7; // x1
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
signed __int64 result; // x0
__int64 v15; // x0
__int64 v16; // x0
_QWORD *v17; // x1
unsigned int v18; // [xsp+24h] [xbp-3Ch]
__int64 v19; // [xsp+28h] [xbp-38h]
v3 = a3;
v4 = a2;
v5 = a1;
v19 = 5139240511851214385LL;
if ( !a2 )
sub_1800D489C("%llx:%d", &byte_180101040, -825580612549415916LL, 978LL);
v6 = *(_DWORD *)(a1 + 8);
if ( v6 == 1298492794 )
{
if ( a3 > 0x1D )
{
if ( (unsigned int)sub_1800C0DF4(*(_QWORD *)(a1 + 16), 30LL, 0LL, &v18) )
{
v15 = 1074004001LL;
}
else
{
if ( v18 <= v3 )
{
v17 = *(_QWORD **)(v5 + 16);
if ( v17 != v4 )
sub_1800F03F0(v4, v17, v3);
goto LABEL_5;
}
v15 = 1074004002LL;
}
}
else
{
v15 = 1074004000LL;
}
sub_1800F598C(v15);
v16 = 1074003998LL;
}
else if ( v6 == 1768777524 )
{
if ( (*(unsigned int (**)(void))(*(_QWORD *)(*(_QWORD *)(a1 + 16) + 16LL) + 40LL))() == (_DWORD)a3 )
{
LABEL_5:
result = 0LL;
goto LABEL_16;
}
sub_1800EF260((__int64)"%llx:%d\n", v7, v8, v9, v10, v11, v12, v13, -825580612549415916LL);
v16 = 1074003997LL;
}
else
{
v16 = 1074003999LL;
}
sub_1800F598C(v16);
result = 0xFFFFFFFFLL;
LABEL_16:
if ( 5139240511851214385LL != v19 )
sub_1800D4A5C();
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C24D4) ----------------------------------------------------
_QWORD *sub_1800C24D4()
{
_QWORD *result; // x0
MEMORY[0x18011A778] = (__int64 (__fastcall *)(_QWORD))sub_1800C2544;
MEMORY[0x18011A780] = (__int64 (__fastcall *)(_QWORD, _QWORD, _QWORD))sub_1800C256C;
MEMORY[0x18011A788] = (__int64 (__fastcall *)(_QWORD, _QWORD, _QWORD))sub_1800C25FC;
MEMORY[0x18011A790] = (__int64 (__fastcall *)(_QWORD, _QWORD, _QWORD, _QWORD))sub_1800C268C;
MEMORY[0x18011A798] = (__int64 (__fastcall *)(_QWORD))sub_1800C274C;
LOBYTE(qword_1801158C8[2515]) = 0;
result = sub_1800C2B24();
LOBYTE(qword_1801158C8[48]) = 0;
MEMORY[0x18011A770] = 1;
return result;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
// 18011A778: using guessed type __int64 (__fastcall *)(_QWORD);
// 18011A780: using guessed type __int64 (__fastcall *)(_QWORD, _QWORD, _QWORD);
// 18011A788: using guessed type __int64 (__fastcall *)(_QWORD, _QWORD, _QWORD);
// 18011A790: using guessed type __int64 (__fastcall *)(_QWORD, _QWORD, _QWORD, _QWORD);
// 18011A798: using guessed type __int64 (__fastcall *)(_QWORD);
//----- (00000001800C2544) ----------------------------------------------------
__int64 __fastcall sub_1800C2544(int a1)
{
return (a1 == 1802661484) | (unsigned int)(a1 == 1919644270);
}
//----- (00000001800C256C) ----------------------------------------------------
__int64 __fastcall sub_1800C256C(__int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
int *v8; // x9
signed __int64 v9; // x8
signed __int64 v10; // x10
int v11; // w11
v8 = (int *)6443588896LL;
if ( !(_DWORD)a2 )
v8 = (int *)6443588176LL;
v9 = -1LL;
while ( ++v9 <= 19 )
{
v10 = (signed __int64)(v8 + 2);
v11 = *v8;
v8 += 2;
if ( !v11 )
{
*(_DWORD *)(v10 - 8) = result;
*(_BYTE *)(v10 - 4) = a3;
return result;
}
}
result = sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, -825580612549415916LL);
MEMORY[0x180115A49] = 1;
return result;
}
//----- (00000001800C25FC) ----------------------------------------------------
__int64 __fastcall sub_1800C25FC(__int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
int *v8; // x9
signed __int64 v9; // x8
signed __int64 v10; // x10
int v11; // w11
v8 = (int *)6443589056LL;
if ( !(_DWORD)a2 )
v8 = (int *)6443588336LL;
v9 = -1LL;
while ( ++v9 <= 19 )
{
v10 = (signed __int64)(v8 + 4);
v11 = *v8;
v8 += 4;
if ( !v11 )
{
*(_DWORD *)(v10 - 16) = result;
*(_QWORD *)(v10 - 8) = a3;
return result;
}
}
result = sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, -825580612549415916LL);
MEMORY[0x180115A49] = 1;
return result;
}
//----- (00000001800C268C) ----------------------------------------------------
__int64 __fastcall sub_1800C268C(int a1, __int64 a2, __int64 a3, unsigned __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
unsigned __int64 v8; // x19
_QWORD *v9; // x20
signed __int64 v10; // x8
signed __int64 v11; // x9
signed __int64 v12; // x8
_QWORD *v13; // x22
int v14; // w10
_QWORD *v15; // x0
__int64 result; // x0
v8 = a4;
v9 = (_QWORD *)a3;
v10 = 6443588656LL;
if ( (_DWORD)a2 )
v10 = 6443589376LL;
v11 = v10 - 8;
v12 = -1LL;
while ( ++v12 <= 9 )
{
v13 = (_QWORD *)(v11 + 24);
v14 = *(_DWORD *)(v11 + 8);
v11 += 24LL;
if ( !v14 )
{
*((_DWORD *)v13 - 4) = a1;
v15 = (_QWORD *)sub_1800EDBF4(a4);
*v13 = v15;
result = (__int64)sub_1800F03F0(v15, v9, v8);
*(v13 - 1) = v8;
return result;
}
}
result = sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, -825580612549415916LL);
MEMORY[0x180115A49] = 1;
return result;
}
//----- (00000001800C274C) ----------------------------------------------------
_QWORD *__fastcall sub_1800C274C(_QWORD *result)
{
char v1; // w19
v1 = (char)result;
if ( !((unsigned __int8)result & 1) )
result = sub_1800C2B24();
LOBYTE(qword_1801158C8[48]) = v1;
return result;
}
// 180114CE8: using guessed type __int64[105];
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800C2778) ----------------------------------------------------
signed __int64 sub_1800C2778()
{
signed __int64 v0; // x19
__int64 v1; // x1
__int64 v2; // x2
__int64 v3; // x3
__int64 v4; // x4
__int64 v5; // x5
__int64 v6; // x6
__int64 v7; // x7
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
__int64 v14; // x2
__int64 v15; // x3
__int64 v16; // x4
__int64 v17; // x5
__int64 v18; // x6
__int64 v19; // x7
__int64 v20; // x1
__int64 v21; // x2
__int64 v22; // x3
__int64 v23; // x4
__int64 v24; // x5
__int64 v25; // x6
__int64 v26; // x7
__int64 v27; // x2
__int64 v28; // x3
__int64 v29; // x4
__int64 v30; // x5
__int64 v31; // x6
__int64 v32; // x7
__int64 v33; // x2
__int64 v34; // x3
__int64 v35; // x4
__int64 v36; // x5
__int64 v37; // x6
__int64 v38; // x7
__int64 v40; // [xsp+10h] [xbp-30h]
__int64 v41; // [xsp+18h] [xbp-28h]
v41 = 5139240511851214385LL;
if ( !(qword_1801158C8[2517] & 1) )
sub_1800D489C("%llx:%d", &byte_180101040, -825580612549415916LL, 1944LL);
v0 = 0xFFFFFFFFLL;
if ( MEMORY[0x180115A48] && !MEMORY[0x180115A49] )
{
if ( (unsigned int)sub_1800EBDF4(0LL, "chosen/manifest-properties", &v40) )
{
sub_1800C28DC(v40, 6443588176LL, v2, v3, v4, v5, v6, v7);
sub_1800C299C(v40, 6443588336LL, v8, v9, v10, v11, v12, v13);
sub_1800C2A5C(v40, 6443588656LL, v14, v15, v16, v17, v18, v19);
if ( sub_1800EBDF4(0LL, "chosen/manifest-object-properties", &v40) & 1 )
{
sub_1800C28DC(v40, 6443588896LL, v21, v22, v23, v24, v25, v26);
sub_1800C299C(v40, 6443589056LL, v27, v28, v29, v30, v31, v32);
sub_1800C2A5C(v40, 6443589376LL, v33, v34, v35, v36, v37, v38);
v0 = 0LL;
}
else
{
sub_1800EF260((__int64)"%llx:%d\n", v20, v21, v22, v23, v24, v25, v26, -825580612549415916LL);
v0 = 4294967287LL;
}
}
else
{
sub_1800EF260((__int64)"%llx:%d\n", v1, v2, v3, v4, v5, v6, v7, -825580612549415916LL);
v0 = 4294967291LL;
}
}
sub_1800C2B24();
if ( 5139240511851214385LL != v41 )
sub_1800D4A5C();
return v0;
}
// 180101040: using guessed type char byte_180101040;
// 180114C90: using guessed type __int64 qword_180114C90;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800C28DC) ----------------------------------------------------
signed __int64 __fastcall sub_1800C28DC(signed __int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x19
signed __int64 v9; // x21
unsigned __int8 *v10; // x22
unsigned int v11; // w8
int v12; // t1
char v13; // [xsp+26h] [xbp-5Ah]
__int64 v14; // [xsp+58h] [xbp-28h]
v8 = result;
v9 = 0LL;
v14 = 5139240511851214385LL;
v10 = (unsigned __int8 *)(a2 + 4);
while ( v9 <= 19 )
{
v11 = *((_DWORD *)v10 - 1);
if ( !v11 )
break;
sub_1800EFC74(&v13, 0x32uLL, 0LL, 0x32uLL, (__int64)"%c%c%c%c", a6, a7, a8, v11 >> 24);
v12 = *v10;
v10 += 8;
result = sub_1800EC320(v8, &v13, v12);
++v9;
}
if ( 5139240511851214385LL != v14 )
sub_1800D4A5C();
return result;
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800C299C) ----------------------------------------------------
signed __int64 __fastcall sub_1800C299C(signed __int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x19
signed __int64 v9; // x21
__int64 *v10; // x22
unsigned int v11; // w8
__int64 v12; // t1
char v13; // [xsp+26h] [xbp-5Ah]
__int64 v14; // [xsp+58h] [xbp-28h]
v8 = result;
v9 = 0LL;
v14 = 5139240511851214385LL;
v10 = (__int64 *)(a2 + 8);
while ( v9 <= 19 )
{
v11 = *((_DWORD *)v10 - 2);
if ( !v11 )
break;
sub_1800EFC74(&v13, 0x32uLL, 0LL, 0x32uLL, (__int64)"%c%c%c%c", a6, a7, a8, v11 >> 24);
v12 = *v10;
v10 += 2;
result = sub_1800EC374(v8, &v13, v12);
++v9;
}
if ( 5139240511851214385LL != v14 )
sub_1800D4A5C();
return result;
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800C2A5C) ----------------------------------------------------
signed __int64 __fastcall sub_1800C2A5C(signed __int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x19
signed __int64 v9; // x21
_QWORD **i; // x22
unsigned int v11; // w8
char v12; // [xsp+26h] [xbp-5Ah]
__int64 v13; // [xsp+58h] [xbp-28h]
v8 = result;
v9 = 0LL;
v13 = 5139240511851214385LL;
for ( i = (_QWORD **)(a2 + 16); v9 <= 9; i += 3 )
{
v11 = *((_DWORD *)i - 4);
if ( !v11 )
break;
sub_1800EFC74(&v12, 0x32uLL, 0LL, 0x32uLL, (__int64)"%c%c%c%c", a6, a7, a8, v11 >> 24);
result = sub_1800EC16C(v8, &v12, *i, *((_DWORD *)i - 2));
++v9;
}
if ( 5139240511851214385LL != v13 )
sub_1800D4A5C();
return result;
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800C2B24) ----------------------------------------------------
_QWORD *sub_1800C2B24()
{
signed __int64 i; // x19
_QWORD *v1; // x0
_QWORD *v2; // x0
for ( i = 504LL; i != 744; i += 24LL )
{
if ( *(_DWORD *)(i + 6443588872LL) )
{
v1 = *(_QWORD **)(i + 6443588888LL);
if ( v1 )
sub_1800EE010(v1);
}
if ( *(_DWORD *)(i + 6443588152LL) )
{
v2 = *(_QWORD **)(i + 6443588168LL);
if ( v2 )
sub_1800EE010(v2);
}
}
return sub_1800F05A0((_QWORD *)0x180115A48LL, 0x5A8uLL);
}
//----- (00000001800C2B9C) ----------------------------------------------------
signed __int64 __fastcall sub_1800C2B9C(int a1, __int64 a2, __int64 a3, unsigned __int64 a4)
{
unsigned __int64 v4; // x19
int v5; // w20
signed __int64 result; // x0
unsigned __int64 v7; // [xsp+0h] [xbp-20h]
__int64 v8; // [xsp+8h] [xbp-18h]
v4 = a4;
v5 = a1;
v8 = 5139240511851214385LL;
v7 = 0LL;
LODWORD(result) = sub_1800F753C(a3, a2, &v7);
if ( (_DWORD)result )
goto LABEL_2;
if ( v5 != 1 )
{
if ( v5 )
{
LODWORD(result) = -1;
LABEL_2:
if ( (_DWORD)result )
result = (unsigned int)result;
else
result = 1LL;
goto LABEL_5;
}
if ( v7 == v4 )
goto LABEL_13;
LABEL_12:
result = 0xFFFFFFFFLL;
goto LABEL_5;
}
if ( v7 < v4 )
goto LABEL_12;
LABEL_13:
result = 0LL;
LABEL_5:
if ( 5139240511851214385LL != v8 )
sub_1800D4A5C();
return result;
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800C2C50) ----------------------------------------------------
signed __int64 __fastcall sub_1800C2C50(__int64 a1, __int64 a2, int a3)
{
int v3; // w19
signed __int64 result; // x0
unsigned __int8 v5; // [xsp+7h] [xbp-19h]
__int64 v6; // [xsp+8h] [xbp-18h]
v3 = a3;
v6 = 5139240511851214385LL;
v5 = 0;
result = sub_1800F75B8(a2, a1, (bool *)&v5);
if ( !(_DWORD)result )
{
if ( v5 == v3 )
result = 0LL;
else
result = 0xFFFFFFFFLL;
}
if ( 5139240511851214385LL != v6 )
sub_1800D4A5C();
return result;
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800C2CC8) ----------------------------------------------------
signed __int64 __fastcall sub_1800C2CC8(__int64 a1, __int64 a2, _BYTE *a3, __int64 a4)
{
__int64 v4; // x19
_BYTE *v5; // x20
signed __int64 result; // x0
int v7; // [xsp+Ch] [xbp-24h]
_BYTE *v8; // [xsp+10h] [xbp-20h]
__int64 v9; // [xsp+18h] [xbp-18h]
v4 = a4;
v5 = a3;
v9 = 5139240511851214385LL;
LODWORD(result) = sub_1800F7624(a2, a1, &v8, &v7);
if ( (_DWORD)result )
goto LABEL_8;
if ( v7 != v4 )
{
LODWORD(result) = -1;
LABEL_8:
if ( (_DWORD)result )
result = (unsigned int)result;
else
result = 1LL;
goto LABEL_11;
}
if ( (unsigned int)sub_1800F0718(v8, v5, v4) )
result = 0xFFFFFFFFLL;
else
result = 0LL;
LABEL_11:
if ( 5139240511851214385LL != v9 )
sub_1800D4A5C();
return result;
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800C2D6C) ----------------------------------------------------
__int64 __fastcall sub_1800C2D6C(__int64 a1)
{
__int64 v1; // x19
__int64 v2; // x1
__int64 v3; // x2
__int64 v4; // x3
__int64 v5; // x4
__int64 v6; // x5
__int64 v7; // x6
__int64 v8; // x7
signed __int64 v9; // x0
__int64 v10; // x20
int v11; // w0
signed __int64 v12; // x0
__int64 v13; // x20
int v14; // w0
__int64 v15; // x20
unsigned int i; // w22
bool v17; // zf
__int64 v18; // x1
__int64 v19; // x2
__int64 v20; // x3
__int64 v21; // x4
__int64 v22; // x5
__int64 v23; // x6
__int64 v24; // x7
const char *v25; // x8
signed __int64 v26; // x0
int v27; // w0
__int64 result; // x0
signed __int64 v29; // x0
__int64 v30; // x20
int v31; // w0
signed __int64 v32; // x0
__int64 v33; // x20
int v34; // w0
__int64 v35; // x20
int v36; // w0
__int64 v37; // x5
__int64 v38; // x6
__int64 v39; // x7
__int64 *v40; // x19
unsigned __int8 *v41; // x0
BOOL v42; // w19
int v43; // w0
__int64 v44; // x1
__int64 v45; // x2
__int64 v46; // x3
__int64 v47; // x4
__int64 v48; // x5
__int64 v49; // x6
__int64 v50; // x7
_DWORD *v51; // x8
int v52; // w0
_QWORD *v53; // x19
unsigned int v54; // w20
__int64 v55; // x0
__int64 v56; // x1
__int64 v57; // x2
__int64 v58; // x3
__int64 v59; // x4
__int64 v60; // x5
__int64 v61; // x6
__int64 v62; // x7
__int64 v63; // x19
int v64; // w0
int v65; // w0
bool v66; // zf
bool v67; // nf
unsigned __int8 v68; // vf
char *v69; // x1
unsigned int v70; // w3
unsigned __int64 *v71; // x2
int v72; // w19
__int64 v73; // [xsp+0h] [xbp-A0h]
int v74; // [xsp+14h] [xbp-8Ch]
__int64 v75; // [xsp+18h] [xbp-88h]
char *v76; // [xsp+20h] [xbp-80h]
unsigned int v77; // [xsp+2Ch] [xbp-74h]
__int64 v78; // [xsp+30h] [xbp-70h]
__int64 v79; // [xsp+38h] [xbp-68h]
int v80; // [xsp+40h] [xbp-60h]
__int16 v81; // [xsp+44h] [xbp-5Ch]
unsigned __int64 v82; // [xsp+48h] [xbp-58h]
int v83; // [xsp+50h] [xbp-50h]
__int64 v84; // [xsp+78h] [xbp-28h]
v1 = a1;
v84 = 5139240511851214385LL;
if ( (unsigned int)sub_1800EBDF4(0LL, "pram", &v79) )
{
v76 = "reg";
if ( (unsigned int)sub_1800EBFC8(v79, &v76, &v75, &v77) )
*(_OWORD *)v75 = *(_OWORD *)sub_1800E086C(7);
}
if ( !sub_1800EBDE4() )
{
sub_1800EF260((__int64)"%llx:%d\n", v2, v3, v4, v5, v6, v7, v8, 6985154693560137621LL);
LABEL_78:
result = 0xFFFFFFFFLL;
goto LABEL_79;
}
if ( (unsigned int)sub_1800EBDF4(0LL, "vram", &v79) )
{
v76 = "reg";
if ( (unsigned int)sub_1800EBFC8(v79, &v76, &v75, &v77) )
*(_OWORD *)v75 = *(_OWORD *)sub_1800E086C(9);
}
v9 = sub_1800EBDF4(0LL, "arm-io", &v79);
if ( (_DWORD)v9 )
{
v10 = v79;
v11 = sub_1800F688C(v9);
v12 = sub_1800EC320(v10, "chip-revision", v11);
v13 = v79;
v14 = sub_1800F6898(v12);
sub_1800EC320(v13, "fuse-revision", v14);
}
if ( (unsigned int)sub_1800EBDF4(0LL, "product", &v79) )
{
v76 = "primary-calibration-matrix";
if ( (unsigned int)sub_1800EBFC8(v79, &v76, &v75, &v77) )
{
sub_1800F661C(1146110828, (_QWORD *)v75, v77);
v15 = v75;
if ( *(_DWORD *)v75 == 0x1000000 )
{
for ( i = 0; i < v77 >> 2; ++i )
*(_DWORD *)(v15 + 4LL * i) = sub_1800EF128(*(_DWORD *)(v15 + 4LL * i));
}
}
v76 = "device-color-policy";
if ( (unsigned int)sub_1800EBFC8(v79, &v76, &v75, &v77) )
v17 = v77 == 4;
else
v17 = 0;
if ( v17 )
*(_DWORD *)v75 = sub_1800F3700();
if ( (unsigned int)sub_1800E0DB0() )
sub_1800EC16C(v79, "boot-ios-diagnostics", 0LL, 0);
}
if ( !(sub_1800EBDF4(0LL, "chosen", &v78) & 1) )
{
sub_1800EF260(
(__int64)"UpdateDeviceTree: failed to find the /chosen node\n",
v18,
v19,
v20,
v21,
v22,
v23,
v24,
v73);
goto LABEL_78;
}
sub_1800F1948(v78, (__int64)"nvram-proxy-data", v19, v20, v21, v22, v23, v24);
v76 = "debug-enabled";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) && sub_1800D4D84(32) )
*(_DWORD *)v75 = 1;
v76 = "development-cert";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) && sub_1800D4D84(0x100000) )
*(_DWORD *)v75 = 1;
v76 = "production-cert";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) && sub_1800D4D84(0x200000) )
*(_DWORD *)v75 = 1;
v76 = "gid-aes-key";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) && sub_1800D4D84(0x40000) )
*(_DWORD *)v75 = 1;
v76 = "uid-aes-key";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) && sub_1800D4D84(0x80000) )
*(_DWORD *)v75 = 1;
v76 = "secure-boot";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) && sub_1800D4D84(0x10000000) )
*(_DWORD *)v75 = 1;
v76 = "certificate-production-status";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) )
*(_DWORD *)v75 = sub_1800F6858();
v76 = "certificate-security-mode";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) )
*(_DWORD *)v75 = sub_1800F6860();
v76 = "effective-production-status-ap";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) )
*(_DWORD *)v75 = sub_1800F6854();
v76 = "effective-security-mode-ap";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) )
*(_DWORD *)v75 = sub_1800F6860();
v76 = "boot-nonce";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) )
{
v82 = sub_1800C6838();
sub_1800F03F0((_QWORD *)v75, &v82, v77);
}
v76 = "dram-vendor";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) )
{
v25 = sub_1800E0704();
if ( v25 )
sub_1800EFE14(v75, (__int64)v25, v77, 0xFFFFFFFFFFFFFFFFLL);
}
v76 = "dram-vendor-id";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) )
*(_DWORD *)v75 = sub_1800C696C();
v76 = "system-trusted";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) && sub_1800D4D84(0x20000000) )
*(_DWORD *)v75 = 1;
v76 = "board-id";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) )
*(_DWORD *)v75 = sub_1800C678C();
v76 = "chip-id";
v26 = sub_1800EBFC8(v78, &v76, &v75, &v77);
if ( (_DWORD)v26 )
{
v27 = sub_1800F6888(v26);
*(_DWORD *)v75 = v27;
}
v76 = "unique-chip-id";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) )
*(_QWORD *)v75 = sub_1800F6890();
v76 = "die-id";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) )
*(_QWORD *)v75 = sub_1800F6894();
v76 = "random-seed";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) )
sub_1800F5684((_QWORD *)v75, v77);
v76 = "firmware-version";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) )
sub_1800EFE14(v75, (__int64)"iBoot-4076.1.43", v77, 0xFFFFFFFFFFFFFFFFLL);
v76 = "boot-manifest-hash";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) )
{
if ( (unsigned int)sub_1800C6A18(&v82) )
{
*v76 = 126;
}
else
{
if ( v77 < 0x30 )
sub_1800D489C("%llx:%d", &byte_180101040, 6985154693560137621LL, 350LL);
sub_1800F03F0((_QWORD *)v75, &v82, 0x30uLL);
}
}
v76 = "mix-n-match-prevention-status";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) )
*(_DWORD *)v75 = sub_1800C6CC8();
v76 = "display-rotation";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) )
*(_DWORD *)v75 = 90 * ((unsigned __int16)*(_DWORD *)(v1 + 80) >> 8);
v76 = "display-scale";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) )
*(_DWORD *)v75 = *(unsigned __int8 *)(v1 + 82) + 1;
v76 = "bootp-response";
v29 = sub_1800EBFC8(v78, &v76, &v75, &v77);
if ( (_DWORD)v29 )
{
MEMORY[0x18011A7A0] = 2;
v74 = 0;
sub_1800ECC0C("ipaddr", &v74);
MEMORY[0x18011A7B0] = v74;
if ( sub_1800ECB70("gateway") )
{
sub_1800ECC0C("gateway", &v74);
MEMORY[0x18011A88C] = 1666417251;
MEMORY[0x18011A890] = 1027;
MEMORY[0x18011A892] = v74;
}
v29 = (signed __int64)sub_1800F03F0((_QWORD *)v75, (_QWORD *)0x18011A7A0LL, 0x12CuLL);
}
v30 = v78;
v31 = sub_1800F685C(v29);
v32 = sub_1800EC320(v30, "security-domain", v31);
v33 = v78;
v34 = sub_1800F6884(v32);
sub_1800EC320(v33, "chip-epoch", v34);
v35 = v78;
v36 = sub_1800F44F0();
sub_1800EC320(v35, "embedded-panic-log-size", v36);
if ( !(sub_1800C49A8((_BYTE *)(v1 + 108), (__int64)"rd=", 1) & 1) )
{
v76 = "root-matching";
if ( (unsigned int)sub_1800EBFC8(v78, &v76, &v75, &v77) )
sub_1800EFC74(
(char *)v75,
v77,
0LL,
0xFFFFFFFFFFFFFFFFLL,
(__int64)"<dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>Partition "
"ID</key><integer>%u</integer></dict></dict>",
v37,
v38,
v39,
1LL);
}
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io/ans/iop-ans-nub", &v79) )
{
v40 = (__int64 *)sub_1800E086C(0);
if ( *v40 )
{
sub_1800EC3C8(v79, "region-base", *v40);
sub_1800EC3C8(v79, "region-size", v40[1]);
}
}
if ( (unsigned int)sub_1800EBDF4(0LL, &byte_180101040, &v79) )
{
v76 = "platform-name";
if ( (unsigned int)sub_1800EBFC8(v79, &v76, &v75, &v77) )
sub_1800EFE14(v75, (__int64)"t8010", v77, 0xFFFFFFFFFFFFFFFFLL);
}
v81 = 0;
v80 = 0;
if ( sub_1800ECB70("ethaddr") )
sub_1800ECD24("ethaddr", (__int64)&v80);
else
sub_1800F661C(1162699107, &v80, 6uLL);
v41 = (unsigned __int8 *)sub_1800ECB70("network-type");
if ( v41 )
v42 = (unsigned __int64)sub_1800F0770(v41, "ethernet") != 0;
else
v42 = 0;
if ( (unsigned int)sub_1800EBDF4(0LL, "ethernet", &v79) )
{
v76 = "local-mac-address";
v43 = sub_1800EBFC8(v79, &v76, &v75, &v77);
if ( v42 )
{
if ( v43 )
{
v76 = "compatible";
if ( (unsigned int)sub_1800EBFC8(v79, &v76, &v75, &v77) )
{
sub_1800EFE14(v75, (__int64)"xxx", v77, 0xFFFFFFFFFFFFFFFFLL);
sub_1800EF260((__int64)"Ethernet disabled\n", v44, v45, v46, v47, v48, v49, v50, v73);
}
}
}
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io/usb-complex/usb-device", &v79) )
{
v76 = "device-mac-address";
if ( (unsigned int)sub_1800EBFC8(v79, &v76, &v75, &v77) )
{
v51 = (_DWORD *)v75;
*(_WORD *)(v75 + 4) = 0;
*v51 = 0;
}
}
}
if ( !(unsigned int)sub_1800EBDF4(0LL, "baseband", &v79) )
goto LABEL_120;
v76 = "battery-id";
if ( !(unsigned int)sub_1800EBFC8(v79, &v76, &v75, &v77) )
goto LABEL_120;
v52 = sub_1800BFDB8(v75, v77);
v53 = (_QWORD *)v75;
v54 = v77;
if ( v52 )
{
sub_1800F661C(1113683060, (_QWORD *)v75, v77);
LABEL_120:
v53 = 0LL;
v54 = 0;
}
if ( (unsigned int)sub_1800EBDF4(0LL, "charger", &v79) )
{
v76 = "battery-id";
if ( (unsigned int)sub_1800EBFC8(v79, &v76, &v75, &v77) )
{
if ( v53 && v77 == v54 )
{
sub_1800F03F0((_QWORD *)v75, v53, v54);
}
else if ( (unsigned int)sub_1800BFDB8(v75, v77) )
{
sub_1800F661C(1113683060, (_QWORD *)v75, v77);
}
}
v76 = "boot-voltage";
if ( (unsigned int)sub_1800EBFC8(v79, &v76, &v75, &v77) )
*(_DWORD *)v75 = sub_1800D8B10();
v76 = "boot-adapter-id";
v55 = sub_1800EBFC8(v79, &v76, &v75, &v77);
if ( (_DWORD)v55 )
v55 = (__int64)sub_1800D8B1C((_DWORD *)v75, v77 >> 2);
v63 = v79;
v64 = sub_1800D8B4C(v55, v56, v57, v58, v59, v60, v61, v62);
sub_1800EC320(v63, "boot-reason", v64);
if ( MEMORY[0x180116060] )
{
sub_1800EC16C(v79, "precharge-time", (_QWORD *)0x180116060LL, 4u);
v82 = MEMORY[0x180116064];
v83 = MEMORY[0x18011606C];
sub_1800EC16C(v79, "precharge-battery-state", &v82, 0xCu);
sub_1800BFF18(&v82, (_DWORD *)&v82 + 1, &v83);
sub_1800EC16C(v79, "boot-battery-state", &v82, 0xCu);
}
v65 = sub_1800F661C(1113683060, &v82, 0x20uLL);
if ( v65 == -1 )
{
v68 = 0;
v66 = 0;
v67 = 0;
}
else
{
v68 = __OFSUB__(v65, 31);
v66 = v65 == 31;
v67 = v65 - 31 < 0;
}
if ( (unsigned __int8)(v67 ^ v68) | v66 )
{
sub_1800F05A0((unsigned __int64 *)((char *)&v82 + v65), 32LL - v65);
sub_1800EC16C(v79, "battery-factory-id", &v82, 0x20u);
}
}
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io/i2c0/tristar", &v79) )
{
v82 = 0LL;
if ( (unsigned int)sub_1800E37A8((__int64)&v82) )
{
v69 = "esn";
v70 = 8;
v71 = &v82;
}
else
{
v69 = "esn-not-provisioned";
v70 = 0;
v71 = 0LL;
}
sub_1800EC16C(v79, v69, v71, v70);
}
result = sub_1800C6084();
if ( !(result & 0x80000000) )
{
result = sub_1800D8184();
if ( !(result & 0x80000000) )
{
result = sub_1800EBDF4(0LL, "chosen/iBoot", &v79);
if ( (_DWORD)result )
{
v72 = sub_1800D5F1C(result);
v76 = "start-time";
if ( (unsigned int)sub_1800EBFC8(v79, &v76, &v75, &v77) )
*(_DWORD *)v75 = MEMORY[0x180115A00];
v76 = "debug-wait-start";
if ( (unsigned int)sub_1800EBFC8(v79, &v76, &v75, &v77) )
*(_DWORD *)v75 = MEMORY[0x180115A08];
v76 = "load-kernel-start";
if ( (unsigned int)sub_1800EBFC8(v79, &v76, &v75, &v77) )
*(_DWORD *)v75 = MEMORY[0x180115A10];
v76 = "populate-registry-time";
result = sub_1800EBFC8(v79, &v76, &v75, &v77);
if ( (_DWORD)result )
{
result = 0LL;
*(_DWORD *)v75 = v72;
}
}
}
}
LABEL_79:
if ( 5139240511851214385LL != v84 )
sub_1800D4A5C();
return result;
}
// 1800D8184: using guessed type __int64 sub_1800D8184(void);
// 1800F6854: using guessed type __int64 sub_1800F6854(void);
// 1800F6858: using guessed type __int64 sub_1800F6858(void);
// 1800F685C: using guessed type __int64 __fastcall sub_1800F685C(_QWORD);
// 1800F6884: using guessed type __int64 __fastcall sub_1800F6884(_QWORD);
// 1800F6888: using guessed type __int64 __fastcall sub_1800F6888(_QWORD);
// 1800F688C: using guessed type __int64 __fastcall sub_1800F688C(_QWORD);
// 1800F6890: using guessed type __int64 sub_1800F6890(void);
// 1800F6894: using guessed type __int64 sub_1800F6894(void);
// 1800F6898: using guessed type __int64 __fastcall sub_1800F6898(_QWORD);
// 180101040: using guessed type char byte_180101040;
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800C3C68) ----------------------------------------------------
signed __int64 __fastcall sub_1800C3C68(_BYTE *a1)
{
signed __int64 result; // x0
signed __int64 v2; // x19
__int64 v3; // [xsp+1F0h] [xbp-20h]
__int64 v4; // [xsp+1F8h] [xbp-18h]
v4 = 5139240511851214385LL;
result = sub_1800EBDF4(0LL, a1, &v3);
if ( (_DWORD)result )
{
result = sub_1800E33D0();
v2 = result;
if ( *(_BYTE *)result )
{
sub_1800EC320(v3, "device-id", *(_DWORD *)(result + 4));
sub_1800EC320(v3, "device-revision", *(unsigned __int8 *)(v2 + 2));
result = sub_1800EC41C(v3, "device-string", *(_QWORD *)(v2 + 8));
}
}
if ( 5139240511851214385LL != v4 )
sub_1800D4A5C();
return result;
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800C49A8) ----------------------------------------------------
signed __int64 __fastcall sub_1800C49A8(_BYTE *a1, __int64 a2, int a3)
{
int v3; // w19
_BYTE *v4; // x20
_BYTE *v5; // x23
unsigned __int64 v6; // x21
int v7; // w8
_BYTE *v8; // x22
int v9; // t1
unsigned __int64 v10; // x24
_BYTE *v11; // x8
v3 = a3;
v4 = (_BYTE *)a2;
v5 = a1;
v6 = sub_1800F08E8(a2);
while ( 1 )
{
v7 = (unsigned __int8)*v5;
if ( !*v5 )
break;
v8 = v5;
while ( (unsigned __int8)v7 == 32 )
{
v9 = (unsigned __int8)(v8++)[1];
v7 = v9;
}
if ( !(_BYTE)v7 )
break;
v10 = 0LL;
while ( ((v7 | 0x20) & 0xFF) != 32 )
{
v11 = &v8[v10++];
v7 = (unsigned __int8)v11[1];
}
v5 = &v8[v10];
if ( v10 >= v6 && (v3 && !(unsigned int)sub_1800F0900(v8, v4, v6) || !(unsigned int)sub_1800F0900(v8, v4, v10)) )
return 1LL;
}
return 0LL;
}
//----- (00000001800C4A74) ----------------------------------------------------
__int64 __fastcall sub_1800C4A74(_QWORD *a1)
{
_QWORD *v1; // x19
__int64 result; // x0
__int128 v3; // [xsp+0h] [xbp-30h]
__int64 v4; // [xsp+10h] [xbp-20h]
__int64 v5; // [xsp+18h] [xbp-18h]
v1 = a1;
v5 = 5139240511851214385LL;
v4 = 0LL;
v3 = 0uLL;
result = sub_1800F2980((__int64)&v3);
v1[7] = (unsigned int)v4;
v1[8] = DWORD2(v3);
v1[9] = HIDWORD(v3);
v1[10] = HIDWORD(v4);
v1[5] = v3;
v1[6] = 1LL;
if ( 5139240511851214385LL != v5 )
sub_1800D4A5C();
return result;
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800C4B00) ----------------------------------------------------
unsigned __int64 __fastcall sub_1800C4B00(unsigned __int64 a1)
{
unsigned __int64 v1; // x8
unsigned __int64 result; // x0
signed __int64 v3; // x8
signed __int64 v4; // x8
v1 = a1;
if ( a1 >= 0xFFFFFFFFFFFFC001LL )
{
v4 = 987LL;
goto LABEL_6;
}
result = qword_1801158C8[2561];
v3 = v1 + 0x3FFF;
if ( result > ((v3 | 0x3FFF) ^ 0xFFFFFFFFFFFFC000LL) )
{
v4 = 988LL;
LABEL_6:
sub_1800D489C("%llx:%d", &byte_180101040, 1512575474412282641LL, v4);
}
qword_1801158C8[2561] = result + (v3 & 0xFFFFFFFFFFFFC000LL);
return result;
}
// 180101040: using guessed type char byte_180101040;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800C4B88) ----------------------------------------------------
signed __int64 __fastcall sub_1800C4B88(__int64 a1, _BYTE *a2, _QWORD *a3, _QWORD *a4)
{
_QWORD *v4; // x19
_QWORD *v5; // x20
_BYTE *v6; // x21
__int64 v7; // x22
unsigned int v8; // w24
signed __int64 v9; // x23
v4 = a4;
v5 = a3;
v6 = a2;
v7 = a1;
v8 = 0;
v9 = a1 + 32;
while ( 1 )
{
if ( v8 >= *(_DWORD *)(v7 + 16) )
return 0LL;
if ( *(_DWORD *)v9 == 25 && !(unsigned int)sub_1800F0770((unsigned __int8 *)(v9 + 8), v6) )
break;
v9 += *(unsigned int *)(v9 + 4);
++v8;
}
*v5 = *(_QWORD *)(v9 + 24);
*v4 = *(_QWORD *)(v9 + 32);
return 1LL;
}
//----- (00000001800C4C1C) ----------------------------------------------------
__int64 __fastcall sub_1800C4C1C(unsigned int a1)
{
__int64 result; // x0
unsigned int v2; // [xsp+4h] [xbp-Ch]
__int64 v3; // [xsp+8h] [xbp-8h]
v3 = 5139240511851214385LL;
sub_1800F0E34(a1, 0x10000, &v2);
result = v2;
if ( 5139240511851214385LL != v3 )
sub_1800D4A5C();
return result;
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800C4C70) ----------------------------------------------------
__int64 __fastcall sub_1800C4C70(__int64 a1)
{
__int64 v1; // x29
__int64 v2; // x30
if ( !MEMORY[0x18011A8E0] )
sub_1800D489C("%llx:%d", &byte_180101040, 1512575474412282641LL, 1002LL, v1, v2);
return a1 - MEMORY[0x18011A8E0] + MEMORY[0x18011A8E8];
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C4CC8) ----------------------------------------------------
signed __int64 __fastcall sub_1800C4CC8(_BYTE *a1, __int64 a2, __int64 a3)
{
__int64 v3; // x20
__int64 v4; // x21
_BYTE *v5; // x19
signed __int64 result; // x0
__int64 v7; // [xsp+0h] [xbp-40h]
__int64 v8; // [xsp+8h] [xbp-38h]
__int64 v9; // [xsp+10h] [xbp-30h]
__int64 v10; // [xsp+18h] [xbp-28h]
v3 = a3;
v4 = a2;
v5 = a1;
v10 = 5139240511851214385LL;
result = sub_1800EBDF4(0LL, "chosen/memory-map", &v9);
if ( (_DWORD)result )
{
v7 = v4;
v8 = v3;
result = sub_1800EC16C(v9, v5, &v7, 0x10u);
}
if ( 5139240511851214385LL != v10 )
sub_1800D4A5C();
return result;
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800C4D58) ----------------------------------------------------
bool __fastcall sub_1800C4D58(_DWORD *a1)
{
return *a1 == -17958193;
}
//----- (00000001800C4D70) ----------------------------------------------------
signed __int64 __fastcall sub_1800C4D70(__int64 a1, __int64 a2, __int64 a3, _QWORD *a4, unsigned __int64 *a5, _QWORD *a6, _QWORD *a7, __int64 a8)
{
__int64 v8; // x20
__int64 v9; // x19
__int64 v10; // x27
unsigned __int64 v11; // x25
_DWORD *v12; // x26
int v13; // w21
signed __int64 v14; // x23
unsigned __int64 v15; // x22
__int64 v16; // x9
BOOL v17; // w9
signed __int64 v18; // x24
bool v19; // zf
unsigned int v20; // w21
unsigned __int64 v21; // x8
unsigned __int64 *v22; // x22
__int64 v23; // x26
signed __int64 v24; // x27
__int64 v25; // x24
__int64 v26; // ST10_8
__int64 v27; // x10
char *v28; // x0
char *v29; // x8
bool v30; // cf
__int64 v31; // x22
unsigned int v32; // w9
unsigned int v33; // w8
__int64 v34; // x10
__int64 v35; // x10
signed __int64 v36; // x8
signed int *v37; // x9
unsigned __int64 v38; // x10
__int64 v39; // t1
__int64 j; // x8
unsigned __int64 v41; // x9
_QWORD *k; // x10
int v43; // w8
unsigned __int64 v44; // x8
unsigned __int64 v45; // x28
char *v46; // x27
unsigned __int64 v47; // x8
unsigned __int64 v48; // x22
unsigned __int64 v49; // x24
char *v50; // x8
bool v51; // cf
__int64 v52; // x23
_DWORD *i; // x0
__int64 v54; // x8
signed __int64 v55; // x24
signed __int64 v57; // x8
unsigned __int64 v58; // [xsp+20h] [xbp-80h]
_QWORD *v59; // [xsp+28h] [xbp-78h]
__int64 v60; // [xsp+30h] [xbp-70h]
unsigned __int64 *v61; // [xsp+38h] [xbp-68h]
_QWORD *v62; // [xsp+40h] [xbp-60h]
_QWORD *v63; // [xsp+48h] [xbp-58h]
v9 = a8;
v62 = a7;
v63 = a6;
v60 = a3;
v61 = a5;
v59 = a4;
v10 = a2;
v11 = a1;
MEMORY[0x18011AA58] = 0LL;
MEMORY[0x18011AA50] = 0;
v12 = sub_1800C5284(a1);
v13 = 0;
v14 = -1LL;
v15 = -1LL;
while ( v12 )
{
if ( (unsigned int)sub_1800F0770((unsigned __int8 *)v12 + 8, "__PAGEZERO") )
{
if ( *((_QWORD *)v12 + 3) < v15 )
v15 = *((_QWORD *)v12 + 3);
if ( !*((_QWORD *)v12 + 5) )
{
v16 = *((_QWORD *)v12 + 6);
v19 = v16 == 0;
v17 = v16 != 0;
if ( !v19 )
v8 = *((_QWORD *)v12 + 3);
v13 |= v17;
}
if ( v14 == -1 )
v14 = *((_QWORD *)v12 + 3);
}
v12 = sub_1800C52C0(v11, (signed __int64)v12);
}
v18 = 0LL;
if ( v14 == -1 )
v19 = 1;
else
v19 = v15 == -1LL;
if ( !v19 && !((v13 ^ 1) & 1) )
{
v20 = 0;
v21 = v15 & 0xFFFFFFFFFE000000LL;
v22 = v61;
*v61 = v21;
*v63 = 0LL;
v23 = v11 + 32;
v58 = v10 + v11;
v24 = 0x18011A000uLL;
v25 = v60;
while ( 1 )
{
if ( v20 >= *(_DWORD *)(v11 + 16) )
{
*v59 = v8 - *v22;
if ( v9 )
{
v52 = v8 + v25 - *v22;
for ( i = sub_1800C5284(v52); ; i = sub_1800C52C0(v52, v55) )
{
v55 = (signed __int64)i;
if ( !i )
break;
*((_QWORD *)i + 3) += v9;
if ( i[16] )
v54 = (__int64)(i + 18);
else
v54 = 0LL;
while ( v54 )
{
*(_QWORD *)(v54 + 32) += v9;
v54 = sub_1800C532C(v55, v54);
}
}
*v62 += v9;
*v22 += v9;
*v63 += v9;
}
v18 = 1LL;
sub_1800D9E6C(1, 0LL, 0LL);
return v18;
}
v43 = *(_DWORD *)v23;
if ( *(_DWORD *)v23 == 2 )
{
if ( v9 )
{
v32 = *(_DWORD *)(v23 + 12);
if ( v32 )
{
v33 = 0;
v34 = *(unsigned int *)(v23 + 8) + MEMORY[0x18011AA58] - MEMORY[0x18011AA50];
while ( v33 < v32 )
{
if ( *(unsigned __int8 *)(v34 + 16LL * v33 + 4) <= 0x1Fu )
{
*(_QWORD *)(v34 + 16LL * v33 + 8) += v9;
v32 = *(_DWORD *)(v23 + 12);
}
++v33;
}
}
}
}
else
{
switch ( v43 )
{
case 5:
*v62 = *(_QWORD *)(v23 + 272);
break;
case 11:
if ( v9 )
{
v35 = *(unsigned int *)(v23 + 76);
if ( (_DWORD)v35 )
{
v36 = v14 - *v22 + v25;
if ( !v36 || !MEMORY[0x18011AA58] )
return 0LL;
v37 = (signed int *)(*(unsigned int *)(v23 + 72) + MEMORY[0x18011AA58] - *(unsigned int *)(v24 + 2640));
v38 = (unsigned __int64)&v37[2 * v35];
while ( (unsigned __int64)v37 < v38 )
{
if ( *((_BYTE *)v37 + 7) != 6 )
return 0LL;
v39 = *v37;
v37 += 2;
*(_QWORD *)(v39 + v36) += v9;
}
}
}
break;
case 25:
v44 = *(_QWORD *)(v23 + 24);
if ( v44 < *v22 || *(_QWORD *)(v23 + 32) + v44 < *v22 )
return 0LL;
if ( (unsigned int)sub_1800F0770((unsigned __int8 *)(v23 + 8), "__PAGEZERO") )
{
v27 = *(_QWORD *)(v23 + 24);
v45 = *(_QWORD *)(v23 + 32);
v46 = (char *)(v27 - *v22 + v25);
v47 = *(_QWORD *)(v23 + 48);
if ( v45 >= v47 )
v48 = *(_QWORD *)(v23 + 48);
else
v48 = *(_QWORD *)(v23 + 32);
if ( v45 >= v45 - v47 )
v49 = v45 - v47;
else
v49 = *(_QWORD *)(v23 + 32);
if ( v48 )
{
v50 = &v46[v48];
if ( &v46[v48] <= v46 )
{
v57 = 298LL;
goto LABEL_99;
}
if ( (unsigned __int64)v50 > v11 )
v51 = (unsigned __int64)v50 >= v58;
else
v51 = 1;
if ( !v51 )
{
v57 = 302LL;
goto LABEL_99;
}
v26 = *(_QWORD *)(v23 + 24);
sub_1800F03F0(v46, (_QWORD *)(*(_QWORD *)(v23 + 40) + v11), v48);
v27 = v26;
}
if ( v49 )
{
v28 = &v46[v48];
v29 = &v46[v48 + v49];
if ( v29 <= v46 )
{
v57 = 315LL;
LABEL_99:
sub_1800D489C("%llx:%d", &byte_180101040, -6497606320753742288LL, v57);
}
if ( (unsigned __int64)v29 > v11 )
v30 = (unsigned __int64)v29 >= v58;
else
v30 = 1;
if ( !v30 )
{
v57 = 319LL;
goto LABEL_99;
}
v31 = v27;
sub_1800F05A0(v28, v49);
v27 = v31;
}
if ( v45 + v27 > *v63 )
*v63 = v45 + v27;
v22 = v61;
if ( !v9 || MEMORY[0x18011AA58] || (unsigned int)sub_1800F0770((unsigned __int8 *)(v23 + 8), "__LINKEDIT") )
{
v25 = v60;
v24 = 6443606016LL;
if ( !v23 )
{
LABEL_56:
j = 0LL;
goto LABEL_62;
}
}
else
{
MEMORY[0x18011AA58] = v46;
MEMORY[0x18011AA50] = *(_QWORD *)(v23 + 40);
v25 = v60;
v24 = 0x18011A000uLL;
}
if ( !*(_DWORD *)(v23 + 64) )
goto LABEL_56;
LABEL_62:
for ( j = v23 + 72; j; j = sub_1800C532C(v23, j) )
{
if ( *(_BYTE *)(j + 64) == 6 )
{
v41 = *(_QWORD *)(j + 32) - *v61 + v25;
for ( k = (_QWORD *)(*(_QWORD *)(j + 32) - *v61 + v25);
(unsigned __int64)k < *(_QWORD *)(j + 40) + v41;
++k )
{
*k += v9;
}
}
}
break;
}
break;
}
}
v23 += *(unsigned int *)(v23 + 4);
++v20;
}
}
return v18;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C5284) ----------------------------------------------------
_DWORD *__fastcall sub_1800C5284(__int64 a1)
{
__int64 v1; // x8
unsigned int v2; // w9
_DWORD *result; // x0
unsigned int v4; // w8
v1 = a1;
v2 = 0;
result = (_DWORD *)(a1 + 32);
v4 = *(_DWORD *)(v1 + 16);
while ( v2 < v4 )
{
if ( *result == 25 )
return result;
result = (_DWORD *)((char *)result + (unsigned int)result[1]);
++v2;
}
return 0LL;
}
//----- (00000001800C52C0) ----------------------------------------------------
_DWORD *__fastcall sub_1800C52C0(__int64 a1, signed __int64 a2)
{
signed __int64 v2; // x10
unsigned int v3; // w8
unsigned int v4; // w9
_DWORD *result; // x0
v2 = a1 + 32;
v3 = *(_DWORD *)(a1 + 16);
v4 = 1;
while ( v2 != a2 )
{
if ( v4 - 1 >= v3 )
{
a2 = v2;
break;
}
v2 += *(unsigned int *)(v2 + 4);
++v4;
}
result = (_DWORD *)(*(unsigned int *)(a2 + 4) + v2);
while ( v4 < v3 )
{
if ( *result == 25 )
return result;
result = (_DWORD *)((char *)result + (unsigned int)result[1]);
++v4;
}
return 0LL;
}
//----- (00000001800C532C) ----------------------------------------------------
signed __int64 __fastcall sub_1800C532C(__int64 a1, __int64 a2)
{
unsigned int v2; // w8
__int64 v3; // x9
bool v4; // zf
signed __int64 result; // x0
if ( a1 )
{
v2 = *(_DWORD *)(a1 + 64);
v3 = a1 + 72;
v4 = v2 == 0;
if ( !v2 )
v2 = 0;
if ( v4 )
v3 = 0LL;
}
else
{
v3 = 0LL;
v2 = MEMORY[0x40];
}
if ( (a2 - v3) / 80 + 1 >= (unsigned __int64)v2 )
result = 0LL;
else
result = a2 + 80;
return result;
}
//----- (00000001800C5374) ----------------------------------------------------
__int64 __fastcall sub_1800C5374(__int64 result, __int64 a2)
{
_WriteStatusReg(ARM64_SYSREG(3, 0, 15, 5, 0), _ReadStatusReg(ARM64_SYSREG(3, 0, 15, 5, 0)) & 0xFFFFCFFFFFFFFFFFLL);
__isb(0xFu);
_WriteStatusReg(
ARM64_SYSREG(3, 0, 15, 5, 0),
_ReadStatusReg(ARM64_SYSREG(3, 0, 15, 5, 0)) & 0xFFFFFFFFFFFF3FFFLL | 0x8000);
_WriteStatusReg(ARM64_SYSREG(3, 0, 15, 5, 0), _ReadStatusReg(ARM64_SYSREG(3, 0, 15, 5, 0)) | 0x200000000000000LL);
_WriteStatusReg(ARM64_SYSREG(3, 0, 15, 11, 0), _ReadStatusReg(ARM64_SYSREG(3, 0, 15, 11, 0)) | 0x800000);
_WriteStatusReg(ARM64_SYSREG(3, 0, 15, 1, 0), _ReadStatusReg(ARM64_SYSREG(3, 0, 15, 1, 0)) | 0x100000000000LL);
if ( a2 != result )
{
_WriteStatusReg(ARM64_SYSREG(3, 3, 15, 7, 0), _ReadStatusReg(ARM64_SYSREG(3, 3, 15, 7, 0)) | 2);
while ( !(_ReadStatusReg(ARM64_SYSREG(3, 3, 15, 7, 0)) & 0x8000000000000000LL) )
;
}
return result;
}
//----- (00000001800C53DC) ----------------------------------------------------
__int64 sub_1800C53DC()
{
__int64 v0; // x0
__int64 v1; // x0
__int64 v2; // x0
__int64 v3; // x1
__int64 v4; // x2
__int64 v5; // x3
__int64 v6; // x4
__int64 v7; // x5
__int64 v8; // x6
__int64 v9; // x7
signed __int64 v11; // x8
if ( !(unsigned int)sub_1800C85FC() || !(MEMORY[0x2102D0010] & 1) )
{
v11 = 125LL;
goto LABEL_12;
}
v0 = sub_1800C84F0();
if ( (_DWORD)v0 )
{
v0 = sub_1800C8678();
if ( !(v0 & 1) )
{
v11 = 130LL;
LABEL_12:
sub_1800D489C("%llx:%d", &byte_180101040, -2937835284574947571LL, v11);
}
}
MEMORY[0x2102D0014] = 2147483648;
sub_1800D9F80(v0);
if ( MEMORY[0x2102D0014] != 2147483648 )
{
v11 = 137LL;
goto LABEL_12;
}
sub_1800B5F70();
sub_1800D3B48();
sub_1800D21C0();
v1 = sub_1800D2CC0();
((void (__fastcall *)(__int64))loc_1800B5534)(v1);
sub_1800E10FC();
sub_1800B5CEC();
sub_1800E4BB4((__int64)qword_180104FA0);
v2 = sub_1800D47DC(3LL);
if ( (unsigned int)sub_1800F688C(v2) <= 0x10 )
sub_1800E0628((__int64)"(called by %s at %s:%d)\n", v3, v4, v5, v6, v7, v8, v9);
sub_1800E20F0(5LL, 31, (__int64)qword_180114600);
sub_1800C5534();
sub_1800B1DF4();
sub_1800B1EDC(16);
sub_1800BC278(1u, (_BYTE *)0x18011AA60LL);
sub_1800D47DC(MEMORY[0x18011AA60]);
sub_1800D623C();
return 0LL;
}
// 1800D9F80: using guessed type __int64 __fastcall sub_1800D9F80(_QWORD);
// 1800F688C: using guessed type __int64 __fastcall sub_1800F688C(_QWORD);
// 180101040: using guessed type char byte_180101040;
// 180104FA0: using guessed type __int64 qword_180104FA0[16];
// 180114600: using guessed type __int64 qword_180114600[19];
//----- (00000001800C5534) ----------------------------------------------------
__int64 sub_1800C5534()
{
sub_1800D83EC();
sub_1800D8410();
return 0LL;
}
//----- (00000001800C5550) ----------------------------------------------------
__int64 __fastcall sub_1800C5550(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
int v8; // w0
signed __int64 v9; // x0
sub_1800ED05C("secure-boot", 1LL, 0, a4, a5, a6, a7, a8);
v8 = sub_1800ECBB8("debug-soc", 0LL);
sub_1800D39CC(7LL, v8);
sub_1800D7624();
sub_1800D88B8();
sub_1800D63A4();
v9 = sub_1800BB34C();
nullsub_6(v9);
return 0LL;
}
// 1800B5FBC: using guessed type __int64 __fastcall nullsub_6(_QWORD);
//----- (00000001800C55A8) ----------------------------------------------------
__int64 sub_1800C55A8()
{
sub_1800D2DF4();
return 0LL;
}
//----- (00000001800C55C4) ----------------------------------------------------
void sub_1800C55C4()
{
MEMORY[0x20E0B8000] |= 0x20u;
}
//----- (00000001800C55E0) ----------------------------------------------------
__int64 sub_1800C55E0()
{
return (MEMORY[0x20E0B8000] >> 5) & 1;
}
//----- (00000001800C55F8) ----------------------------------------------------
signed __int64 sub_1800C55F8()
{
signed __int64 result; // x0
if ( MEMORY[0x20E0B8000] & 0x80 )
return 1LL;
result = 0LL;
MEMORY[0x20E0B8000] |= 0x80u;
return result;
}
//----- (00000001800C5624) ----------------------------------------------------
__int64 sub_1800C5624()
{
__int64 result; // x0
result = MEMORY[0x2102B8020] & 1;
MEMORY[0x2102B8020] &= 0xFFFFFFFE;
return result;
}
//----- (00000001800C5648) ----------------------------------------------------
__int64 sub_1800C5648()
{
int v0; // ST1C_4
int v1; // w19
int v2; // w19
int v3; // ST18_4
int v5; // [xsp+20h] [xbp-20h]
if ( !(MEMORY[0x20E0B8000] & 1) )
{
sub_1800B7F70(5127LL, 0);
sub_1800B7F70(6404LL, 0);
sub_1800B7F70(6407LL, 0);
sub_1800B8090(5127LL, -1);
sub_1800B8090(6404LL, -1);
sub_1800B8090(6407LL, -1);
sub_1800D2CBC(100LL);
v5 = sub_1800C856C();
if ( !(sub_1800B81DC() & 1) )
sub_1800D489C("%llx:%d", &byte_180101040, -2937835284574947571LL, 1851LL);
v0 = MEMORY[0x2102D0020] & 0x1F;
v1 = sub_1800B7D30(6407LL);
v2 = 2 * (unsigned __int64)sub_1800B7D30(6404LL) | 4 * v1;
v3 = v2 | (unsigned __int64)sub_1800B7D30(5127LL);
sub_1800B7F70(5127LL, 4);
sub_1800B7F70(6404LL, 4);
sub_1800B7F70(6407LL, 4);
MEMORY[0x20E0B8000] = MEMORY[0x20E0B8000] & 0xFF000000 | (((v0 | 32 * v5) << 16) | (v3 << 8) | 1) & 0xFFFFFF;
}
sub_1800B813C();
return 0LL;
}
// 1800D2CBC: using guessed type __int64 __fastcall sub_1800D2CBC(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C57D4) ----------------------------------------------------
__int64 sub_1800C57D4()
{
sub_1800D21B8();
return 0LL;
}
//----- (00000001800C57EC) ----------------------------------------------------
void __fastcall sub_1800C57EC(__int64 a1, void *a2, void *a3, void *a4, void *a5, void *a6, void *a7)
{
signed __int64 v7; // x0
if ( !(a1 & 1) )
a1 = sub_1800D21D8(0);
v7 = linux_eabi_syscall(-2937835284574947571LL, (void *)a1, a2, a3, a4, a5, a6, a7);
if ( !MEMORY[0x1801280CC] )
{
MEMORY[0x1801280CC] = 1;
MEMORY[0x180116018] = 1;
if ( !LOBYTE(qword_1801158C8[9472]) )
{
LOBYTE(qword_1801158C8[9472]) = 1;
sub_1800C58E4();
sub_1800B162C();
sub_1800B165C();
sub_1800B162C();
sub_1800B162C();
sub_1800DA754();
sub_1800D528C();
}
}
sub_1800D489C("%llx:%d", &byte_180101040, -2937835284574947571LL, 337LL);
}
// 180101040: using guessed type char byte_180101040;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800C58E4) ----------------------------------------------------
unsigned __int64 sub_1800C58E4()
{
__int64 v0; // x29
__int64 v1; // x30
if ( !(MEMORY[0x20E0B8000] & 4) || !((MEMORY[0x20E0B8024] << 10 >> 21) & 0x1F) )
sub_1800D489C("%llx:%d", &byte_180101040, -2937835284574947571LL, 1464LL, v0, v1);
return (unsigned __int64)((MEMORY[0x20E0B8024] << 10) & 0x3FFFC00) << 10;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C5950) ----------------------------------------------------
__int64 __fastcall sub_1800C5950(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
unsigned int v8; // w0
if ( !(MEMORY[0x18011AA69] & 1)
&& ((sub_1800E314C(a1, a2, a3, a4, a5, a6, a7, a8), qword_1801158C8[2612] & 1)
|| (sub_1800C59D0(), sub_1800D39CC(75LL, 1), (unsigned int)sub_1800E17B8())) )
{
v8 = 0;
LOBYTE(qword_1801158C8[2612]) = 1;
}
else
{
MEMORY[0x18011AA69] = 1;
v8 = (unsigned __int64)sub_1800ECB8C("backlight-level", (void *)0xFFFFFFFFLL);
}
sub_1800D99E0(v8);
return 0LL;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800C59D0) ----------------------------------------------------
__int64 sub_1800C59D0()
{
sub_1800D99E0(0);
sub_1800D39CC(75LL, 1);
if ( (unsigned int)sub_1800E1F34(1) == 6 )
sub_1800D39CC(75LL, 0);
MEMORY[0x18011AA69] = 0;
return 0LL;
}
//----- (00000001800C5A20) ----------------------------------------------------
signed __int64 sub_1800C5A20()
{
__int64 v0; // x22
__int64 v1; // x3
__int64 v2; // x4
__int64 v3; // x5
__int64 v4; // x6
__int64 v5; // x7
signed __int64 v6; // x0
__int64 v7; // x21
signed __int64 v8; // x0
signed __int64 v9; // x22
__int64 v10; // x0
signed __int64 result; // x0
__int64 v12; // [xsp+10h] [xbp-30h]
__int64 v13; // [xsp+18h] [xbp-28h]
sub_1800E3A20();
v10 = sub_1800D9FD0();
sub_1800C7864(v10);
result = sub_1800C787C(0LL);
if ( (_DWORD)result )
{
v0 = sub_1800B5BA8(0);
v13 = 5139240511851214385LL;
sub_1800EF260((__int64)"%llx:%d\n", v0, 0LL, v1, v2, v3, v4, v5, 8415054965657969967LL);
v6 = sub_1800BCD80(0);
v7 = v6;
*(_DWORD *)(v6 + 180) = 0;
sub_1800F0E34(0x300u, 458752, &v12);
MEMORY[0x18011A718] = v12;
v8 = sub_1800BCDD4((_QWORD *)v7, v0);
v9 = v8;
if ( (_DWORD)v8
|| (*(_DWORD *)(v7 + 220) = 0,
*(_BYTE *)(v7 + 176) = 1,
sub_1800BCF38(v7, 0, 0),
v9 = sub_1800BD078(v7, 1),
(_DWORD)v9) )
{
sub_1800BD9B0(0);
}
else
{
sub_1800BEAB0(0LL);
}
if ( 5139240511851214385LL != v13 )
sub_1800D4A5C();
result = v9;
}
return result;
}
// 1800E3A20: using guessed type __int64 sub_1800E3A20(void);
//----- (00000001800C5A64) ----------------------------------------------------
signed __int64 sub_1800C5A64()
{
signed __int64 v0; // x21
__int64 v1; // x1
__int64 v2; // x2
__int64 v3; // x3
__int64 v4; // x4
__int64 v5; // x5
__int64 v6; // x6
__int64 v7; // x7
__int64 v8; // x1
__int64 v9; // x2
__int64 v10; // x3
__int64 v11; // x4
__int64 v12; // x5
__int64 v13; // x6
__int64 v14; // x7
signed __int64 result; // x0
__int64 v16; // x0
__int64 v17; // x19
v16 = sub_1800BCD80(0);
v17 = v16;
if ( !*(_BYTE *)(v16 + 178) )
return 4294959296LL;
result = sub_1800BDE28(v16);
if ( !(_DWORD)result )
{
if ( *(_BYTE *)(v17 + 179) == 3 )
{
v0 = 0LL;
}
else
{
v0 = sub_1800BDAB8(v17);
if ( !(_DWORD)v0 )
{
sub_1800EF260((__int64)"%llx:%d\n", v1, v2, v3, v4, v5, v6, v7, 8415054965657969967LL);
v0 = sub_1800BD078(v17, 3);
if ( !(_DWORD)v0 )
{
sub_1800EF260((__int64)"%llx:%d\n", v8, v9, v10, v11, v12, v13, v14, 8415054965657969967LL);
v0 = 0LL;
}
}
sub_1800BE038(v17, v0);
}
result = v0;
}
return result;
}
// 1800C5A64: could not find valid save-restore pair for x19
// 1800C5A64: could not find valid save-restore pair for x20
//----- (00000001800C5A6C) ----------------------------------------------------
signed __int64 sub_1800C5A6C()
{
__int64 v0; // x0
signed __int64 result; // x0
v0 = sub_1800BCD80(0);
if ( !*(_BYTE *)(v0 + 178) )
return 4294959296LL;
result = sub_1800BDE28(v0);
if ( !(_DWORD)result )
JUMPOUT(&loc_1800BE748);
return result;
}
//----- (00000001800C5A74) ----------------------------------------------------
__int64 __fastcall sub_1800C5A74(int a1)
{
int v1; // w19
int v2; // w0
unsigned __int64 v3; // x0
__int64 result; // x0
unsigned __int64 v5; // x0
__int64 v6; // x1
__int64 v7; // x2
__int64 v8; // x3
__int64 v9; // x4
__int64 v10; // x5
__int64 v11; // x6
__int64 v12; // x7
v1 = a1;
nullsub_13();
sub_1800D7790();
sub_1800BDD34();
sub_1800B5A04();
switch ( v1 )
{
case 1:
goto LABEL_5;
case 2:
case 3:
v2 = 47;
goto LABEL_4;
case 4:
case 6:
sub_1800D489C("%llx:%d", &byte_180101040, -2937835284574947571LL, 472LL);
return result;
case 5:
sub_1800B1EDC(47);
v5 = sub_1800E1118();
((void (__fastcall *)(unsigned __int64))loc_1800B55B0)(v5);
sub_1800D47F0(3, v6, v7, v8, v9, v10, v11, v12);
sub_1800D3684();
break;
default:
v2 = 0;
LABEL_4:
sub_1800B1EDC(v2);
LABEL_5:
v3 = sub_1800E1118();
((void (__fastcall *)(unsigned __int64))loc_1800B55B0)(v3);
break;
}
return 0LL;
}
// 1800D6568: using guessed type __int64 nullsub_13(void);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C5B48) ----------------------------------------------------
__int64 __fastcall sub_1800C5B48(int a1)
{
int v1; // w19
char v2; // w8
__int64 v3; // x20
__int64 v4; // x21
char v5; // w22
char v6; // w23
signed __int64 v7; // x0
_QWORD *v8; // x24
__int64 v9; // x0
signed int v10; // w21
unsigned int v11; // w22
BOOL v12; // w20
BOOL v13; // w0
__int64 v14; // x8
int v15; // w1
signed __int64 v17; // x8
v1 = a1;
if ( a1 != 2 )
sub_1800D368C(0);
sub_1800D6570();
if ( v1 != 3 || (v2 = qword_1801158C8[2611], !(qword_1801158C8[2611] & 0x80)) )
{
switch ( v1 )
{
case 0:
sub_1800D4FC8(0);
goto LABEL_17;
case 2:
LABEL_17:
sub_1800C59D0();
goto LABEL_19;
case 3:
goto LABEL_6;
case 4:
v17 = 565LL;
break;
case 5:
sub_1800D4FC8(0);
sub_1800BAC60(5);
sub_1800C70F0(5LL);
sub_1800F68EC(5LL);
sub_1800C59D0();
sub_1800B1F18();
LABEL_19:
v11 = 0;
v10 = 0;
goto LABEL_20;
default:
v17 = 615LL;
break;
}
LABEL_38:
sub_1800D489C("%llx:%d", &byte_180101040, -2937835284574947571LL, v17);
}
LOBYTE(qword_1801158C8[2611]) = v2 & 0x7F;
sub_1800BC320(1u, v2 & 0x7F);
LABEL_6:
v3 = sub_1800D5104();
v4 = sub_1800D5158();
v5 = sub_1800B060C();
v6 = sub_1800B060C();
if ( sub_1800D9FD0() )
sub_1800B7E1C(5125LL, 1);
if ( (unsigned int)sub_1800F36F0() )
{
v17 = 1910LL;
goto LABEL_38;
}
v7 = sub_1800E086C(2);
v8 = (_QWORD *)v7;
sub_1800D9E6C(3, *(_QWORD *)v7, *(_QWORD *)(v7 + 8));
MEMORY[0x200000480] = *v8 >> 12;
MEMORY[0x200000484] = (unsigned __int64)(*v8 + v8[1] + 0xFFFFFFFFFFFLL) >> 12;
MEMORY[0x200000490] = 1;
sub_1800D9F80(v9);
if ( !(MEMORY[0x200000490] & 1) )
{
v17 = 1930LL;
goto LABEL_38;
}
if ( v3 )
{
MEMORY[0x2000007E4] = (unsigned __int64)(v3 - 0x800000000LL) >> v5;
MEMORY[0x2000007E8] = (unsigned __int64)(v4 - 34359738369LL) >> v6;
}
sub_1800B5E64(MEMORY[0x180115FF8] & 0xFFFFFFFFFFFFF000LL);
sub_1800D4FC8(0);
sub_1800BAC60(3);
sub_1800C70F0(3LL);
sub_1800F68EC(3LL);
if ( SLOBYTE(qword_1801158C8[2611]) & 0x80000000 )
sub_1800B5800();
v10 = -2;
v11 = -3;
LABEL_20:
if ( (unsigned int)sub_1800D4F30() )
sub_1800C8614(1LL);
v12 = sub_1800D4D84(0x40000);
v13 = sub_1800D4D84(0x80000);
if ( v12 )
v14 = v11;
else
v14 = 1LL;
if ( v13 )
v15 = v10;
else
v15 = 1;
sub_1800C5E08(v14, v15);
if ( !(MEMORY[0x2102D4020] & 0x10000) )
{
v17 = 635LL;
goto LABEL_38;
}
if ( v1 != 2 && !(MEMORY[0x2102D4044] & 0x10000) )
{
v17 = 642LL;
goto LABEL_38;
}
sub_1800B5FA0();
return 0LL;
}
// 1800D9F80: using guessed type __int64 __fastcall sub_1800D9F80(_QWORD);
// 1800F68EC: using guessed type __int64 __fastcall sub_1800F68EC(_QWORD);
// 180101040: using guessed type char byte_180101040;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800C5E08) ----------------------------------------------------
__int64 __fastcall sub_1800C5E08(__int64 result, int a2)
{
int v2; // w19
if ( a2 | (unsigned int)result )
{
v2 = a2 & 1 | 2 * (result & 3);
MEMORY[0x2102D0000] = a2 & 1 | 2 * (result & 3);
result = sub_1800D9F80(result);
if ( v2 & ~MEMORY[0x2102D0000] )
sub_1800D489C("%llx:%d", &byte_180101040, -2937835284574947571LL, 1427LL);
}
return result;
}
// 1800D9F80: using guessed type __int64 __fastcall sub_1800D9F80(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C5E80) ----------------------------------------------------
__int64 sub_1800C5E80()
{
return (unsigned __int16)(MEMORY[0x2102D4020] >> 16);
}
//----- (00000001800C5E98) ----------------------------------------------------
__int64 sub_1800C5E98()
{
return (unsigned __int16)(MEMORY[0x2102D4044] >> 16);
}
//----- (00000001800C5EB0) ----------------------------------------------------
void __fastcall sub_1800C5EB0(int a1)
{
if ( a1 )
sub_1800D489C("%llx:%d", &byte_180101040, -2937835284574947571LL, 664LL);
sub_1800B162C();
sub_1800B162C();
sub_1800B165C();
sub_1800B165C();
sub_1800B162C();
sub_1800B1644();
MEMORY[0x202050048] &= 0xFFFFFFFFFDFFFFFFLL;
MEMORY[0x202051818] &= 0xFFFFFFFFFDFFFFFFLL;
sub_1800B1674();
sub_1800B1674();
sub_1800B1674();
sub_1800B1674();
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C5FF8) ----------------------------------------------------
__int64 sub_1800C5FF8()
{
sub_1800D2088();
sub_1800D63C4();
return 0LL;
}
//----- (00000001800C6014) ----------------------------------------------------
__int64 sub_1800C6014()
{
sub_1800D7778();
sub_1800F68F0();
return 0LL;
}
//----- (00000001800C6030) ----------------------------------------------------
void __noreturn sub_1800C6030()
{
sub_1800C59D0();
sub_1800BDD34();
sub_1800B5A04();
nullsub_14();
sub_1800B1EDC(0);
sub_1800D9274();
}
// 1800D656C: using guessed type __int64 nullsub_14(void);
//----- (00000001800C605C) ----------------------------------------------------
signed __int64 sub_1800C605C()
{
sub_1800ECE44("boot-device", (__int64)"nvme_nand0", 0);
sub_1800ECE44("display-color-space", (__int64)"ARGB8101010", 0);
sub_1800ECE44("display-timing", (__int64)"D640", 0);
sub_1800ECE44("adbe-tunables", (__int64)"D640", 0);
return sub_1800ECE44("adfe-tunables", (__int64)"D640", 0);
}
//----- (00000001800C6084) ----------------------------------------------------
__int64 sub_1800C6084()
{
int v0; // w0
signed __int64 v1; // x0
int v2; // w0
unsigned __int8 v3; // w0
_QWORD *v4; // x19
unsigned __int8 v5; // w0
unsigned int *v6; // x20
_QWORD *v7; // x21
_QWORD *v8; // x0
__int64 *v9; // x0
__int64 v10; // x19
__int64 v11; // x20
__int64 *v12; // x9
signed __int64 v13; // x11
signed __int64 v14; // x12
__int64 v15; // x13
__int64 result; // x0
signed __int64 v17; // x8
__int64 v18; // [xsp+10h] [xbp-50h]
_QWORD *v19; // [xsp+18h] [xbp-48h]
const char *v20; // [xsp+20h] [xbp-40h]
unsigned int v21; // [xsp+2Ch] [xbp-34h]
__int64 v22; // [xsp+30h] [xbp-30h]
__int64 v23; // [xsp+38h] [xbp-28h]
v23 = 5139240511851214385LL;
if ( (unsigned int)sub_1800EBDF4(0LL, "cpus/cpu0", &v22) )
{
v20 = "clock-frequency";
if ( (unsigned int)sub_1800EBFC8(v22, (_BYTE **)&v20, &v19, &v21) )
{
v18 = (unsigned int)sub_1800D389C(0);
sub_1800F03F0(v19, &v18, v21);
}
v20 = "memory-frequency";
if ( (unsigned int)sub_1800EBFC8(v22, (_BYTE **)&v20, &v19, &v21) )
{
v18 = (unsigned int)sub_1800D389C(2);
sub_1800F03F0(v19, &v18, v21);
}
v20 = "bus-frequency";
if ( (unsigned int)sub_1800EBFC8(v22, (_BYTE **)&v20, &v19, &v21) )
{
v18 = (unsigned int)sub_1800D389C(3);
sub_1800F03F0(v19, &v18, v21);
}
v20 = "peripheral-frequency";
if ( (unsigned int)sub_1800EBFC8(v22, (_BYTE **)&v20, &v19, &v21) )
{
v18 = (unsigned int)sub_1800D389C(1);
sub_1800F03F0(v19, &v18, v21);
}
v20 = "fixed-frequency";
if ( (unsigned int)sub_1800EBFC8(v22, (_BYTE **)&v20, &v19, &v21) )
{
v18 = (unsigned int)sub_1800D389C(4);
sub_1800F03F0(v19, &v18, v21);
}
v20 = "timebase-frequency";
if ( (unsigned int)sub_1800EBFC8(v22, (_BYTE **)&v20, &v19, &v21) )
{
v18 = (unsigned int)sub_1800D389C(5);
sub_1800F03F0(v19, &v18, v21);
}
}
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io", &v22) )
{
v20 = "clock-frequencies";
if ( (unsigned int)sub_1800EBFC8(v22, (_BYTE **)&v20, &v19, &v21) )
sub_1800D386C(v19, v21 >> 2);
v20 = "usbphy-frequency";
if ( (unsigned int)sub_1800EBFC8(v22, (_BYTE **)&v20, &v19, &v21) )
*(_DWORD *)v19 = sub_1800D389C(113);
}
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io/mcc", &v22) )
{
v20 = "dcs_num_channels";
if ( (unsigned int)sub_1800EBFC8(v22, (_BYTE **)&v20, &v19, &v21) )
*(_DWORD *)v19 = 4;
}
sub_1800D2BE0("arm-io/pmgr");
v0 = sub_1800C85A4();
sub_1800B9C08(v0, 0);
sub_1800B91E0("arm-io/pmgr", "arm-io/sgx");
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io/pmgr", &v22) )
{
v20 = "pmp";
if ( (unsigned int)sub_1800EBFC8(v22, (_BYTE **)&v20, &v19, &v21) )
{
if ( *(_DWORD *)v19 )
sub_1800D39CC(84LL, 1);
}
}
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io/audio-complex", &v22) )
{
v20 = "ncoref-frequency";
if ( (unsigned int)sub_1800EBFC8(v22, (_BYTE **)&v20, &v19, &v21) )
*(_DWORD *)v19 = sub_1800D389C(114);
}
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io/isp", &v22) )
{
v20 = "lpdprx_phy_efuse";
sub_1800EC320(v22, "lpdprx_phy_efuse", (MEMORY[0x2102BC010] >> 5) & 0xF);
}
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io/apcie", &v22) )
sub_1800C81C0(v22);
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io", &v22) )
{
v20 = "chip-revision";
v1 = sub_1800EBFC8(v22, (_BYTE **)&v20, &v19, &v21);
if ( (_DWORD)v1 )
{
v2 = sub_1800F688C(v1);
*(_DWORD *)v19 = v2;
}
}
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io/otgphyctrl", &v22) )
nullsub_5(v22);
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io/nvme-mmu0", &v22) )
{
v20 = "sart-region";
v3 = sub_1800EBFC8(v22, (_BYTE **)&v20, &v19, &v21);
v4 = v3 & (v21 == 16) ? v19 : 0LL;
v20 = "sart-virtual-base";
v5 = sub_1800EBFC8(v22, (_BYTE **)&v20, &v19, &v21);
v6 = (unsigned int *)(v5 & (v21 == 4) ? v19 : 0LL);
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io/apcie/pci-bridge0", &v18) )
{
if ( (unsigned int)sub_1800EBDF4(v18, "s3e", &v22) )
{
sub_1800BE3D4(0, v18);
v20 = "nvme-scratch-virt-region";
if ( (unsigned int)sub_1800EBFC8(v22, (_BYTE **)&v20, &v19, &v21) )
{
if ( v21 == 16 )
{
if ( v4 )
{
if ( v6 )
{
v7 = v19;
if ( v19 )
{
v8 = (_QWORD *)sub_1800E086C(0);
*v4 = *v8;
v4[1] = v8[1];
*v7 = *v6;
v7[1] = v4[1];
}
}
}
}
}
}
}
}
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io/aop", &v22) )
{
v9 = (__int64 *)sub_1800E086C(15);
v11 = *v9;
v10 = v9[1];
if ( (unsigned int)sub_1800EC0DC(v22, "reg", &v19, &v21) )
{
v12 = v19;
v13 = -1LL;
do
{
if ( ++v13 >= (unsigned __int64)(v21 >> 4) )
goto LABEL_62;
v14 = (signed __int64)(v12 + 2);
v15 = *v12;
v12 += 2;
}
while ( v15 != v11 - 0x200000000LL );
*(_QWORD *)(v14 - 8) = v10;
if ( sub_1800EBDF4(v22, "iop-aop-nub", &v22) & 1 )
{
sub_1800EC3C8(v22, "region-base", v11);
sub_1800EC3C8(v22, "region-size", v10);
goto LABEL_60;
}
v17 = 1010LL;
}
else
{
LABEL_62:
v17 = 1004LL;
}
sub_1800D489C("%llx:%d", &byte_180101040, -2937835284574947571LL, v17);
}
LABEL_60:
result = sub_1800D66D4();
if ( 5139240511851214385LL != v23 )
sub_1800D4A5C();
return result;
}
// 1800B5E24: using guessed type __int64 __fastcall nullsub_5(_QWORD);
// 1800F688C: using guessed type __int64 __fastcall sub_1800F688C(_QWORD);
// 180101040: using guessed type char byte_180101040;
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800C6708) ----------------------------------------------------
__int64 sub_1800C6708()
{
__int64 result; // x0
unsigned int v1; // [xsp+14h] [xbp-Ch]
__int64 v2; // [xsp+18h] [xbp-8h]
v2 = 5139240511851214385LL;
if ( (unsigned int)sub_1800BB444((__int64)&v1, 4u) )
sub_1800D489C("%llx:%d", &byte_180101040, -2937835284574947571LL, 1078LL);
result = v1;
if ( 5139240511851214385LL != v2 )
sub_1800D4A5C();
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C678C) ----------------------------------------------------
__int64 sub_1800C678C()
{
return (MEMORY[0x20E0B8000] >> 16) & 0xFF;
}
//----- (00000001800C67A8) ----------------------------------------------------
signed __int64 sub_1800C67A8()
{
return 1LL;
}
//----- (00000001800C67B0) ----------------------------------------------------
__int64 sub_1800C67B0()
{
__int64 v0; // x29
__int64 v1; // x30
int v2; // w8
v2 = (unsigned __int16)(MEMORY[0x20E0B8000] >> 8) - 2;
if ( (unsigned int)v2 >= 4 )
sub_1800D489C("%llx:%d", &byte_180101040, -2937835284574947571LL, 1277LL, v0, v1);
return *((unsigned int *)qword_180105050 + v2);
}
// 180101040: using guessed type char byte_180101040;
// 180105050: using guessed type __int64 qword_180105050[2];
//----- (00000001800C6818) ----------------------------------------------------
bool sub_1800C6818()
{
return (unsigned __int16)(MEMORY[0x20E0B8000] & 0xFE00) == 1024;
}
//----- (00000001800C6838) ----------------------------------------------------
unsigned __int64 sub_1800C6838()
{
unsigned __int64 v0; // x0
unsigned __int64 v1; // x8
if ( MEMORY[0x20E0B8000] & 2 )
{
LODWORD(v0) = MEMORY[0x20E0B8028];
LODWORD(v1) = MEMORY[0x20E0B802C];
}
else
{
v0 = sub_1800DA418();
v1 = v0 >> 32;
MEMORY[0x20E0B8028] = v0;
MEMORY[0x20E0B8000] |= 2u;
}
return (unsigned int)v0 | ((unsigned __int64)(unsigned int)v1 << 32);
}
//----- (00000001800C6898) ----------------------------------------------------
bool sub_1800C6898()
{
return (unsigned int)sub_1800B7D30(5635LL) == 0;
}
//----- (00000001800C68B8) ----------------------------------------------------
bool sub_1800C68B8()
{
return (unsigned int)sub_1800B7D30(5636LL) == 0;
}
//----- (00000001800C68D8) ----------------------------------------------------
signed __int64 __fastcall sub_1800C68D8(int a1, _DWORD *a2)
{
_DWORD *v2; // x19
int v3; // w20
char v4; // w0
signed __int64 result; // x0
v2 = a2;
v3 = a1;
v4 = sub_1800F6854();
if ( v3 != 2 )
{
if ( v3 == 1 && v4 & 1 )
goto LABEL_7;
return 0xFFFFFFFFLL;
}
if ( v4 & 1 )
return 0xFFFFFFFFLL;
LABEL_7:
result = 0LL;
*v2 = 536871424;
return result;
}
// 1800F6854: using guessed type __int64 sub_1800F6854(void);
//----- (00000001800C6930) ----------------------------------------------------
bool __fastcall sub_1800C6930(int a1, int a2)
{
_BOOL8 result; // x0
if ( a2 | a1 )
result = (unsigned __int8)(MEMORY[0x2102D0000] & (a2 & 1 | 2 * (a1 & 3))) != 0;
else
result = 1LL;
return result;
}
//----- (00000001800C6964) ----------------------------------------------------
__int64 sub_1800C6964()
{
return 0LL;
}
//----- (00000001800C696C) ----------------------------------------------------
__int64 sub_1800C696C()
{
__int64 v0; // x29
__int64 v1; // x30
if ( !(MEMORY[0x20E0B8000] & 4) )
sub_1800D489C("%llx:%d", &byte_180101040, -2937835284574947571LL, 1476LL, v0, v1);
return (unsigned int)(MEMORY[0x20E0B8024] >> 24);
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C69C4) ----------------------------------------------------
__int64 __fastcall sub_1800C69C4(__int64 result, unsigned __int16 a2, char a3, char a4)
{
if ( !(MEMORY[0x20E0B8000] & 4) )
MEMORY[0x20E0B8024] = 0;
MEMORY[0x20E0B8024] = (((_DWORD)result << 24) & 0xFFFF0000 | a2) & 0xFFF0FFFF | ((a3 & 0xF) << 16) | ((a4 & 0xF) << 20);
MEMORY[0x20E0B8000] |= 4u;
return result;
}
//----- (00000001800C6A08) ----------------------------------------------------
signed __int64 sub_1800C6A08()
{
return 36238786560LL;
}
//----- (00000001800C6A18) ----------------------------------------------------
signed __int64 __fastcall sub_1800C6A18(_DWORD *a1)
{
__int64 v1; // x29
__int64 v2; // x30
int *v4; // x9
int v5; // t1
if ( !a1 )
sub_1800D489C("%llx:%d", &byte_180101040, -2937835284574947571LL, 1525LL, v1, v2);
if ( !(MEMORY[0x20E0B8000] & 0x10) )
return 0xFFFFFFFFLL;
v4 = (int *)8825569328LL;
while ( (unsigned __int64)v4 <= 0x20E0B805CLL )
{
v5 = *v4;
++v4;
*a1 = v5;
++a1;
}
return 0LL;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C6A94) ----------------------------------------------------
__int64 __fastcall sub_1800C6A94(int *a1)
{
int *v1; // x9
int v2; // t1
unsigned int v3; // w9
v1 = (int *)8825569328LL;
if ( a1 )
{
while ( (unsigned __int64)v1 <= 0x20E0B805CLL )
{
v2 = *a1;
++a1;
*v1 = v2;
++v1;
}
v3 = MEMORY[0x20E0B8000] | 0x10;
}
else
{
while ( (unsigned __int64)v1 <= 0x20E0B805CLL )
{
*v1 = 0;
++v1;
}
v3 = MEMORY[0x20E0B8000] & 0xFFFFFFEF;
}
MEMORY[0x20E0B8000] = v3;
return 0LL;
}
//----- (00000001800C6AF0) ----------------------------------------------------
signed __int64 __fastcall sub_1800C6AF0(_DWORD *a1)
{
__int64 v1; // x29
__int64 v2; // x30
int *v4; // x9
int v5; // t1
if ( !a1 )
sub_1800D489C("%llx:%d", &byte_180101040, -2937835284574947571LL, 1587LL, v1, v2);
if ( !(MEMORY[0x2102D4020] & 1) )
return 0xFFFFFFFFLL;
v4 = (int *)8861335552LL;
while ( (unsigned __int64)v4 <= 0x2102D401CLL )
{
v5 = *v4;
++v4;
*a1 = v5;
++a1;
}
return 0LL;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C6B74) ----------------------------------------------------
__int64 __fastcall sub_1800C6B74(__int64 a1)
{
__int64 result; // x0
signed __int64 v2; // x8
if ( MEMORY[0x2102D4044] & 0x10000 )
{
v2 = 1657LL;
goto LABEL_6;
}
MEMORY[0x2102D4044] |= 0x10000u;
result = sub_1800D9F80(a1);
if ( !(MEMORY[0x2102D4044] & 0x10000) )
{
v2 = 1660LL;
LABEL_6:
sub_1800D489C("%llx:%d", &byte_180101040, -2937835284574947571LL, v2);
}
return result;
}
// 1800D9F80: using guessed type __int64 __fastcall sub_1800D9F80(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C6BF4) ----------------------------------------------------
int *__fastcall sub_1800C6BF4(int *result, __int64 a2)
{
__int64 v2; // x29
__int64 v3; // x30
unsigned __int64 v4; // x9
_DWORD *v5; // x10
int v6; // t1
unsigned int v7; // w9
_DWORD *i; // x9
if ( MEMORY[0x2102D4044] & 0x10000 )
sub_1800D489C("%llx:%d", &byte_180101040, -2937835284574947571LL, 1669LL, v2, v3);
if ( result )
{
v4 = (unsigned __int64)result + (a2 & 0xFFFFFFFFFFFFFFFCLL);
v5 = (_DWORD *)8861335588LL;
do
{
if ( (unsigned __int64)result >= v4 )
{
*v5 = 0;
}
else
{
v6 = *result;
++result;
*v5 = v6;
}
++v5;
}
while ( (unsigned __int64)v5 <= 0x2102D4040LL );
v7 = MEMORY[0x2102D4044] | 1;
}
else
{
for ( i = (_DWORD *)8861335588LL; (unsigned __int64)i <= 0x2102D4040LL; ++i )
*i = 0;
v7 = MEMORY[0x2102D4044] & 0xFFFFFFFE;
}
MEMORY[0x2102D4044] = v7;
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C6CAC) ----------------------------------------------------
void sub_1800C6CAC()
{
MEMORY[0x2102D0030] |= 0x80000000;
}
//----- (00000001800C6CC8) ----------------------------------------------------
__int64 sub_1800C6CC8()
{
return (MEMORY[0x20E0B8000] >> 3) & 1;
}
//----- (00000001800C6CE0) ----------------------------------------------------
__int64 __fastcall sub_1800C6CE0(__int64 result)
{
unsigned int v1; // w9
if ( (_DWORD)result )
v1 = MEMORY[0x20E0B8000] | 8;
else
v1 = MEMORY[0x20E0B8000] & 0xFFFFFFF7;
MEMORY[0x20E0B8000] = v1;
return result;
}
//----- (00000001800C6D08) ----------------------------------------------------
signed __int64 __fastcall sub_1800C6D08(unsigned int a1, unsigned int a2, unsigned int *a3)
{
unsigned int *v3; // x19
unsigned int v4; // w8
signed __int64 result; // x0
unsigned __int64 v6; // x21
__int64 v7; // x20
unsigned __int64 v8; // x22
v3 = a3;
v4 = a1;
result = 0xFFFFFFFFLL;
if ( v4 <= 8 && a3 )
{
if ( (0x187u >> v4) & 1 )
{
v6 = 0LL;
v7 = *((unsigned int *)qword_180105020 + (signed int)v4);
v8 = a2;
while ( v6 < v8 )
{
if ( *v3 && (unsigned int)sub_1800BC50C(v7, *v3, v3) )
goto LABEL_10;
++v6;
++v3;
}
result = 0LL;
}
else
{
LABEL_10:
result = 0xFFFFFFFFLL;
}
}
return result;
}
// 180105020: using guessed type __int64 qword_180105020[3];
//----- (00000001800C6D9C) ----------------------------------------------------
signed __int64 __fastcall sub_1800C6D9C(_QWORD *a1, _DWORD *a2)
{
_DWORD *v2; // x19
_QWORD *v3; // x20
signed __int64 result; // x0
v2 = a2;
v3 = a1;
result = sub_1800DA4AC((__int64)&qword_1801146A0, 14LL, 0LL);
*v3 = &qword_1801146A0;
*v2 = 14;
return result;
}
// 1801146A0: using guessed type __int64 qword_1801146A0;
//----- (00000001800C6DE8) ----------------------------------------------------
_DWORD *sub_1800C6DE8()
{
_DWORD *result; // x0
_DWORD *v1; // x19
__int64 v2; // x20
result = sub_1800E07DC(9);
v1 = result;
if ( !*((_BYTE *)result + 4) )
{
v2 = sub_1800DA63C();
result = sub_1800E07DC(7);
*((_QWORD *)v1 + 1) = *((_QWORD *)result + 1) - v2;
*((_QWORD *)v1 + 2) = v2;
*((_BYTE *)v1 + 4) = 1;
}
return result;
}
//----- (00000001800C6E38) ----------------------------------------------------
signed __int64 __fastcall sub_1800C6E38(unsigned int a1)
{
__int64 v2; // x0
if ( a1 <= 8 && (0x187u >> a1) & 1 )
{
v2 = *((unsigned int *)qword_180105020 + (signed int)a1);
JUMPOUT(&loc_1800BC5F8);
}
return 0xFFFFFFFFLL;
}
// 180105020: using guessed type __int64 qword_180105020[3];
//----- (00000001800C6E68) ----------------------------------------------------
signed __int64 sub_1800C6E68()
{
return 85LL;
}
//----- (00000001800C6E70) ----------------------------------------------------
__int64 sub_1800C6E70()
{
return 0LL;
}
//----- (00000001800C6E78) ----------------------------------------------------
signed __int64 sub_1800C6E78()
{
unsigned int v0; // w19
int v1; // w2
v0 = sub_1800B8508(2u, 7);
v1 = sub_1800C84D4();
return sub_1800B8CDC(v0, 0, v1);
}
//----- (00000001800C6EB0) ----------------------------------------------------
signed __int64 sub_1800C6EB0()
{
int v0; // w0
signed __int64 result; // x0
v0 = sub_1800C84D4();
result = sub_1800B8CDC(0x3Au, 1, v0);
if ( (_DWORD)result == -1 )
sub_1800D489C("%llx:%d", &byte_180101040, -2937835284574947571LL, 2134LL);
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C6F10) ----------------------------------------------------
void __fastcall sub_1800C6F10(__int64 a1, _QWORD *a2, _QWORD *a3, _QWORD *a4)
{
*a2 = 8873952512LL;
a2[1] = 8873953024LL;
a2[2] = 8873935104LL;
a2[3] = 8873935616LL;
a2[4] = 8873935872LL;
a2[5] = 8873936128LL;
a2[6] = 8873954560LL;
a2[7] = 8873956608LL;
*a4 = 8873934848LL;
*a3 = 512LL;
a3[1] = 1536LL;
a3[2] = 512LL;
a3[3] = 256LL;
a3[4] = 256LL;
a3[5] = 0x4000LL;
a3[6] = 2048LL;
a3[7] = 10752LL;
}
//----- (00000001800C70F0) ----------------------------------------------------
signed __int64 *__fastcall sub_1800C70F0(__int64 a1)
{
__int64 v1; // x19
v1 = a1;
MEMORY[0x210000124] |= 1u;
sub_1800E0A38((__int64)qword_180111498, 2u);
sub_1800C71FC(
v1,
0LL,
(__int64)&off_1801114E8,
(void (__fastcall *)(__int64, signed __int64 *, __int64))sub_1800C72B0);
sub_1800C71FC(
v1,
(signed __int64 *)1,
(__int64)&off_180111508,
(void (__fastcall *)(__int64, signed __int64 *, __int64))nullsub_18);
sub_1800C71FC(
v1,
(signed __int64 *)2,
(__int64)&off_180111538,
(void (__fastcall *)(__int64, signed __int64 *, __int64))nullsub_19);
sub_1800C71FC(
v1,
(signed __int64 *)4,
(__int64)&off_180111558,
(void (__fastcall *)(__int64, signed __int64 *, __int64))nullsub_20);
sub_1800C71FC(
v1,
(signed __int64 *)5,
(__int64)&off_180111578,
(void (__fastcall *)(__int64, signed __int64 *, __int64))sub_1800C72C8);
sub_1800C71FC(
v1,
(signed __int64 *)6,
(__int64)&off_1801115C8,
(void (__fastcall *)(__int64, signed __int64 *, __int64))nullsub_21);
return sub_1800C71FC(
v1,
(signed __int64 *)7,
(__int64)&off_1801115E8,
(void (__fastcall *)(__int64, signed __int64 *, __int64))sub_1800C7504);
}
// 1800C72BC: using guessed type __int64 __fastcall nullsub_18();
// 1800C72C0: using guessed type __int64 __fastcall nullsub_19();
// 1800C72C4: using guessed type __int64 __fastcall nullsub_20();
// 1800C7500: using guessed type __int64 __fastcall nullsub_21();
// 180111498: using guessed type __int64 qword_180111498[5];
// 1801114E8: using guessed type void *off_1801114E8;
// 180111508: using guessed type void *off_180111508;
// 180111538: using guessed type __int64 (*off_180111538)[45];
// 180111558: using guessed type void *off_180111558;
// 180111578: using guessed type void *off_180111578;
// 1801115C8: using guessed type void *off_1801115C8;
// 1801115E8: using guessed type void *off_1801115E8;
//----- (00000001800C71FC) ----------------------------------------------------
signed __int64 *__fastcall sub_1800C71FC(__int64 a1, signed __int64 *a2, __int64 a3, void (__fastcall *a4)(__int64, signed __int64 *, __int64))
{
signed __int64 *result; // x0
unsigned int v5; // w9
unsigned int v6; // w9
__int64 v7; // x10
signed __int64 v8; // x11
int v9; // w12
__int64 v10; // x10
int v11; // w12
__int64 v12; // x9
void (__fastcall *v13)(__int64, signed __int64 *, __int64); // x20
__int64 v14; // x22
signed __int64 *v15; // x19
__int64 v16; // x21
char v17; // w24
__int64 v18; // x23
int *v19; // x1
v13 = a4;
v14 = a3;
v15 = a2;
v16 = a1;
v17 = 2 * (_BYTE)a2;
sub_1800C784C(a2, 1 << 2 * (_BYTE)a2);
v18 = 0LL;
while ( 1 )
{
v19 = *(int **)v14;
if ( !*(_QWORD *)v14 )
break;
if ( v13 )
{
v13(v16, v15, v18);
v19 = *(int **)v14;
}
sub_1800BABD0(v15, v19, *(_DWORD *)(v14 + 8));
v18 = (unsigned int)(v18 + 1);
v14 += 16LL;
}
if ( v13 )
v13(v16, v15, v18);
sub_1800C784C(v15, 1 << (v17 | 1));
result = sub_1800BAA6C(v15);
switch ( (_DWORD)v15 )
{
case 0:
v5 = MEMORY[0x210000110] & 0xFFFFFFE0 | 0x100;
goto LABEL_11;
case 1:
v5 = MEMORY[0x210000110] & 0xFEE0FFFF | 0x1010000;
LABEL_11:
MEMORY[0x210000110] = v5;
break;
case 2:
MEMORY[0x210000108] = MEMORY[0x210000108] & 0xFFFFFFE0 | 0x102;
break;
case 3:
MEMORY[0x210000108] = MEMORY[0x210000108] & 0xFEE0FFFF | 0x1030000;
break;
case 4:
MEMORY[0x210000104] = MEMORY[0x210000104] & 0xFFFFFFE0 | 0x104;
break;
case 5:
MEMORY[0x210000104] = MEMORY[0x210000104] & 0xFEE0FFFF | 0x1050000;
break;
case 6:
v6 = MEMORY[0x21000010C] & 0xFFFFFFE0 | 0x106;
goto LABEL_18;
case 7:
v6 = MEMORY[0x21000010C] & 0xFEE0FFFF | 0x1070000;
LABEL_18:
MEMORY[0x21000010C] = v6;
break;
case 8:
sub_1800D489C("%llx:%d", &byte_180101040, -1120701505042910129LL, 440LL);
return result;
default:
break;
}
v7 = *(_QWORD *)(8LL * (unsigned int)v15 + 0x18011A260LL);
v8 = 4LL * (unsigned int)v15 + 6443606576LL;
v9 = *(_DWORD *)(4LL * (unsigned int)v15 + 0x18011A23CLL);
*(_DWORD *)(v8 + 12) = v9 + 1;
*(_DWORD *)(v7 + (unsigned int)(4 * v9)) = 0;
v10 = *(_QWORD *)(8LL * (unsigned int)v15 + 0x18011A260LL);
v11 = *(_DWORD *)(4LL * (unsigned int)v15 + 0x18011A23CLL);
*(_DWORD *)(v8 + 12) = v11 + 1;
*(_DWORD *)(v10 + (unsigned int)(4 * v11)) = -559030611;
v12 = *(_QWORD *)(8LL * (unsigned int)v15 + 0x18011A260LL);
LODWORD(v10) = *(_DWORD *)(4LL * (unsigned int)v15 + 0x18011A23CLL);
*(_DWORD *)(v8 + 12) = v10 + 1;
*(_DWORD *)(v12 + (unsigned int)(4 * v10)) = -559030611;
*(_BYTE *)((unsigned int)v15 + 0x18011A231LL) = 1;
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C72B0) ----------------------------------------------------
signed __int64 *__fastcall sub_1800C72B0(__int64 a1, __int64 a2, int a3)
{
signed __int64 *result; // x0
if ( !a3 )
{
sub_1800BA5EC(0LL, 0x20E0BC004uLL, 1LL, 0);
sub_1800BA5EC(0LL, 0x20E0BC104uLL, 1LL, 0);
sub_1800BA5EC(0LL, 0x20E0BC204uLL, 1LL, 0);
sub_1800BA5EC(0LL, 0x202F30408uLL, 1LL, 1);
sub_1800BA5EC(0LL, 0x202F30438uLL, 1LL, 1);
result = sub_1800BA5EC(0LL, 0x202F30468uLL, 1LL, 1);
}
return result;
}
//----- (00000001800C72C8) ----------------------------------------------------
__int64 __fastcall sub_1800C72C8(__int64 result, signed __int64 *a2, int a3)
{
signed __int64 *v3; // x19
int v4; // w20
_QWORD *v5; // x24
__int64 v6; // x21
__int64 v7; // x20
char v8; // w23
char v9; // w22
unsigned __int64 v10; // x9
__int64 v11; // x20
__int64 v12; // x21
v3 = a2;
v4 = result;
if ( a3 == 3 )
return sub_1800BABD0(a2, (int *)qword_1801057F0, 0x952u);
if ( a3 != 2 && a3 == 1 )
{
result = (__int64)sub_1800C9550((unsigned int *)0x210E00000LL);
if ( v4 != 5 )
{
v5 = (_QWORD *)sub_1800E086C(2);
v6 = sub_1800D5104();
v7 = sub_1800D5158();
v8 = sub_1800B060C();
v9 = sub_1800B060C();
sub_1800BA5EC(v3, 0x200000480uLL, *v5 >> 12, 0);
sub_1800BA5EC(v3, 0x200000484uLL, (unsigned __int64)(*v5 + v5[1] - 1LL) >> 12, 0);
sub_1800BA5EC(v3, 0x200000490uLL, 1LL, 0);
sub_1800BA890(v3, 0x200000490uLL, 1LL, 1LL, 255, 0);
result = (__int64)sub_1800BA5EC(v3, 0x200000794uLL, 1LL, 0);
if ( v6 )
{
v10 = (unsigned __int64)(v7 - 34359738369LL) >> v9;
v11 = ((unsigned __int64)(v6 - 0x800000000LL) >> v8) & 0xFFFFFFFF;
v12 = (unsigned int)v10;
sub_1800BA5EC(v3, 0x2000007E4uLL, v11, 0);
sub_1800BA5EC(v3, 0x2000007E8uLL, v12, 0);
sub_1800BA5EC(v3, 0x2000007ECuLL, 1LL, 0);
sub_1800BA890(v3, 0x2000007E4uLL, v11, 0xFFFFFLL, 1, 0);
sub_1800BA890(v3, 0x2000007E8uLL, v12, 0xFFFFFLL, 1, 0);
result = sub_1800BA890(v3, 0x2000007ECuLL, 1LL, 1LL, 1, 0);
}
}
}
return result;
}
// 1801057F0: using guessed type __int64 qword_1801057F0[512];
//----- (00000001800C7504) ----------------------------------------------------
signed __int64 *__fastcall sub_1800C7504(signed __int64 *result, signed __int64 *a2, int a3)
{
signed __int64 *v3; // x19
int v4; // w20
__int64 v5; // x20
__int64 *v6; // x20
signed __int64 v7; // x21
unsigned int *i; // x22
unsigned int *j; // x22
_QWORD *v10; // x10
unsigned __int64 v11; // x9
__int64 k; // x21
unsigned int v13; // w0
unsigned int v14; // w0
unsigned int v15; // w0
__int64 l; // x19
v3 = a2;
v4 = (signed int)result;
switch ( a3 )
{
case 2:
return sub_1800C784C(a2, 1 << (2 * (_BYTE)a2 | 1));
case 1:
sub_1800BA5EC(a2, 0x20E080110uLL, 15LL, 0);
sub_1800BA890(v3, 0x20E080110uLL, 240LL, 240LL, 255, 0);
sub_1800BA5EC(v3, 0x20E080160uLL, 15LL, 0);
sub_1800BA890(v3, 0x20E080160uLL, 240LL, 240LL, 255, 0);
sub_1800BA5EC(v3, 0x20E080168uLL, 15LL, 0);
sub_1800BA890(v3, 0x20E080168uLL, 240LL, 240LL, 255, 0);
sub_1800BA5EC(v3, 0x20E080170uLL, 15LL, 0);
sub_1800BA890(v3, 0x20E080170uLL, 240LL, 240LL, 255, 0);
sub_1800D3D1C();
sub_1800C8F60();
sub_1800BA5EC(v3, 0x20E0B8000uLL, MEMORY[0x20E0B8000] & 0xFFFFFFED, 0);
sub_1800BA5EC(v3, 0x20E0B8024uLL, MEMORY[0x20E0B8024], 0);
sub_1800BA5EC(v3, 0x20E080168uLL, 15LL, 0);
sub_1800BA890(v3, 0x20E080168uLL, 240LL, 240LL, 255, 0);
sub_1800BA5EC(v3, 0x20E0801E8uLL, 15LL, 0);
sub_1800BA890(v3, 0x20E0801E8uLL, 240LL, 240LL, 255, 0);
if ( v4 == 5 )
{
sub_1800BA5EC(v3, 0x202050000uLL, 34896609280LL, 1);
sub_1800BA5EC(v3, 0x202150000uLL, 34896609280LL, 1);
}
else
{
v5 = MEMORY[0x180115FF8] & 0xFFFFFFFFFFFFF000LL | 1;
sub_1800BA5EC(v3, 0x202050000uLL, v5, 1);
sub_1800BA890(v3, 0x202050000uLL, v5, 0xFFFFFFFFFFFFLL, 1, 1);
sub_1800BA5EC(v3, 0x202150000uLL, v5, 1);
sub_1800BA890(v3, 0x202150000uLL, v5, 0xFFFFFFFFFFFFLL, 1, 1);
}
v6 = (__int64 *)8639741992LL;
v7 = 15LL;
while ( v7 )
{
sub_1800BA5EC((signed __int64 *)7, (unsigned __int64)(v6 - 1), *(v6 - 1), 1);
sub_1800BA5EC((signed __int64 *)7, (unsigned __int64)v6, *v6, 1);
--v7;
v6 += 4;
}
for ( i = 0LL; i != (unsigned int *)256; i += 4 )
{
sub_1800BA5EC((signed __int64 *)7, (unsigned __int64)(i + 2206318592LL), i[2206318592LL], 0);
sub_1800BA5EC((signed __int64 *)7, (unsigned __int64)(i + 2206318593LL), i[2206318593LL], 0);
sub_1800BA5EC((signed __int64 *)7, (unsigned __int64)(i + 2206318594LL), i[2206318594LL], 0);
}
for ( j = 0LL; j != (unsigned int *)208; j += 4 )
{
sub_1800BA5EC((signed __int64 *)7, (unsigned __int64)(j + 2206310408LL), j[2206310408LL], 0);
sub_1800BA5EC((signed __int64 *)7, (unsigned __int64)(j + 2206310409LL), j[2206310409LL], 0);
sub_1800BA5EC((signed __int64 *)7, (unsigned __int64)(j + 2206310410LL), j[2206310410LL], 0);
sub_1800BA5EC((signed __int64 *)7, (unsigned __int64)(j + 2206310411LL), j[2206310411LL], 0);
}
v10 = (_QWORD *)8639742016LL;
v11 = 2LL;
while ( v11 <= 0xF )
{
if ( !((MEMORY[0x202F80000] ^ (unsigned int)*v10) & 0x800000) )
{
sub_1800BA5EC(
(signed __int64 *)7,
0x202F20020uLL,
v11 & 0xF | MEMORY[0x202F20020] & 0xFFFFFFFFFFFFFFF0LL | 0x2000000,
1);
break;
}
++v11;
v10 += 4;
}
sub_1800BA890((signed __int64 *)7, 0x202F20020uLL, 0LL, -2147483648LL, 255, 1);
sub_1800BA5EC((signed __int64 *)7, 0x20E070200uLL, MEMORY[0x20E070200], 0);
sub_1800D44CC(59LL, 0x41u);
for ( k = 0LL; k != 81920; k += 0x4000LL )
sub_1800BA5EC((signed __int64 *)7, k + 8825094144LL, *(unsigned int *)(k + 8825094144LL), 0);
sub_1800D44CC(0LL, 0x3Bu);
sub_1800BA5EC((signed __int64 *)7, 0x20E068000uLL, MEMORY[0x20E068000], 0);
sub_1800BA890((signed __int64 *)7, 0x20E068000uLL, 0LL, -2147483648LL, 255, 0);
sub_1800BA5EC((signed __int64 *)7, 0x202F80000uLL, MEMORY[0x202F80000], 1);
sub_1800BA5EC((signed __int64 *)7, 0x202F80008uLL, MEMORY[0x202F80008], 1);
v13 = sub_1800C86B0(0);
sub_1800BA5EC((signed __int64 *)7, 0x20E0BC014uLL, v13, 0);
v14 = sub_1800C86B0(1);
sub_1800BA5EC((signed __int64 *)7, 0x20E0BC114uLL, v14, 0);
v15 = sub_1800C86B0(2);
result = sub_1800BA5EC((signed __int64 *)7, 0x20E0BC214uLL, v15, 0);
for ( l = 0LL; l != 24; l += 3LL )
result = sub_1800BA5EC((signed __int64 *)7, qword_18010ECD8[l], qword_18010ECD8[l + 1], qword_18010ECD8[l + 2]);
break;
case 0:
sub_1800BABD0(a2, (int *)qword_180108438, 0xCFu);
sub_1800C959C((unsigned int *)0x210E00008LL);
result = (signed __int64 *)sub_1800BABD0(v3, &dword_180108774, 0x79u);
break;
}
return result;
}
// 180108438: using guessed type __int64 qword_180108438[103];
// 180108774: using guessed type int dword_180108774;
// 18010ECD8: using guessed type __int64 qword_18010ECD8[];
//----- (00000001800C783C) ----------------------------------------------------
__int64 __fastcall sub_1800C783C(int a1, unsigned __int8 a2, unsigned int a3)
{
return ((a1 << 16) & 0xFFFF00FF | (a2 << 8)) & 0xFFFFFF00 | (a3 >> 2) & 0xFF;
}
//----- (00000001800C784C) ----------------------------------------------------
signed __int64 *__fastcall sub_1800C784C(signed __int64 *a1, int a2)
{
return sub_1800BA5EC(a1, 0x2102B8028uLL, a2, 0);
}
//----- (00000001800C7864) ----------------------------------------------------
__int64 __fastcall sub_1800C7864(__int64 result)
{
MEMORY[0x18011AA70] = 1;
MEMORY[0x18011AA71] = result;
return result;
}
//----- (00000001800C787C) ----------------------------------------------------
signed __int64 __fastcall sub_1800C787C(__int64 a1)
{
__int64 v1; // x19
signed __int64 result; // x0
__int64 v3; // x25
unsigned int *v4; // x20
signed __int64 v5; // x27
unsigned int *v6; // x27
unsigned int v7; // t1
__int64 v8; // x0
__int64 v9; // x21
__int64 v10; // x1
__int64 v11; // x2
__int64 v12; // x3
__int64 v13; // x4
__int64 v14; // x5
__int64 v15; // x6
__int64 v16; // x7
int v17; // w21
_DWORD *v18; // x23
int v19; // w21
__int64 v20; // x0
unsigned int v21; // w21
_DWORD *v22; // x8
unsigned int *v23; // x17
_DWORD *v24; // x17
__int64 v25; // x21
__int64 v26; // x1
__int64 v27; // x2
__int64 v28; // x3
__int64 v29; // x4
__int64 v30; // x5
__int64 v31; // x6
__int64 v32; // x7
__int64 v33; // x8
__int64 v34; // xzr
__int64 v35; // x1
__int64 v36; // x2
__int64 v37; // x3
__int64 v38; // x4
__int64 v39; // x5
__int64 v40; // x6
__int64 v41; // x7
__int16 v42; // [xsp+1Ah] [xbp-66h]
unsigned int v43; // [xsp+1Ch] [xbp-64h]
__int64 v44; // [xsp+20h] [xbp-60h]
__int64 v45; // [xsp+28h] [xbp-58h]
v1 = a1;
v45 = 5139240511851214385LL;
if ( !*(_BYTE *)((unsigned int)a1 + 0x180115A20LL) )
{
v3 = MEMORY[0x180115A18];
v4 = (unsigned int *)(MEMORY[0x180115A18] + 40LL * (unsigned int)a1);
if ( !MEMORY[0x18011AA74] )
{
sub_1800D39CC(88LL, 1);
sub_1800D39CC(89LL, 1);
sub_1800D39CC(32LL, 1);
sub_1800E0A38((__int64)qword_1801117A0, 1u);
sub_1800E0A38((__int64)qword_1801117C8, 1u);
if ( LOBYTE(qword_1801158C8[2613]) == 1 )
{
if ( MEMORY[0x18011AA71] )
MEMORY[0x600000024] &= 0xFFFFFFFE;
sub_1800B7F70(258LL, 5);
MEMORY[0x600000014] |= 1u;
sub_1800D5F60(100LL);
MEMORY[0x600000024] |= 1u;
}
MEMORY[0x600000004] = (unsigned __int64)sub_1800C67B0() | 0x10;
while ( !(MEMORY[0x600000028] & 1) )
sub_1800D5F60(1LL);
MEMORY[0x600000034] |= 1u;
sub_1800E0A38((__int64)qword_180111628, 1u);
}
sub_1800B7F70(*v4, 2);
v5 = v3 + 40LL * (unsigned int)v1;
v7 = *(_DWORD *)(v5 + 4);
v6 = (unsigned int *)(v5 + 4);
v8 = sub_1800B7F70(v7, 0);
v9 = sub_1800D5F1C(v8);
while ( (unsigned int)sub_1800B7D30(*v6) )
{
if ( sub_1800D5F30(v9, 0x989680uLL) )
{
sub_1800EF260((__int64)"%llx:%d\n", v10, v11, v12, v13, v14, v15, v16, -8379977398048039662LL);
LABEL_41:
sub_1800B7F70(*v4, 2);
sub_1800D5F60(10LL);
sub_1800B7F70(*v4, 4);
sub_1800B7F70(*v6, 4);
sub_1800C7F30(v1);
if ( !MEMORY[0x18011AA74] )
sub_1800C7FA4();
result = 0LL;
goto LABEL_44;
}
sub_1800D5F60(1LL);
}
sub_1800B7F70(*v6, 5);
v17 = (_DWORD)v1 << 7;
v18 = (_DWORD *)((unsigned int)(((_DWORD)v1 << 7) + 308) | 0x600000000LL);
*v18 &= 0xFFFFFFFE;
*(_DWORD *)((unsigned int)(v17 + 292) | 0x600000000LL) |= 1u;
while ( !(MEMORY[0x600000028] & 0x10) )
sub_1800D5F60(1LL);
*(_DWORD *)((unsigned int)(((_DWORD)v1 << 7) + 256) | 0x600000000LL) |= 1u;
*(_DWORD *)((unsigned int)(((_DWORD)v1 << 7) + 308) | 0x600000000LL) |= 1u;
while ( !(*(_DWORD *)((unsigned int)(((_DWORD)v1 << 7) + 260) | 0x600000000LL) & 1) )
sub_1800D5F60(10LL);
sub_1800E0A38(
(__int64)*(&off_1801116E0 + 3 * (unsigned int)v1),
*((_DWORD *)&off_1801116E0 + 6 * (unsigned int)v1 + 2));
sub_1800E0A38(
(__int64)*(&off_180111740 + 3 * (unsigned int)v1),
*((_DWORD *)&off_180111740 + 6 * (unsigned int)v1 + 2));
*(_DWORD *)((unsigned int)((_DWORD)v1 << 24) + 0x601000140LL) |= 0x80000000;
sub_1800D5F60(100LL);
sub_1800B7F70(*v4, 3);
sub_1800B5830(&v42, ((_DWORD)v1 << 15) + 268435616, 2);
v42 = v42 & 0xFFF0 | 1;
sub_1800B58B4(&v42, ((_DWORD)v1 << 15) + 268435616, 2);
v19 = sub_1800C6818();
if ( v19 )
{
sub_1800B5830(&v44, ((_DWORD)v1 << 15) + 268437516, 4);
LODWORD(v44) = v44 & 0xFFFE00FF | (v19 << 8);
sub_1800B58B4(&v44, ((_DWORD)v1 << 15) + 268437516, 4);
sub_1800B5830(&v43, ((_DWORD)v1 << 15) + 268437264, 4);
v43 = v43 & 0xFFC0FFFF | (0x10000 << (v19 - 1));
sub_1800B58B4(&v43, ((_DWORD)v1 << 15) + 268437264, 4);
}
sub_1800B5830(&v43, ((_DWORD)v1 << 15) + 268435812, 4);
v43 &= 0xFF0700FF;
sub_1800B58B4(&v43, ((_DWORD)v1 << 15) + 268435812, 4);
*(_DWORD *)((unsigned int)((_DWORD)v1 << 6) + 0x600004020LL) = 3;
v20 = sub_1800C67B0();
v21 = ((1 << *((_DWORD *)&qword_180108958[2 * (unsigned int)v20] + (unsigned int)v1)) - 1) << v1;
while ( v21 & ~MEMORY[0x60000800C] )
v20 = sub_1800D5F60(10LL);
v22 = 0LL;
MEMORY[0x60A000180] |= 0x4000u;
MEMORY[0x60A000184] |= 0x4000u;
MEMORY[0x60A000090] = MEMORY[0x60A000090] & 0xFFFFF000 | 0x64;
MEMORY[0x60A000098] = MEMORY[0x60A000098] & 0xFFFFF000 | 0x19;
while ( v21 )
{
if ( v21 & 1 )
{
v23 = v22 + 6484410369LL;
v23[33] = v22[6484410402LL] | 0x4000;
v23[480] = 0;
*v23 = v22[6484410369LL] & 0xFFFFF000 | 0x600;
v24 = v22 + 6484426791LL;
v24[443] = 12549;
v24[449] = v22[6484427240LL] & 0xFFFFFF00 | 0x9F;
v24[451] = v22[6484427242LL] & 0xFFFFFF00 | 1;
v20 = v22[6484427008LL] & 0xFFFFFFE0 | 0xA;
v24[217] = v20;
*v24 = 175;
v24[16] = 175;
v24[1] = 333;
v24[17] = 333;
v24[2] = 530;
v24[18] = 530;
v24[165] = 0;
v24[169] = 0;
v24[173] = 0;
}
v21 >>= 1;
v22 += 512;
}
*(_DWORD *)((unsigned int)((_DWORD)v1 << 24) + 0x601000080LL) |= 1u;
v25 = sub_1800D5F1C(v20);
while ( !(*(_DWORD *)((unsigned int)((_DWORD)v1 << 24) + 0x601000208LL) & 1) )
{
if ( sub_1800D5F30(v25, 0x989680uLL) )
{
v34 = *(unsigned int *)((unsigned int)((_DWORD)v1 << 24) + 0x601000208LL);
sub_1800EF260((__int64)"%llx:%d\n", v26, v27, v28, v29, v30, v31, v32, -8379977398048039662LL);
sub_1800EF260((__int64)"%llx:%d\n", v35, v36, v37, v38, v39, v40, v41, -8379977398048039662LL);
goto LABEL_41;
}
sub_1800D5F60(10LL);
}
*(_BYTE *)((unsigned int)v1 + 0x180115A20LL) = 1;
++MEMORY[0x18011AA74];
v33 = MEMORY[0x18011AA78];
if ( !MEMORY[0x18011AA78] )
{
sub_1800F0E34(0x300u, 458752, &v44);
v33 = v44;
MEMORY[0x18011AA78] = v44;
}
(*(void (__fastcall **)(_QWORD))(v33 + 8))(*(unsigned int *)(v3 + 40LL * (unsigned int)v1 + 8));
sub_1800B5938(v1);
}
result = 1LL;
LABEL_44:
if ( 5139240511851214385LL != v45 )
sub_1800D4A5C();
return result;
}
// 180108958: using guessed type __int64 qword_180108958[183];
// 180111628: using guessed type __int64 qword_180111628[5];
// 1801116E0: using guessed type __int64 (*off_1801116E0)[5];
// 180111740: using guessed type __int64 (*off_180111740)[5];
// 1801117A0: using guessed type __int64 qword_1801117A0[5];
// 1801117C8: using guessed type __int64 qword_1801117C8[5];
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800C7F30) ----------------------------------------------------
__int64 __fastcall sub_1800C7F30(__int64 result)
{
_DWORD *v1; // x19
*(_DWORD *)((unsigned int)(((_DWORD)result << 7) + 308) | 0x600000000LL) &= 0xFFFFFFFE;
*(_DWORD *)((unsigned int)(((_DWORD)result << 7) + 292) | 0x600000000LL) &= 0xFFFFFFFE;
*(_DWORD *)((unsigned int)(((_DWORD)result << 7) + 256) | 0x600000000LL) &= 0xFFFFFFFE;
v1 = (_DWORD *)((unsigned int)(((_DWORD)result << 7) + 260) | 0x600000000LL);
while ( *v1 & 1 )
result = sub_1800D5F60(10LL);
return result;
}
//----- (00000001800C7FA4) ----------------------------------------------------
__int64 sub_1800C7FA4()
{
JUMPOUT(MEMORY[0x18011AA71], 0, sub_1800C7FC8);
MEMORY[0x600000024] &= 0xFFFFFFFE;
return sub_1800C7FC8();
}
//----- (00000001800C7FC8) ----------------------------------------------------
__int64 sub_1800C7FC8()
{
sub_1800D3C2C(88LL, 1);
sub_1800D5F60(10LL);
sub_1800D3AEC(89LL);
sub_1800D3AEC(32LL);
sub_1800D3AEC(88LL);
return sub_1800D3C2C(88LL, 0);
}
//----- (00000001800C800C) ----------------------------------------------------
void __fastcall sub_1800C800C(__int64 a1)
{
__int64 v1; // x0
__int64 v2; // x19
__int64 v3; // x23
__int64 v4; // x24
__int64 v5; // x0
__int64 v6; // x20
__int64 v7; // x1
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
__int64 v14; // x20
__int64 v15; // x1
__int64 v16; // x2
__int64 v17; // x3
__int64 v18; // x4
__int64 v19; // x5
__int64 v20; // x6
__int64 v21; // x7
unsigned int *v22; // x20
v2 = a1;
if ( *(_BYTE *)((unsigned int)a1 + 0x180115A20LL) )
{
v3 = MEMORY[0x180115A18];
*(_DWORD *)((unsigned int)((_DWORD)a1 << 6) + 0x600004020LL) = 0;
v4 = (unsigned int)((_DWORD)a1 << 24);
*(_DWORD *)(v4 + 0x60100008CLL) = 49;
v5 = sub_1800D5F1C(a1);
v6 = v5;
while ( *(_DWORD *)(v4 + 25786581132LL) & 1 )
{
if ( sub_1800D5F30(v6, 0x2710uLL) )
{
v5 = sub_1800EF260((__int64)"%llx:%d\n", v7, v8, v9, v10, v11, v12, v13, -8379977398048039662LL);
break;
}
v5 = sub_1800D5F60(10LL);
}
v14 = sub_1800D5F1C(v5);
while ( !(*(_DWORD *)(v4 + 25786581512LL) & 0x40) )
{
if ( sub_1800D5F30(v14, 0x2710uLL) )
{
sub_1800EF260((__int64)"%llx:%d\n", v15, v16, v17, v18, v19, v20, v21, -8379977398048039662LL);
break;
}
sub_1800D5F60(10LL);
}
v22 = (unsigned int *)(v3 + 40LL * (unsigned int)v2);
sub_1800B7F70(*v22, 2);
sub_1800D5F60(25LL);
sub_1800B7F70(*v22, 4);
sub_1800B7F70(v22[1], 4);
(*(void (__fastcall **)(_QWORD))(MEMORY[0x18011AA78] + 16LL))(v22[2]);
sub_1800C7F30(v2);
*(_BYTE *)((unsigned int)v2 + 0x180115A20LL) = 0;
if ( !--MEMORY[0x18011AA74] )
sub_1800C7FA4();
v1 = *(_QWORD *)(8LL * (unsigned int)v2 + 0x180119BB8LL);
if ( v1 )
{
sub_1800E4244(v1);
*(_QWORD *)(8LL * (unsigned int)v2 + 0x180119BB8LL) = 0LL;
}
}
}
//----- (00000001800C81B0) ----------------------------------------------------
__int64 sub_1800C81B0()
{
return MEMORY[0x18011AA74];
}
//----- (00000001800C81C0) ----------------------------------------------------
void __fastcall sub_1800C81C0(__int64 a1)
{
__int64 v1; // x19
_QWORD *v2; // x20
_QWORD *v3; // x0
unsigned int v4; // w3
__int64 v5; // x5
__int64 v6; // x6
__int64 v7; // x7
unsigned __int64 v8; // x26
int *v9; // x27
int *v10; // x28
unsigned int v11; // w3
__int64 v12; // x5
__int64 v13; // x6
__int64 v14; // x7
unsigned int v15; // w3
unsigned int v16; // w3
signed __int64 v17; // x8
__int64 v18; // [xsp+10h] [xbp-70h]
char v19; // [xsp+18h] [xbp-68h]
__int64 v20; // [xsp+28h] [xbp-58h]
v1 = a1;
v20 = 5139240511851214385LL;
v2 = (_QWORD *)sub_1800EDBF4(0x1000uLL);
sub_1800F05A0(v2, 0x1000uLL);
v3 = sub_1800E0B84((__int64)qword_1801117A0, 1u, v2, 0LL);
v4 = (unsigned int)((char *)sub_1800E0B84((__int64)qword_1801117C8, 1u, v3, 0LL) - (_DWORD)v2);
if ( v4 >= 0x1000 )
{
v17 = 1376LL;
goto LABEL_14;
}
sub_1800EC16C(v1, "apcie-common-tunables", v2, v4);
v8 = 0LL;
v9 = &dword_180111748;
v10 = &dword_1801116E8;
while ( v8 < 4 )
{
sub_1800EFC74(&v19, 0x10uLL, 0LL, 0x10uLL, (__int64)"pci-bridge%d", v5, v6, v7, v8);
if ( (unsigned int)sub_1800EBDF4(v1, &v19, &v18) )
{
sub_1800F05A0(v2, 0x1000uLL);
v11 = (unsigned int)((char *)sub_1800E0B84(*((_QWORD *)v9 - 1), *v9, v2, *((_QWORD *)v9 + 1)) - (_DWORD)v2);
if ( v11 >= 0x1000 )
{
v17 = 1399LL;
goto LABEL_14;
}
sub_1800EC16C(v18, "apcie-config-tunables", v2, v11);
sub_1800EFC74(&v19, 0x10uLL, 0LL, 0x10uLL, (__int64)"pcie-rc%d", v12, v13, v14, v8);
sub_1800F05A0(v2, 0x1000uLL);
v15 = (unsigned int)((char *)sub_1800E0B84(*((_QWORD *)v10 - 1), *v10, v2, *((_QWORD *)v10 + 1)) - (_DWORD)v2);
if ( v15 >= 0x1000 )
{
v17 = 1412LL;
goto LABEL_14;
}
sub_1800EC16C(v18, "pcie-rc-tunables", v2, v15);
}
++v8;
v9 += 6;
v10 += 6;
}
sub_1800F05A0(v2, 0x1000uLL);
v16 = (unsigned int)((char *)sub_1800E0B84((__int64)qword_180111628, 1u, v2, 25769836544LL) - (_DWORD)v2);
if ( v16 > 0xFFF )
{
v17 = 1429LL;
LABEL_14:
sub_1800D489C("%llx:%d", &byte_180101040, -8379977398048039662LL, v17);
}
sub_1800EC16C(v1, "phy-params", v2, v16);
sub_1800EE010(v2);
if ( 5139240511851214385LL != v20 )
sub_1800D4A5C();
}
// 180101040: using guessed type char byte_180101040;
// 180111628: using guessed type __int64 qword_180111628[5];
// 1801116E8: using guessed type int dword_1801116E8;
// 180111748: using guessed type int dword_180111748;
// 1801117A0: using guessed type __int64 qword_1801117A0[5];
// 1801117C8: using guessed type __int64 qword_1801117C8[5];
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800C8468) ----------------------------------------------------
__int64 __fastcall sub_1800C8468(__int64 result)
{
return (unsigned int)result;
}
//----- (00000001800C8470) ----------------------------------------------------
signed __int64 __fastcall sub_1800C8470(unsigned __int64 a1, __int64 a2)
{
__int64 v2; // x29
__int64 v3; // x30
unsigned __int64 v4; // x8
bool v5; // cf
bool v6; // zf
if ( a1 >> 32
|| ((v4 = a2 + a1, (a2 + a1) >> 25 <= 0x60) ? (v5 = v4 >= a1, v6 = v4 == a1) : (v5 = 0, v6 = 0), v6 || !v5) )
{
sub_1800D489C("%llx:%d", &byte_180101040, -8379977398048039662LL, 1487LL, v2, v3);
}
return a1 & 0x1FFFFFF | 0x7C0000000LL;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C84D4) ----------------------------------------------------
bool sub_1800C84D4()
{
return (unsigned int)sub_1800B8990() > 6;
}
//----- (00000001800C84F0) ----------------------------------------------------
__int64 sub_1800C84F0()
{
return MEMORY[0x2102BC000] & 1;
}
//----- (00000001800C8520) ----------------------------------------------------
void sub_1800C8520()
{
MEMORY[0x2102BC000] &= 0xFFFFFFFE;
}
//----- (00000001800C853C) ----------------------------------------------------
__int64 sub_1800C853C()
{
return (MEMORY[0x2102BC200] >> 1) & 1;
}
//----- (00000001800C8554) ----------------------------------------------------
__int64 sub_1800C8554()
{
return (MEMORY[0x2102BC000] >> 2) & 3;
}
//----- (00000001800C856C) ----------------------------------------------------
__int64 sub_1800C856C()
{
return (MEMORY[0x2102BC000] >> 4) & 7;
}
//----- (00000001800C8584) ----------------------------------------------------
__int64 sub_1800C8584()
{
return (unsigned __int16)(MEMORY[0x2102BC000] >> 9);
}
//----- (00000001800C859C) ----------------------------------------------------
signed __int64 sub_1800C859C()
{
return 32784LL;
}
//----- (00000001800C85A4) ----------------------------------------------------
__int64 sub_1800C85A4()
{
return (MEMORY[0x2102BC010] >> 21) & 0x70 | (MEMORY[0x2102BC010] >> 22) & 7u;
}
//----- (00000001800C85C4) ----------------------------------------------------
unsigned __int64 sub_1800C85C4()
{
return MEMORY[0x2102BC080] | ((unsigned __int64)MEMORY[0x2102BC084] << 32);
}
//----- (00000001800C85E0) ----------------------------------------------------
unsigned __int64 sub_1800C85E0()
{
return MEMORY[0x2102BC080] | ((unsigned __int64)MEMORY[0x2102BC084] << 32);
}
//----- (00000001800C85FC) ----------------------------------------------------
__int64 sub_1800C85FC()
{
return (unsigned int)(MEMORY[0x2102BC004] >> 31);
}
//----- (00000001800C8614) ----------------------------------------------------
__int64 __fastcall sub_1800C8614(__int64 result)
{
__int64 v1; // x29
__int64 v2; // x30
if ( (_DWORD)result )
{
MEMORY[0x2102BC004] |= 0x80000000;
__dsb(0xFu);
if ( !(MEMORY[0x2102BC004] & 0x80000000) )
sub_1800D489C("%llx:%d", &byte_180101040, -9100884660523287136LL, 132LL, v1, v2);
}
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C8678) ----------------------------------------------------
__int64 sub_1800C8678()
{
return (MEMORY[0x2102BC004] >> 29) & 1;
}
//----- (00000001800C8690) ----------------------------------------------------
__int64 sub_1800C8690()
{
return MEMORY[0x2102BC010] & 0x1F;
}
//----- (00000001800C86A8) ----------------------------------------------------
__int64 sub_1800C86A8()
{
return 0LL;
}
//----- (00000001800C86B0) ----------------------------------------------------
__int64 __fastcall sub_1800C86B0(int a1)
{
__int64 v1; // x29
__int64 v2; // x30
if ( a1 == 2 )
return MEMORY[0x2102BC00C] & 0x7FF;
if ( a1 == 1 )
return (unsigned int)(MEMORY[0x2102BC008] >> 21);
if ( a1 )
sub_1800D489C("%llx:%d", &byte_180101040, -9100884660523287136LL, 214LL, v1, v2);
return (MEMORY[0x2102BC008] >> 10) & 0x7FF;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C8744) ----------------------------------------------------
__int64 __fastcall sub_1800C8744(int a1)
{
_DWORD *v1; // x19
__int64 v2; // x2
__int64 v3; // x3
__int64 v4; // x4
__int64 v5; // x5
__int64 v6; // x6
__int64 v7; // x7
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
__int64 v14; // x2
__int64 v15; // x3
__int64 v16; // x4
__int64 v17; // x5
__int64 v18; // x6
__int64 v19; // x7
if ( a1 )
sub_1800D489C("%llx:%d", &byte_180101040, 8310486055969749394LL, 35LL);
sub_1800D39CC(63LL, 1);
sub_1800D39CC(64LL, 1);
sub_1800D39CC(65LL, 1);
sub_1800D39CC(66LL, 1);
sub_1800D39CC(62LL, 1);
sub_1800B62F8(0LL);
v1 = (_DWORD *)sub_1800B6010();
if ( sub_1800E0D14() && *v1 == 1 && v1[1] == 5 && v1[2] == 1 )
{
sub_1800B797C(0xF4240u, 0LL, v2, v3, v4, v5, v6, v7);
sub_1800B70E4(8842903568LL, 0LL, v8, v9, v10, v11, v12, v13);
sub_1800B70E4(8842903572LL, 0LL, v14, v15, v16, v17, v18, v19);
}
return 0LL;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800C8850) ----------------------------------------------------
_DWORD *sub_1800C8850()
{
_DWORD *result; // x0
_DWORD *v1; // x19
__int64 v2; // x2
__int64 v3; // x3
__int64 v4; // x4
__int64 v5; // x5
__int64 v6; // x6
__int64 v7; // x7
__int64 v8; // x24
__int64 v9; // x22
__int64 v10; // x21
__int64 v11; // x2
__int64 v12; // x3
__int64 v13; // x4
__int64 v14; // x5
__int64 v15; // x6
__int64 v16; // x7
__int64 v17; // x2
__int64 v18; // x3
__int64 v19; // x4
__int64 v20; // x5
__int64 v21; // x6
__int64 v22; // x7
__int64 v23; // x2
__int64 v24; // x3
__int64 v25; // x4
__int64 v26; // x5
__int64 v27; // x6
__int64 v28; // x7
__int64 v29; // x2
__int64 v30; // x3
__int64 v31; // x4
__int64 v32; // x5
__int64 v33; // x6
__int64 v34; // x7
__int64 v35; // x2
__int64 v36; // x3
__int64 v37; // x4
__int64 v38; // x5
__int64 v39; // x6
__int64 v40; // x7
__int64 v41; // x2
__int64 v42; // x3
__int64 v43; // x4
__int64 v44; // x5
__int64 v45; // x6
__int64 v46; // x7
__int64 v47; // x2
__int64 v48; // x3
__int64 v49; // x4
__int64 v50; // x5
__int64 v51; // x6
__int64 v52; // x7
__int64 v53; // x2
__int64 v54; // x3
__int64 v55; // x4
__int64 v56; // x5
__int64 v57; // x6
__int64 v58; // x7
__int64 v59; // x2
__int64 v60; // x3
__int64 v61; // x4
__int64 v62; // x5
__int64 v63; // x6
__int64 v64; // x7
__int64 v65; // x2
__int64 v66; // x3
__int64 v67; // x4
__int64 v68; // x5
__int64 v69; // x6
__int64 v70; // x7
__int64 v71; // x2
__int64 v72; // x3
__int64 v73; // x4
__int64 v74; // x5
__int64 v75; // x6
__int64 v76; // x7
__int64 v77; // x2
__int64 v78; // x3
__int64 v79; // x4
__int64 v80; // x5
__int64 v81; // x6
__int64 v82; // x7
__int64 v83; // x2
__int64 v84; // x3
__int64 v85; // x4
__int64 v86; // x5
__int64 v87; // x6
__int64 v88; // x7
__int64 v89; // x2
__int64 v90; // x3
__int64 v91; // x4
__int64 v92; // x5
__int64 v93; // x6
__int64 v94; // x7
__int64 v95; // x2
__int64 v96; // x3
__int64 v97; // x4
__int64 v98; // x5
__int64 v99; // x6
__int64 v100; // x7
__int64 v101; // x2
__int64 v102; // x3
__int64 v103; // x4
__int64 v104; // x5
__int64 v105; // x6
__int64 v106; // x7
__int64 v107; // x2
__int64 v108; // x3
__int64 v109; // x4
__int64 v110; // x5
__int64 v111; // x6
__int64 v112; // x7
__int64 v113; // x2
__int64 v114; // x3
__int64 v115; // x4
__int64 v116; // x5
__int64 v117; // x6
__int64 v118; // x7
__int64 v119; // x2
__int64 v120; // x3
__int64 v121; // x4
__int64 v122; // x5
__int64 v123; // x6
__int64 v124; // x7
__int64 v125; // x2
__int64 v126; // x3
__int64 v127; // x4
__int64 v128; // x5
__int64 v129; // x6
__int64 v130; // x7
__int64 v131; // x2
__int64 v132; // x3
__int64 v133; // x4
__int64 v134; // x5
__int64 v135; // x6
__int64 v136; // x7
__int64 v137; // x2
__int64 v138; // x3
__int64 v139; // x4
__int64 v140; // x5
__int64 v141; // x6
__int64 v142; // x7
__int64 v143; // x2
__int64 v144; // x3
__int64 v145; // x4
__int64 v146; // x5
__int64 v147; // x6
__int64 v148; // x7
__int64 v149; // x2
__int64 v150; // x3
__int64 v151; // x4
__int64 v152; // x5
__int64 v153; // x6
__int64 v154; // x7
__int64 v155; // x2
__int64 v156; // x3
__int64 v157; // x4
__int64 v158; // x5
__int64 v159; // x6
__int64 v160; // x7
__int64 v161; // x2
__int64 v162; // x3
__int64 v163; // x4
__int64 v164; // x5
__int64 v165; // x6
__int64 v166; // x7
__int64 v167; // x2
__int64 v168; // x3
__int64 v169; // x4
__int64 v170; // x5
__int64 v171; // x6
__int64 v172; // x7
__int64 v173; // x2
__int64 v174; // x3
__int64 v175; // x4
__int64 v176; // x5
__int64 v177; // x6
__int64 v178; // x7
__int64 v179; // x2
__int64 v180; // x3
__int64 v181; // x4
__int64 v182; // x5
__int64 v183; // x6
__int64 v184; // x7
__int64 v185; // x2
__int64 v186; // x3
__int64 v187; // x4
__int64 v188; // x5
__int64 v189; // x6
__int64 v190; // x7
result = (_DWORD *)sub_1800B6010();
v1 = result;
if ( *result == 1 )
{
if ( result[5] == 3 && result[1] == 5 && result[2] <= 1u )
{
result = (_DWORD *)sub_1800D61EC();
if ( (_DWORD)result )
{
v8 = MEMORY[0x20F140090];
v9 = MEMORY[0x20F140010];
v10 = MEMORY[0x20F140014];
sub_1800B70E4(8842903696LL, 75LL, v2, v3, v4, v5, v6, v7);
sub_1800B70E4(8842903568LL, 0LL, v11, v12, v13, v14, v15, v16);
sub_1800B70E4(8842903572LL, 0LL, v17, v18, v19, v20, v21, v22);
sub_1800B75EC(1, 4LL, 1, 9, (_BYTE *)0x20);
sub_1800B75EC(1, 4LL, 1, 9, (_BYTE *)0x20);
sub_1800B75EC(1, 4LL, 1, 9, (_BYTE *)0x20);
sub_1800B75EC(1, 4LL, 1, 9, (_BYTE *)0xFF);
sub_1800B716C(8592032836LL, 262400LL, v23, v24, v25, v26, v27, v28);
sub_1800B75EC(1, 4LL, 1, 9, 0LL);
sub_1800B716C(8592032836LL, 256LL, v29, v30, v31, v32, v33, v34);
sub_1800B75EC(1, 4LL, 1, 9, (_BYTE *)0x80);
sub_1800B716C(8592032836LL, 256LL, v35, v36, v37, v38, v39, v40);
sub_1800B75EC(1, 4LL, 1, 9, (_BYTE *)0x20);
sub_1800B716C(8592032836LL, 256LL, v41, v42, v43, v44, v45, v46);
sub_1800B75EC(1, 4LL, 1, 9, 0LL);
sub_1800B716C(8592032836LL, 256LL, v47, v48, v49, v50, v51, v52);
sub_1800B75EC(1, 4LL, 1, 9, 0LL);
sub_1800B716C(8592032836LL, 262400LL, v53, v54, v55, v56, v57, v58);
sub_1800B75EC(1, 4LL, 1, 9, 0LL);
sub_1800B716C(8592032836LL, 256LL, v59, v60, v61, v62, v63, v64);
sub_1800B75EC(1, 4LL, 1, 9, (_BYTE *)0x80);
sub_1800B716C(8592032836LL, 131328LL, v65, v66, v67, v68, v69, v70);
sub_1800B75EC(1, 4LL, 1, 9, 0LL);
sub_1800B716C(8592032836LL, 256LL, v71, v72, v73, v74, v75, v76);
sub_1800B75EC(1, 4LL, 1, 9, 0LL);
sub_1800B716C(8592032836LL, 256LL, v77, v78, v79, v80, v81, v82);
sub_1800B75EC(1, 4LL, 1, 9, 0LL);
sub_1800B716C(8592032836LL, 256LL, v83, v84, v85, v86, v87, v88);
sub_1800B75EC(1, 4LL, 1, 9, (_BYTE *)4);
sub_1800B716C(8592032836LL, 256LL, v89, v90, v91, v92, v93, v94);
sub_1800B75EC(1, 4LL, 1, 9, (_BYTE *)0x20);
sub_1800B716C(8592032836LL, 262400LL, v95, v96, v97, v98, v99, v100);
sub_1800B75EC(1, 4LL, 1, 9, 0LL);
sub_1800B716C(8592032836LL, 256LL, v101, v102, v103, v104, v105, v106);
sub_1800B75EC(1, 4LL, 1, 9, 0LL);
sub_1800B716C(8592032836LL, 256LL, v107, v108, v109, v110, v111, v112);
sub_1800B75EC(1, 4LL, 1, 9, 0LL);
sub_1800B70E4(8842903696LL, v8, v113, v114, v115, v116, v117, v118);
sub_1800B70E4(8842903568LL, v9, v119, v120, v121, v122, v123, v124);
result = (_DWORD *)sub_1800B70E4(8842903572LL, v10, v125, v126, v127, v128, v129, v130);
}
}
if ( v1[1] == 5 && !v1[2] )
{
sub_1800B75EC(1, 4LL, 1, 9, (_BYTE *)0x20);
sub_1800B75EC(1, 4LL, 1, 9, (_BYTE *)0x20);
sub_1800B75EC(1, 4LL, 1, 9, (_BYTE *)0x20);
sub_1800B75EC(1, 4LL, 1, 9, (_BYTE *)0xFF);
sub_1800B716C(8592032836LL, 262400LL, v131, v132, v133, v134, v135, v136);
sub_1800B75EC(1, 4LL, 1, 9, 0LL);
sub_1800B716C(8592032836LL, 256LL, v137, v138, v139, v140, v141, v142);
sub_1800B75EC(1, 4LL, 1, 9, (_BYTE *)4);
sub_1800B716C(8592032836LL, 256LL, v143, v144, v145, v146, v147, v148);
sub_1800B75EC(1, 4LL, 1, 9, (_BYTE *)0x40);
sub_1800B716C(8592032836LL, 256LL, v149, v150, v151, v152, v153, v154);
sub_1800B75EC(1, 4LL, 1, 9, 0LL);
sub_1800B716C(8592032836LL, 256LL, v155, v156, v157, v158, v159, v160);
sub_1800B75EC(1, 4LL, 1, 9, 0LL);
sub_1800B716C(8592032836LL, 256LL, v161, v162, v163, v164, v165, v166);
sub_1800B75EC(1, 4LL, 1, 9, (_BYTE *)4);
sub_1800B716C(8592032836LL, 256LL, v167, v168, v169, v170, v171, v172);
sub_1800B75EC(1, 4LL, 1, 9, (_BYTE *)0x20);
sub_1800B716C(8592032836LL, 262400LL, v173, v174, v175, v176, v177, v178);
sub_1800B75EC(1, 4LL, 1, 9, 0LL);
sub_1800B716C(8592032836LL, 256LL, v179, v180, v181, v182, v183, v184);
sub_1800B75EC(1, 4LL, 1, 9, 0LL);
sub_1800B716C(8592032836LL, 256LL, v185, v186, v187, v188, v189, v190);
result = (_DWORD *)sub_1800B75EC(1, 4LL, 1, 9, 0LL);
}
}
return result;
}
//----- (00000001800C8E8C) ----------------------------------------------------
_DWORD *sub_1800C8E8C()
{
_DWORD *result; // x0
__int64 v1; // x2
__int64 v2; // x3
__int64 v3; // x4
__int64 v4; // x5
__int64 v5; // x6
__int64 v6; // x7
__int64 v7; // x2
__int64 v8; // x3
__int64 v9; // x4
__int64 v10; // x5
__int64 v11; // x6
__int64 v12; // x7
__int64 v13; // x2
__int64 v14; // x3
__int64 v15; // x4
__int64 v16; // x5
__int64 v17; // x6
__int64 v18; // x7
result = (_DWORD *)sub_1800B6010();
if ( *result == 1 && result[1] == 5 && result[2] == 1 )
{
sub_1800B75EC(1, 4LL, 1, 11, (_BYTE *)0x34);
sub_1800B75EC(2, 4LL, 1, 0, (_BYTE *)0x4F);
sub_1800B797C(1u, (__int64)"Workaround-Samsung--step-12-tzQCAL", v1, v2, v3, v4, v5, v6);
sub_1800B75EC(2, 4LL, 1, 0, (_BYTE *)0x51);
sub_1800B797C(1u, (__int64)"Workaround-Samsung--step-12-tZQLAT", v7, v8, v9, v10, v11, v12);
result = (_DWORD *)sub_1800B716C(8592032860LL, 3003331595LL, v13, v14, v15, v16, v17, v18);
}
return result;
}
//----- (00000001800C8F48) ----------------------------------------------------
__int64 *__fastcall sub_1800C8F48(_DWORD *a1)
{
if ( a1 )
*a1 = 68;
return &qword_18010D1B0;
}
// 18010D1B0: using guessed type __int64 qword_18010D1B0;
//----- (00000001800C8F60) ----------------------------------------------------
void sub_1800C8F60()
{
unsigned int v0; // w21
unsigned int *v1; // x19
unsigned __int64 *i; // x22
bool v3; // w0
__int64 v4; // x20
__int64 j; // x23
v0 = 0;
v1 = 0LL;
for ( i = (unsigned __int64 *)&qword_18010D1B0; v0 <= 0x43 && *i; i += 2 )
{
if ( (unsigned int *)*i != v1 )
{
v1 = (unsigned int *)*i;
v3 = sub_1800B74D4(*i);
v4 = *v1;
if ( v3 )
{
sub_1800BA5EC((signed __int64 *)7, (unsigned __int64)v1, *v1, 0);
}
else
{
for ( j = 0LL; j != 0x40000; j += 0x10000LL )
sub_1800BA5EC((signed __int64 *)7, (unsigned __int64)&v1[j], v4, 0);
}
}
++v0;
}
}
// 18010D1B0: using guessed type __int64 qword_18010D1B0;
//----- (00000001800C9014) ----------------------------------------------------
_DWORD *__fastcall sub_1800C9014(_DWORD *result, int a2)
{
_DWORD *v2; // x9
__int64 v3; // x11
signed __int64 v4; // x9
_DWORD *v5; // x13
__int64 v6; // x14
_DWORD *v7; // x15
__int64 v8; // x9
_DWORD *v9; // x12
__int64 v10; // x9
_DWORD *v11; // x10
__int64 v12; // x10
_DWORD *v13; // x12
__int64 v14; // x10
_DWORD *v15; // x12
__int64 v16; // x10
_DWORD *v17; // x12
__int64 v18; // x10
_DWORD *v19; // x12
__int64 v20; // x10
_DWORD *v21; // x12
__int64 v22; // x10
_DWORD *v23; // x12
__int64 v24; // x10
_DWORD *v25; // x12
__int64 v26; // x10
_DWORD *v27; // x11
_DWORD *v28; // x9
_DWORD *v29; // x12
__int64 v30; // x11
_DWORD *v31; // x12
__int64 v32; // x8
_DWORD *v33; // x12
__int64 v34; // x8
_DWORD *v35; // x12
__int64 v36; // x8
_DWORD *v37; // x12
__int64 v38; // x8
_DWORD *v39; // x11
signed __int64 v40; // x12
__int64 v41; // x13
_DWORD *v42; // x14
__int64 v43; // x8
_DWORD *v44; // x12
__int64 v45; // x8
_DWORD *v46; // x10
__int64 v47; // x8
_DWORD *v48; // x10
_DWORD *v49; // x11
__int64 v50; // x8
_DWORD *v51; // x10
_DWORD *v52; // x11
__int64 v53; // x8
_DWORD *v54; // x10
_DWORD *v55; // x11
__int64 v56; // x8
_DWORD *v57; // x10
if ( a2 )
{
v2 = (_DWORD *)8592196036LL;
if ( a2 == 2 )
{
v30 = 0LL;
*result = MEMORY[0x2000004C8];
result[1] = MEMORY[0x2000004A4];
v31 = (_DWORD *)8592164608LL;
while ( v30 != 4 )
{
result[v30 + 2] = *v31;
++v30;
v31 += 0x10000;
}
v32 = 0LL;
v33 = (_DWORD *)8592164616LL;
while ( v32 != 4 )
{
result[v32 + 6] = *v33;
++v32;
v33 += 0x10000;
}
v34 = 0LL;
v35 = (_DWORD *)8592164624LL;
while ( v34 != 4 )
{
result[v34 + 10] = *v35;
++v34;
v35 += 0x10000;
}
v36 = 0LL;
v37 = (_DWORD *)8592164864LL;
while ( v36 != 4 )
{
result[v36 + 14] = *v37;
++v36;
v37 += 0x10000;
}
v38 = 0LL;
v39 = result + 18;
v40 = 8592164096LL;
while ( v38 != 6 )
{
v41 = 0LL;
v42 = (_DWORD *)v40;
while ( v41 != 4 )
{
v39[v41] = *v42;
++v41;
v42 += 0x10000;
}
v39 += 4;
++v38;
v40 += 4LL;
}
v43 = 0LL;
v44 = (_DWORD *)8592164120LL;
while ( v43 != 4 )
{
result[v43 + 42] = *v44;
++v43;
v44 += 0x10000;
}
v45 = 0LL;
v46 = (_DWORD *)8592164124LL;
while ( v45 != 4 )
{
result[v45 + 46] = *v46;
++v45;
v46 += 0x10000;
}
v47 = 0LL;
v48 = result + 50;
v49 = (_DWORD *)8592197380LL;
while ( v47 != 8 )
{
v48[v47] = *v49;
v48[v47 + 1] = v49[0x2000];
v47 += 2LL;
v49 += 0x10000;
}
v50 = 0LL;
v51 = result + 58;
v52 = (_DWORD *)8592196040LL;
while ( v50 != 8 )
{
v51[v50] = *v52;
v51[v50 + 1] = v52[0x2000];
v50 += 2LL;
v52 += 0x10000;
}
v53 = 0LL;
v54 = result + 66;
v55 = (_DWORD *)8592196044LL;
while ( v53 != 8 )
{
v54[v53] = *v55;
v54[v53 + 1] = v55[0x2000];
v53 += 2LL;
v55 += 0x10000;
}
v56 = 0LL;
v57 = result + 74;
while ( v56 != 8 )
{
v57[v56] = *v2;
v57[v56 + 1] = v2[0x2000];
v56 += 2LL;
v2 += 0x10000;
}
result += 82;
}
else if ( a2 == 1 )
{
v3 = 0LL;
v4 = 8592198400LL;
v5 = result;
while ( v3 != 4 )
{
v6 = 0LL;
v7 = (_DWORD *)v4;
while ( v6 != 8 )
{
v5[v6] = *v7;
v5[v6 + 1] = v7[0x2000];
v6 += 2LL;
v7 += 0x10000;
}
v5 += 8;
++v3;
v4 += 4LL;
}
v8 = 0LL;
v9 = (_DWORD *)8592166692LL;
while ( v8 != 4 )
{
result[v8 + 32] = *v9;
++v8;
v9 += 0x10000;
}
v10 = 0LL;
v11 = (_DWORD *)8592166684LL;
while ( v10 != 4 )
{
result[v10 + 36] = *v11;
++v10;
v11 += 0x10000;
}
v12 = 0LL;
v13 = (_DWORD *)8592032856LL;
while ( v12 != 4 )
{
result[v12 + 40] = *v13;
++v12;
v13 += 0x10000;
}
v14 = 0LL;
v15 = (_DWORD *)8592032880LL;
while ( v14 != 4 )
{
result[v14 + 44] = *v15;
++v14;
v15 += 0x10000;
}
v16 = 0LL;
v17 = (_DWORD *)8592032860LL;
while ( v16 != 4 )
{
result[v16 + 48] = *v17;
++v16;
v17 += 0x10000;
}
v18 = 0LL;
v19 = (_DWORD *)8592032624LL;
while ( v18 != 4 )
{
result[v18 + 52] = *v19;
++v18;
v19 += 0x10000;
}
v20 = 0LL;
v21 = (_DWORD *)8592032640LL;
while ( v20 != 4 )
{
result[v20 + 56] = *v21;
++v20;
v21 += 0x10000;
}
v22 = 0LL;
v23 = (_DWORD *)8592032628LL;
while ( v22 != 4 )
{
result[v22 + 60] = *v23;
++v22;
v23 += 0x10000;
}
v24 = 0LL;
v25 = (_DWORD *)8592032644LL;
while ( v24 != 4 )
{
result[v24 + 64] = *v25;
++v24;
v25 += 0x10000;
}
v26 = 0LL;
v27 = result + 68;
v28 = (_DWORD *)8592033796LL;
while ( v26 != 16 )
{
v29 = &v27[v26];
v27[v26] = *v28;
v29[1] = v28[1];
v29[2] = v28[2];
v29[3] = v28[3];
v26 += 4LL;
v28 += 0x10000;
}
result[84] = MEMORY[0x200000184];
result[85] = MEMORY[0x20000018C];
result[86] = MEMORY[0x200000264];
result[87] = MEMORY[0x20000026C];
result[88] = MEMORY[0x200000324];
result[89] = MEMORY[0x20000032C];
result[90] = MEMORY[0x200000404];
result[91] = MEMORY[0x20000040C];
result[92] = MEMORY[0x200000188];
result[93] = MEMORY[0x200000190];
result[94] = MEMORY[0x200000268];
result[95] = MEMORY[0x200000270];
result[96] = MEMORY[0x200000328];
result[97] = MEMORY[0x200000330];
result[98] = MEMORY[0x200000408];
result[99] = MEMORY[0x200000410];
result += 100;
}
}
else
{
*result = MEMORY[0x20F140018];
result[1] = MEMORY[0x20F140038];
result[2] = MEMORY[0x20F14002C];
result[3] = MEMORY[0x20F140030];
result += 4;
}
return result;
}
//----- (00000001800C9550) ----------------------------------------------------
signed __int64 *__fastcall sub_1800C9550(unsigned int *a1)
{
unsigned int *v1; // x19
v1 = a1;
sub_1800BA5EC((signed __int64 *)5, 0x2000004C8uLL, *a1, 0);
return sub_1800BA5EC((signed __int64 *)5, 0x2000004A4uLL, v1[1], 0);
}
//----- (00000001800C959C) ----------------------------------------------------
signed __int64 *__fastcall sub_1800C959C(unsigned int *a1)
{
unsigned int *v1; // x19
__int64 v2; // x23
unsigned __int64 v3; // x20
unsigned __int64 v4; // x21
__int64 v5; // x23
unsigned __int64 v6; // x21
__int64 v7; // x23
unsigned __int64 v8; // x21
__int64 v9; // x21
__int64 v10; // x20
signed __int64 v11; // x21
__int64 v12; // x23
signed __int64 v13; // x24
__int64 v14; // x25
unsigned __int64 v15; // x20
__int64 v16; // x21
unsigned __int64 v17; // x20
__int64 v18; // x21
unsigned __int64 v19; // x20
__int64 v20; // x23
signed __int64 v21; // x24
signed __int64 v22; // x25
__int64 v23; // x26
unsigned __int64 v24; // x20
__int64 v25; // x23
signed __int64 v26; // x24
signed __int64 v27; // x25
__int64 v28; // x26
unsigned __int64 v29; // x20
__int64 v30; // x23
signed __int64 v31; // x24
signed __int64 v32; // x25
__int64 v33; // x26
unsigned __int64 v34; // x20
__int64 v35; // x23
signed __int64 v36; // x24
signed __int64 v37; // x25
__int64 v38; // x26
unsigned __int64 v39; // x20
__int64 v40; // x23
signed __int64 v41; // x24
signed __int64 v42; // x21
__int64 v43; // x25
unsigned __int64 v44; // x20
__int64 v45; // x21
unsigned __int64 v46; // x20
__int64 v47; // x21
unsigned __int64 v48; // x20
__int64 v49; // x22
unsigned __int64 v50; // x20
__int64 v51; // x22
unsigned __int64 v52; // x20
__int64 v53; // x22
unsigned __int64 v54; // x20
__int64 v55; // x22
unsigned __int64 v56; // x20
__int64 v57; // x22
unsigned __int64 v58; // x20
__int64 v59; // x22
unsigned __int64 v60; // x20
__int64 v61; // x22
unsigned __int64 v62; // x20
__int64 v63; // x22
signed __int64 v64; // x23
unsigned __int64 i; // x20
unsigned int *v66; // x21
__int64 v67; // x2
v1 = a1;
v2 = 0LL;
v3 = 8592164864LL;
v4 = 8592164608LL;
while ( v2 != 4 )
{
sub_1800BA5EC((signed __int64 *)7, v4, v1[v2] & 0xFF0000 | 4, 0);
++v2;
v4 += 0x40000LL;
}
v5 = 0LL;
v6 = 8592164616LL;
while ( v5 != 4 )
{
sub_1800BA5EC((signed __int64 *)7, v6, v1[v5 + 4] & 0xFF0000 | 4, 0);
++v5;
v6 += 0x40000LL;
}
v7 = 0LL;
v8 = 8592164624LL;
while ( v7 != 4 )
{
sub_1800BA5EC((signed __int64 *)7, v8, v1[v7 + 8] & 0xFF0000 | 4, 0);
++v7;
v8 += 0x40000LL;
}
v9 = 0LL;
while ( v9 != 4 )
{
sub_1800BA5EC((signed __int64 *)7, v3, v1[v9 + 12] & 0xFF | 0x200, 0);
++v9;
v3 += 0x40000LL;
}
v10 = 0LL;
v11 = (signed __int64)(v1 + 16);
while ( v10 != 0x100000 )
{
sub_1800BA890((signed __int64 *)7, v10 + 8592164864LL, 0LL, 512LL, 255, 0);
v10 += 0x40000LL;
}
v12 = 0LL;
v13 = 8592164096LL;
while ( v12 != 6 )
{
v14 = 0LL;
v15 = v13;
while ( v14 != 16 )
{
sub_1800BA5EC((signed __int64 *)7, v15, *(_DWORD *)(v11 + v14) & 0x3F | 0x100u, 0);
v14 += 4LL;
v15 += 0x40000LL;
}
v11 += 16LL;
++v12;
v13 += 4LL;
}
v16 = 0LL;
v17 = 8592164120LL;
while ( v16 != 4 )
{
sub_1800BA5EC((signed __int64 *)7, v17, v1[v16 + 40] & 0x3F | 0x100, 0);
++v16;
v17 += 0x40000LL;
}
v18 = 0LL;
v19 = 8592164124LL;
while ( v18 != 4 )
{
sub_1800BA5EC((signed __int64 *)7, v19, v1[v18 + 44] & 0x3F | 0x100, 0);
++v18;
v19 += 0x40000LL;
}
v20 = 0LL;
v21 = (signed __int64)(v1 + 48);
v22 = 8592197380LL;
while ( v20 != 4 )
{
v23 = 0LL;
v24 = v22;
while ( v23 != 8 )
{
sub_1800BA5EC((signed __int64 *)7, v24, *(_DWORD *)(v21 + v23) & 0xFF | 0x200u, 0);
v23 += 4LL;
v24 += 0x8000LL;
}
v21 += 8LL;
++v20;
v22 += 0x40000LL;
}
v25 = 0LL;
v26 = (signed __int64)(v1 + 56);
v27 = 8592196040LL;
while ( v25 != 4 )
{
v28 = 0LL;
v29 = v27;
while ( v28 != 8 )
{
sub_1800BA5EC((signed __int64 *)7, v29, ((*(_DWORD *)(v26 + v28) & 0x3FF) << 16) | 0x10000000u, 0);
v28 += 4LL;
v29 += 0x8000LL;
}
v26 += 8LL;
++v25;
v27 += 0x40000LL;
}
v30 = 0LL;
v31 = (signed __int64)(v1 + 64);
v32 = 8592196044LL;
while ( v30 != 4 )
{
v33 = 0LL;
v34 = v32;
while ( v33 != 8 )
{
sub_1800BA5EC((signed __int64 *)7, v34, ((*(_DWORD *)(v31 + v33) & 0x3FF) << 16) | 0x10000000u, 0);
v33 += 4LL;
v34 += 0x8000LL;
}
v31 += 8LL;
++v30;
v32 += 0x40000LL;
}
v35 = 0LL;
v36 = (signed __int64)(v1 + 72);
v37 = 8592196036LL;
while ( v35 != 4 )
{
v38 = 0LL;
v39 = v37;
while ( v38 != 8 )
{
sub_1800BA5EC((signed __int64 *)7, v39, ((*(_DWORD *)(v36 + v38) & 0x3FF) << 16) | 0x10000000u, 0);
v38 += 4LL;
v39 += 0x8000LL;
}
v36 += 8LL;
++v35;
v37 += 0x40000LL;
}
v40 = 0LL;
v41 = (signed __int64)(v1 + 80);
v42 = 8592198400LL;
while ( v40 != 4 )
{
v43 = 0LL;
v44 = v42;
while ( v43 != 32 )
{
sub_1800BA5EC((signed __int64 *)7, v44, *(unsigned int *)(v41 + v43), 0);
sub_1800BA5EC((signed __int64 *)7, v44 + 0x8000, *(unsigned int *)(v41 + v43 + 4), 0);
v43 += 8LL;
v44 += 0x40000LL;
}
v41 += 32LL;
++v40;
v42 += 4LL;
}
v45 = 0LL;
v46 = 8592166688LL;
while ( v45 != 4 )
{
sub_1800BA5EC((signed __int64 *)7, v46, v1[v45 + 112], 0);
++v45;
v46 += 0x40000LL;
}
v47 = 0LL;
v48 = 8592166680LL;
while ( v47 != 4 )
{
sub_1800BA5EC((signed __int64 *)7, v48, v1[v47 + 116], 0);
++v47;
v48 += 0x40000LL;
}
v49 = 0LL;
v50 = 8592032856LL;
while ( v49 != 4 )
{
sub_1800BA5EC((signed __int64 *)7, v50, v1[v49 + 120], 0);
++v49;
v50 += 0x40000LL;
}
v51 = 0LL;
v52 = 8592032880LL;
while ( v51 != 4 )
{
sub_1800BA5EC((signed __int64 *)7, v52, v1[v51 + 124], 0);
++v51;
v52 += 0x40000LL;
}
v53 = 0LL;
v54 = 8592032860LL;
while ( v53 != 4 )
{
sub_1800BA5EC((signed __int64 *)7, v54, v1[v53 + 128], 0);
++v53;
v54 += 0x40000LL;
}
v55 = 0LL;
v56 = 8592032624LL;
while ( v55 != 4 )
{
sub_1800BA5EC((signed __int64 *)7, v56, v1[v55 + 132], 0);
++v55;
v56 += 0x40000LL;
}
v57 = 0LL;
v58 = 8592032640LL;
while ( v57 != 4 )
{
sub_1800BA5EC((signed __int64 *)7, v58, v1[v57 + 136], 0);
++v57;
v58 += 0x40000LL;
}
v59 = 0LL;
v60 = 8592032628LL;
while ( v59 != 4 )
{
sub_1800BA5EC((signed __int64 *)7, v60, v1[v59 + 140], 0);
++v59;
v60 += 0x40000LL;
}
v61 = 0LL;
v62 = 8592032644LL;
while ( v61 != 4 )
{
sub_1800BA5EC((signed __int64 *)7, v62, v1[v61 + 144], 0);
++v61;
v62 += 0x40000LL;
}
v63 = 0LL;
v64 = (signed __int64)(v1 + 148);
for ( i = 8592033796LL; ; i += 0x40000LL )
{
v66 = (unsigned int *)(v64 + v63);
v67 = *(unsigned int *)(v64 + v63);
if ( v63 == 64 )
break;
sub_1800BA5EC((signed __int64 *)7, i, v67, 0);
sub_1800BA5EC((signed __int64 *)7, i + 4, v66[1], 0);
sub_1800BA5EC((signed __int64 *)7, i + 8, v66[2], 0);
sub_1800BA5EC((signed __int64 *)7, i + 12, v66[3], 0);
v63 += 16LL;
}
sub_1800BA5EC((signed __int64 *)7, 0x200000184uLL, v67, 0);
sub_1800BA5EC((signed __int64 *)7, 0x20000018CuLL, v1[165], 0);
sub_1800BA5EC((signed __int64 *)7, 0x200000264uLL, v1[166], 0);
sub_1800BA5EC((signed __int64 *)7, 0x20000026CuLL, v1[167], 0);
sub_1800BA5EC((signed __int64 *)7, 0x200000324uLL, v1[168], 0);
sub_1800BA5EC((signed __int64 *)7, 0x20000032CuLL, v1[169], 0);
sub_1800BA5EC((signed __int64 *)7, 0x200000404uLL, v1[170], 0);
sub_1800BA5EC((signed __int64 *)7, 0x20000040CuLL, v1[171], 0);
sub_1800BA5EC((signed __int64 *)7, 0x200000188uLL, v1[172], 0);
sub_1800BA5EC((signed __int64 *)7, 0x200000190uLL, v1[173], 0);
sub_1800BA5EC((signed __int64 *)7, 0x200000268uLL, v1[174], 0);
sub_1800BA5EC((signed __int64 *)7, 0x200000270uLL, v1[175], 0);
sub_1800BA5EC((signed __int64 *)7, 0x200000328uLL, v1[176], 0);
sub_1800BA5EC((signed __int64 *)7, 0x200000330uLL, v1[177], 0);
sub_1800BA5EC((signed __int64 *)7, 0x200000408uLL, v1[178], 0);
sub_1800BA5EC((signed __int64 *)7, 0x200000410uLL, v1[179], 0);
sub_1800BA5EC((signed __int64 *)7, 0x20F140018uLL, v1[180], 0);
sub_1800BA5EC((signed __int64 *)7, 0x20F140038uLL, v1[181], 0);
sub_1800BA5EC((signed __int64 *)7, 0x20F14002CuLL, v1[182], 0);
return sub_1800BA5EC((signed __int64 *)7, 0x20F140030uLL, v1[183], 0);
}
//----- (00000001800C9DC8) ----------------------------------------------------
__int64 __fastcall sub_1800C9DC8(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
__int64 v14; // x2
__int64 v15; // x3
__int64 v16; // x4
__int64 v17; // x5
__int64 v18; // x6
__int64 v19; // x7
__int64 v20; // x2
__int64 v21; // x3
__int64 v22; // x4
__int64 v23; // x5
__int64 v24; // x6
__int64 v25; // x7
sub_1800B716C(8592032788LL, 269484032LL, a3, a4, a5, a6, a7, a8);
sub_1800B716C(8592032784LL, 0x10000000LL, v8, v9, v10, v11, v12, v13);
sub_1800B716C(8592032780LL, 269549568LL, v14, v15, v16, v17, v18, v19);
return sub_1800B716C(8592032776LL, 269549883LL, v20, v21, v22, v23, v24, v25);
}
//----- (00000001800C9E2C) ----------------------------------------------------
__int64 sub_1800C9E2C()
{
__int64 v0; // x19
__int64 v1; // x2
__int64 v2; // x3
__int64 v3; // x4
__int64 v4; // x5
__int64 v5; // x6
__int64 v6; // x7
__int64 v7; // x2
__int64 v8; // x3
__int64 v9; // x4
__int64 v10; // x5
__int64 v11; // x6
__int64 v12; // x7
__int64 v13; // x2
__int64 v14; // x3
__int64 v15; // x4
__int64 v16; // x5
__int64 v17; // x6
__int64 v18; // x7
__int64 v19; // x2
__int64 v20; // x3
__int64 v21; // x4
__int64 v22; // x5
__int64 v23; // x6
__int64 v24; // x7
__int64 v25; // x2
__int64 v26; // x3
__int64 v27; // x4
__int64 v28; // x5
__int64 v29; // x6
__int64 v30; // x7
__int64 v31; // x2
__int64 v32; // x3
__int64 v33; // x4
__int64 v34; // x5
__int64 v35; // x6
__int64 v36; // x7
__int64 v37; // x2
__int64 v38; // x3
__int64 v39; // x4
__int64 v40; // x5
__int64 v41; // x6
__int64 v42; // x7
__int64 i; // x23
unsigned int v44; // w26
unsigned int v45; // w27
__int64 v46; // x2
__int64 v47; // x3
__int64 v48; // x4
__int64 v49; // x5
__int64 v50; // x6
__int64 v51; // x7
__int64 v52; // x2
__int64 v53; // x3
__int64 v54; // x4
__int64 v55; // x5
__int64 v56; // x6
__int64 v57; // x7
__int64 v58; // x2
__int64 v59; // x3
__int64 v60; // x4
__int64 v61; // x5
__int64 v62; // x6
__int64 v63; // x7
__int64 v64; // x2
__int64 v65; // x3
__int64 v66; // x4
__int64 v67; // x5
__int64 v68; // x6
__int64 v69; // x7
__int64 v70; // x2
__int64 v71; // x3
__int64 v72; // x4
__int64 v73; // x5
__int64 v74; // x6
__int64 v75; // x7
__int64 v76; // x2
__int64 v77; // x3
__int64 v78; // x4
__int64 v79; // x5
__int64 v80; // x6
__int64 v81; // x7
__int64 v82; // x2
__int64 v83; // x3
__int64 v84; // x4
__int64 v85; // x5
__int64 v86; // x6
__int64 v87; // x7
__int64 v88; // x2
__int64 v89; // x3
__int64 v90; // x4
__int64 v91; // x5
__int64 v92; // x6
__int64 v93; // x7
__int64 v94; // x2
__int64 v95; // x3
__int64 v96; // x4
__int64 v97; // x5
__int64 v98; // x6
__int64 v99; // x7
__int64 v100; // x2
__int64 v101; // x3
__int64 v102; // x4
__int64 v103; // x5
__int64 v104; // x6
__int64 v105; // x7
__int64 v106; // x2
__int64 v107; // x3
__int64 v108; // x4
__int64 v109; // x5
__int64 v110; // x6
__int64 v111; // x7
__int64 v112; // x2
__int64 v113; // x3
__int64 v114; // x4
__int64 v115; // x5
__int64 v116; // x6
__int64 v117; // x7
__int64 v118; // x23
__int64 v119; // x20
__int64 v120; // x20
int *v121; // x23
__int64 v122; // x2
__int64 v123; // x3
__int64 v124; // x4
__int64 v125; // x5
__int64 v126; // x6
__int64 v127; // x7
__int64 v128; // x2
__int64 v129; // x3
__int64 v130; // x4
__int64 v131; // x5
__int64 v132; // x6
__int64 v133; // x7
__int64 v134; // x2
__int64 v135; // x3
__int64 v136; // x4
__int64 v137; // x5
__int64 v138; // x6
__int64 v139; // x7
__int64 v140; // x2
__int64 v141; // x3
__int64 v142; // x4
__int64 v143; // x5
__int64 v144; // x6
__int64 v145; // x7
__int64 v146; // x0
__int64 v147; // x1
__int64 v148; // x2
__int64 v149; // x3
__int64 v150; // x4
__int64 v151; // x5
__int64 v152; // x6
__int64 v153; // x7
__int64 v154; // x2
__int64 v155; // x3
__int64 v156; // x4
__int64 v157; // x5
__int64 v158; // x6
__int64 v159; // x7
__int64 v160; // x2
__int64 v161; // x3
__int64 v162; // x4
__int64 v163; // x5
__int64 v164; // x6
__int64 v165; // x7
__int64 v166; // x2
__int64 v167; // x3
__int64 v168; // x4
__int64 v169; // x5
__int64 v170; // x6
__int64 v171; // x7
__int64 v172; // x23
__int64 v173; // x20
__int64 v174; // x20
__int64 v175; // x20
__int64 v176; // x19
__int64 v177; // x2
__int64 v178; // x3
__int64 v179; // x4
__int64 v180; // x5
__int64 v181; // x6
__int64 v182; // x7
__int64 v183; // x2
__int64 v184; // x3
__int64 v185; // x4
__int64 v186; // x5
__int64 v187; // x6
__int64 v188; // x7
__int64 v189; // x2
__int64 v190; // x3
__int64 v191; // x4
__int64 v192; // x5
__int64 v193; // x6
__int64 v194; // x7
__int64 v195; // x2
__int64 v196; // x3
__int64 v197; // x4
__int64 v198; // x5
__int64 v199; // x6
__int64 v200; // x7
__int64 v201; // x2
__int64 v202; // x3
__int64 v203; // x4
__int64 v204; // x5
__int64 v205; // x6
__int64 v206; // x7
__int64 v207; // x2
__int64 v208; // x3
__int64 v209; // x4
__int64 v210; // x5
__int64 v211; // x6
__int64 v212; // x7
__int64 v213; // x2
__int64 v214; // x3
__int64 v215; // x4
__int64 v216; // x5
__int64 v217; // x6
__int64 v218; // x7
__int64 v219; // x2
__int64 v220; // x3
__int64 v221; // x4
__int64 v222; // x5
__int64 v223; // x6
__int64 v224; // x7
__int64 v225; // x2
__int64 v226; // x3
__int64 v227; // x4
__int64 v228; // x5
__int64 v229; // x6
__int64 v230; // x7
__int64 v231; // x2
__int64 v232; // x3
__int64 v233; // x4
__int64 v234; // x5
__int64 v235; // x6
__int64 v236; // x7
v0 = 8592032576LL;
sub_1800CA218();
sub_1800B716C(8592162828LL, 0LL, v1, v2, v3, v4, v5, v6);
sub_1800D5F60(200LL);
sub_1800B716C(8592162828LL, 1LL, v7, v8, v9, v10, v11, v12);
sub_1800B716C(8592080896LL, 1LL, v13, v14, v15, v16, v17, v18);
sub_1800B716C(8592080928LL, 21LL, v19, v20, v21, v22, v23, v24);
sub_1800B716C(8592081008LL, 7LL, v25, v26, v27, v28, v29, v30);
sub_1800B716C(8592080992LL, 2LL, v31, v32, v33, v34, v35, v36);
for ( i = 0LL; i != 4; ++i )
{
v44 = 0;
v45 = 0;
while ( v45 < 5 )
{
sub_1800B716C(
24 * i + 8592032852LL + v44,
*((unsigned int *)&qword_1801148A0[17 * i + 57] + v45++ + 1),
v37,
v38,
v39,
v40,
v41,
v42);
v44 += 4;
}
sub_1800B716C(4 * i + 8592032948LL, HIDWORD(qword_1801148A0[17 * i + 60]), v37, v38, v39, v40, v41, v42);
}
sub_1800B716C(8592166616LL, 29666912LL, v37, v38, v39, v40, v41, v42);
sub_1800B716C(8592166624LL, 100925952LL, v46, v47, v48, v49, v50, v51);
sub_1800B716C(8592166628LL, 16448766LL, v52, v53, v54, v55, v56, v57);
sub_1800B716C(8592166632LL, 18874464LL, v58, v59, v60, v61, v62, v63);
sub_1800B716C(8592166708LL, 1666250464LL, v64, v65, v66, v67, v68, v69);
sub_1800B716C(8592166640LL, 100925952LL, v70, v71, v72, v73, v74, v75);
sub_1800B716C(8592166644LL, 16448766LL, v76, v77, v78, v79, v80, v81);
sub_1800B70E4(8842903696LL, 19LL, v82, v83, v84, v85, v86, v87);
sub_1800B70E4(8842903692LL, 393222LL, v88, v89, v90, v91, v92, v93);
sub_1800B716C(8592032768LL, 266477LL, v94, v95, v96, v97, v98, v99);
sub_1800B716C(8592032576LL, 1127303LL, v100, v101, v102, v103, v104, v105);
sub_1800B716C(8592032580LL, 1057286LL, v106, v107, v108, v109, v110, v111);
v118 = 0LL;
v119 = 8592032384LL;
while ( v118 != 68 )
{
sub_1800B716C(v119, HIDWORD(qword_1801148A0[v118 + 61]), v112, v113, v114, v115, v116, v117);
v118 += 17LL;
v119 += 4LL;
}
v120 = 0LL;
v121 = &dword_180114AA0;
while ( v120 != 16 )
{
sub_1800B716C(v120 + 8592032592LL, (unsigned int)*(v121 - 4), v112, v113, v114, v115, v116, v117);
sub_1800B716C(v120 + 8592032608LL, (unsigned int)*(v121 - 3), v122, v123, v124, v125, v126, v127);
sub_1800B716C(v120 + 8592032624LL, (unsigned int)*(v121 - 2), v128, v129, v130, v131, v132, v133);
sub_1800B716C(v120 + 8592032640LL, (unsigned int)*(v121 - 1), v134, v135, v136, v137, v138, v139);
if ( v120 )
{
v146 = v120 + 8592032712LL;
v147 = (unsigned int)*v121;
}
else
{
sub_1800B716C(8592032660LL, 437027060LL, v140, v141, v142, v143, v144, v145);
sub_1800B716C(8592032712LL, 118LL, v148, v149, v150, v151, v152, v153);
v147 = 12LL;
v146 = 8592032708LL;
}
sub_1800B716C(v146, v147, v140, v141, v142, v143, v144, v145);
v120 += 4LL;
v121 += 34;
}
sub_1800B716C(8592032700LL, 1376349LL, v112, v113, v114, v115, v116, v117);
sub_1800B716C(8592032656LL, 1915183814LL, v154, v155, v156, v157, v158, v159);
sub_1800B716C(8592032664LL, 1292216528LL, v160, v161, v162, v163, v164, v165);
v172 = 0LL;
v173 = 8592032668LL;
while ( v172 != 51 )
{
sub_1800B716C(v173, HIDWORD(qword_1801148A0[v172 + 81]), v166, v167, v168, v169, v170, v171);
v172 += 17LL;
v173 += 4LL;
}
v174 = 0LL;
while ( v174 != 68 )
{
sub_1800B716C(v0, LODWORD(qword_1801148A0[v174 + 65]), v166, v167, v168, v169, v170, v171);
v174 += 17LL;
v0 += 4LL;
}
v175 = 0LL;
v176 = 8592032680LL;
while ( v175 != 68 )
{
sub_1800B716C(v176, HIDWORD(qword_1801148A0[v175 + 65]), v166, v167, v168, v169, v170, v171);
v175 += 17LL;
v176 += 4LL;
}
sub_1800B716C(8592032772LL, 24673LL, v166, v167, v168, v169, v170, v171);
sub_1800B716C(8592033664LL, 256LL, v177, v178, v179, v180, v181, v182);
sub_1800B716C(8592033676LL, 1LL, v183, v184, v185, v186, v187, v188);
sub_1800B716C(8592032808LL, 0LL, v189, v190, v191, v192, v193, v194);
sub_1800B716C(8592032804LL, 0x2000LL, v195, v196, v197, v198, v199, v200);
sub_1800B716C(8592031744LL, 2LL, v201, v202, v203, v204, v205, v206);
sub_1800B716C(8592033848LL, 21LL, v207, v208, v209, v210, v211, v212);
sub_1800B716C(8592032832LL, 352518144LL, v213, v214, v215, v216, v217, v218);
sub_1800B716C(8592032260LL, 25442LL, v219, v220, v221, v222, v223, v224);
sub_1800B716C(8592032160LL, 0LL, v225, v226, v227, v228, v229, v230);
return sub_1800B716C(8592032264LL, 24928LL, v231, v232, v233, v234, v235, v236);
}
// 1801148A0: using guessed type __int64 qword_1801148A0[];
// 180114AA0: using guessed type int dword_180114AA0;
//----- (00000001800CA218) ----------------------------------------------------
signed __int64 sub_1800CA218()
{
int v0; // w19
int v1; // w20
int v2; // w21
int v3; // w21
__int64 v4; // x20
__int64 v5; // x2
__int64 v6; // x3
__int64 v7; // x4
__int64 v8; // x5
__int64 v9; // x6
__int64 v10; // x7
__int64 v11; // x2
__int64 v12; // x3
__int64 v13; // x4
__int64 v14; // x5
__int64 v15; // x6
__int64 v16; // x7
__int64 v17; // x20
__int64 v18; // x2
__int64 v19; // x3
__int64 v20; // x4
__int64 v21; // x5
__int64 v22; // x6
__int64 v23; // x7
__int64 v24; // x2
__int64 v25; // x3
__int64 v26; // x4
__int64 v27; // x5
__int64 v28; // x6
__int64 v29; // x7
__int64 v30; // x21
__int64 v31; // x2
__int64 v32; // x3
__int64 v33; // x4
__int64 v34; // x5
__int64 v35; // x6
__int64 v36; // x7
__int64 v37; // x2
__int64 v38; // x3
__int64 v39; // x4
__int64 v40; // x5
__int64 v41; // x6
__int64 v42; // x7
__int64 v43; // x2
__int64 v44; // x3
__int64 v45; // x4
__int64 v46; // x5
__int64 v47; // x6
__int64 v48; // x7
__int64 v49; // x2
__int64 v50; // x3
__int64 v51; // x4
__int64 v52; // x5
__int64 v53; // x6
__int64 v54; // x7
__int64 v55; // x2
__int64 v56; // x3
__int64 v57; // x4
__int64 v58; // x5
__int64 v59; // x6
__int64 v60; // x7
__int64 v61; // x2
__int64 v62; // x3
__int64 v63; // x4
__int64 v64; // x5
__int64 v65; // x6
__int64 v66; // x7
__int64 v67; // x2
__int64 v68; // x3
__int64 v69; // x4
__int64 v70; // x5
__int64 v71; // x6
__int64 v72; // x7
__int64 v73; // x2
__int64 v74; // x3
__int64 v75; // x4
__int64 v76; // x5
__int64 v77; // x6
__int64 v78; // x7
__int64 v79; // x19
__int64 v80; // x2
__int64 v81; // x3
__int64 v82; // x4
__int64 v83; // x5
__int64 v84; // x6
__int64 v85; // x7
__int64 v86; // x2
__int64 v87; // x3
__int64 v88; // x4
__int64 v89; // x5
__int64 v90; // x6
__int64 v91; // x7
__int64 v92; // x2
__int64 v93; // x3
__int64 v94; // x4
__int64 v95; // x5
__int64 v96; // x6
__int64 v97; // x7
__int64 v98; // x2
__int64 v99; // x3
__int64 v100; // x4
__int64 v101; // x5
__int64 v102; // x6
__int64 v103; // x7
__int64 v104; // x2
__int64 v105; // x3
__int64 v106; // x4
__int64 v107; // x5
__int64 v108; // x6
__int64 v109; // x7
__int64 v110; // x2
__int64 v111; // x3
__int64 v112; // x4
__int64 v113; // x5
__int64 v114; // x6
__int64 v115; // x7
__int64 v116; // x2
__int64 v117; // x3
__int64 v118; // x4
__int64 v119; // x5
__int64 v120; // x6
__int64 v121; // x7
__int64 v122; // x2
__int64 v123; // x3
__int64 v124; // x4
__int64 v125; // x5
__int64 v126; // x6
__int64 v127; // x7
v0 = sub_1800B8AD0(20, 2);
v1 = sub_1800B8AD0(20, 1);
v2 = sub_1800B8AD0(20, 0);
sub_1800D368C(7);
v3 = 4 * v2 | (v1 << 7);
v4 = v3 | MEMORY[0x200200804] & 0xFFFFF803;
sub_1800B716C(8592033796LL, v4, v5, v6, v7, v8, v9, v10);
sub_1800B716C(8592033804LL, v4, v11, v12, v13, v14, v15, v16);
v17 = MEMORY[0x200200808] & 0xFFFFF83F | (v0 << 6);
sub_1800B716C(8592033800LL, v17, v18, v19, v20, v21, v22, v23);
sub_1800B716C(8592033808LL, v17, v24, v25, v26, v27, v28, v29);
v30 = v3 | MEMORY[0x200000184] & 0xFFFFF803;
sub_1800B70E4(8589934980LL, v30, v31, v32, v33, v34, v35, v36);
sub_1800B70E4(8589934988LL, v30, v37, v38, v39, v40, v41, v42);
sub_1800B70E4(8589935204LL, v30, v43, v44, v45, v46, v47, v48);
sub_1800B70E4(8589935212LL, v30, v49, v50, v51, v52, v53, v54);
sub_1800B70E4(8589935396LL, v30, v55, v56, v57, v58, v59, v60);
sub_1800B70E4(8589935404LL, v30, v61, v62, v63, v64, v65, v66);
sub_1800B70E4(8589935620LL, v30, v67, v68, v69, v70, v71, v72);
sub_1800B70E4(8589935628LL, v30, v73, v74, v75, v76, v77, v78);
v79 = MEMORY[0x200000188] & 0xFFFFF83F | (v0 << 6);
sub_1800B70E4(8589934984LL, v79, v80, v81, v82, v83, v84, v85);
sub_1800B70E4(8589934992LL, v79, v86, v87, v88, v89, v90, v91);
sub_1800B70E4(8589935208LL, v79, v92, v93, v94, v95, v96, v97);
sub_1800B70E4(8589935216LL, v79, v98, v99, v100, v101, v102, v103);
sub_1800B70E4(8589935400LL, v79, v104, v105, v106, v107, v108, v109);
sub_1800B70E4(8589935408LL, v79, v110, v111, v112, v113, v114, v115);
sub_1800B70E4(8589935624LL, v79, v116, v117, v118, v119, v120, v121);
sub_1800B70E4(8589935632LL, v79, v122, v123, v124, v125, v126, v127);
return sub_1800D368C(8);
}
//----- (00000001800CA3DC) ----------------------------------------------------
__int64 __fastcall sub_1800CA3DC(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 i; // x19
__int64 j; // x19
__int64 v10; // x20
__int64 v11; // x19
__int64 v12; // x20
__int64 v13; // x19
__int64 v14; // x2
__int64 v15; // x3
__int64 v16; // x4
__int64 v17; // x5
__int64 v18; // x6
__int64 v19; // x7
__int64 v20; // x2
__int64 v21; // x3
__int64 v22; // x4
__int64 v23; // x5
__int64 v24; // x6
__int64 v25; // x7
__int64 v26; // x2
__int64 v27; // x3
__int64 v28; // x4
__int64 v29; // x5
__int64 v30; // x6
__int64 v31; // x7
__int64 v32; // x2
__int64 v33; // x3
__int64 v34; // x4
__int64 v35; // x5
__int64 v36; // x6
__int64 v37; // x7
__int64 v38; // x2
__int64 v39; // x3
__int64 v40; // x4
__int64 v41; // x5
__int64 v42; // x6
__int64 v43; // x7
__int64 v44; // x2
__int64 v45; // x3
__int64 v46; // x4
__int64 v47; // x5
__int64 v48; // x6
__int64 v49; // x7
__int64 v50; // x2
__int64 v51; // x3
__int64 v52; // x4
__int64 v53; // x5
__int64 v54; // x6
__int64 v55; // x7
__int64 v56; // x2
__int64 v57; // x3
__int64 v58; // x4
__int64 v59; // x5
__int64 v60; // x6
__int64 v61; // x7
__int64 v62; // x3
__int64 v63; // x4
__int64 v64; // x5
__int64 v65; // x6
__int64 v66; // x7
__int64 v67; // x3
__int64 v68; // x4
__int64 v69; // x5
__int64 v70; // x6
__int64 v71; // x7
__int64 v72; // x2
__int64 v73; // x3
__int64 v74; // x4
__int64 v75; // x5
__int64 v76; // x6
__int64 v77; // x7
__int64 v78; // x2
__int64 v79; // x3
__int64 v80; // x4
__int64 v81; // x5
__int64 v82; // x6
__int64 v83; // x7
__int64 v84; // x3
__int64 v85; // x4
__int64 v86; // x5
__int64 v87; // x6
__int64 v88; // x7
__int64 v89; // x3
__int64 v90; // x4
__int64 v91; // x5
__int64 v92; // x6
__int64 v93; // x7
__int64 v94; // x2
__int64 v95; // x3
__int64 v96; // x4
__int64 v97; // x5
__int64 v98; // x6
__int64 v99; // x7
__int64 v100; // x3
__int64 v101; // x4
__int64 v102; // x5
__int64 v103; // x6
__int64 v104; // x7
__int64 v105; // x2
__int64 v106; // x3
__int64 v107; // x4
__int64 v108; // x5
__int64 v109; // x6
__int64 v110; // x7
__int64 k; // x19
__int64 v112; // x2
__int64 v113; // x3
__int64 v114; // x4
__int64 v115; // x5
__int64 v116; // x6
__int64 v117; // x7
__int64 v118; // x25
__int64 v119; // x19
__int64 v120; // x25
__int64 v121; // x19
__int64 v122; // x2
__int64 v123; // x3
__int64 v124; // x4
__int64 v125; // x5
__int64 v126; // x6
__int64 v127; // x7
__int64 v128; // x2
__int64 v129; // x3
__int64 v130; // x4
__int64 v131; // x5
__int64 v132; // x6
__int64 v133; // x7
__int64 v134; // x2
__int64 v135; // x3
__int64 v136; // x4
__int64 v137; // x5
__int64 v138; // x6
__int64 v139; // x7
__int64 v140; // x2
__int64 v141; // x3
__int64 v142; // x4
__int64 v143; // x5
__int64 v144; // x6
__int64 v145; // x7
__int64 v146; // x2
__int64 v147; // x3
__int64 v148; // x4
__int64 v149; // x5
__int64 v150; // x6
__int64 v151; // x7
__int64 v152; // x2
__int64 v153; // x3
__int64 v154; // x4
__int64 v155; // x5
__int64 v156; // x6
__int64 v157; // x7
__int64 v158; // x2
__int64 v159; // x3
__int64 v160; // x4
__int64 v161; // x5
__int64 v162; // x6
__int64 v163; // x7
__int64 v164; // x2
__int64 v165; // x3
__int64 v166; // x4
__int64 v167; // x5
__int64 v168; // x6
__int64 v169; // x7
__int64 v170; // x2
__int64 v171; // x3
__int64 v172; // x4
__int64 v173; // x5
__int64 v174; // x6
__int64 v175; // x7
__int64 v176; // x2
__int64 v177; // x3
__int64 v178; // x4
__int64 v179; // x5
__int64 v180; // x6
__int64 v181; // x7
__int64 v182; // x2
__int64 v183; // x3
__int64 v184; // x4
__int64 v185; // x5
__int64 v186; // x6
__int64 v187; // x7
__int64 v188; // x2
__int64 v189; // x3
__int64 v190; // x4
__int64 v191; // x5
__int64 v192; // x6
__int64 v193; // x7
__int64 v194; // x2
__int64 v195; // x3
__int64 v196; // x4
__int64 v197; // x5
__int64 v198; // x6
__int64 v199; // x7
__int64 v200; // x2
__int64 v201; // x3
__int64 v202; // x4
__int64 v203; // x5
__int64 v204; // x6
__int64 v205; // x7
__int64 v206; // x2
__int64 v207; // x3
__int64 v208; // x4
__int64 v209; // x5
__int64 v210; // x6
__int64 v211; // x7
__int64 v212; // x2
__int64 v213; // x3
__int64 v214; // x4
__int64 v215; // x5
__int64 v216; // x6
__int64 v217; // x7
__int64 v218; // x2
__int64 v219; // x3
__int64 v220; // x4
__int64 v221; // x5
__int64 v222; // x6
__int64 v223; // x7
__int64 v224; // x2
__int64 v225; // x3
__int64 v226; // x4
__int64 v227; // x5
__int64 v228; // x6
__int64 v229; // x7
__int64 v230; // x2
__int64 v231; // x3
__int64 v232; // x4
__int64 v233; // x5
__int64 v234; // x6
__int64 v235; // x7
__int64 v236; // x2
__int64 v237; // x3
__int64 v238; // x4
__int64 v239; // x5
__int64 v240; // x6
__int64 v241; // x7
__int64 v242; // x2
__int64 v243; // x3
__int64 v244; // x4
__int64 v245; // x5
__int64 v246; // x6
__int64 v247; // x7
__int64 v248; // x2
__int64 v249; // x3
__int64 v250; // x4
__int64 v251; // x5
__int64 v252; // x6
__int64 v253; // x7
__int64 v254; // x2
__int64 v255; // x3
__int64 v256; // x4
__int64 v257; // x5
__int64 v258; // x6
__int64 v259; // x7
__int64 v260; // x2
__int64 v261; // x3
__int64 v262; // x4
__int64 v263; // x5
__int64 v264; // x6
__int64 v265; // x7
__int64 v266; // x2
__int64 v267; // x3
__int64 v268; // x4
__int64 v269; // x5
__int64 v270; // x6
__int64 v271; // x7
__int64 v272; // x2
__int64 v273; // x3
__int64 v274; // x4
__int64 v275; // x5
__int64 v276; // x6
__int64 v277; // x7
__int64 v278; // x20
__int64 v279; // x19
__int64 v280; // x2
__int64 v281; // x3
__int64 v282; // x4
__int64 v283; // x5
__int64 v284; // x6
__int64 v285; // x7
__int64 l; // x19
signed __int64 v287; // x8
__int64 v288; // x2
__int64 v289; // x3
__int64 v290; // x4
__int64 v291; // x5
__int64 v292; // x6
__int64 v293; // x7
__int64 v294; // x2
__int64 v295; // x3
__int64 v296; // x4
__int64 v297; // x5
__int64 v298; // x6
__int64 v299; // x7
__int64 v300; // x2
__int64 v301; // x3
__int64 v302; // x4
__int64 v303; // x5
__int64 v304; // x6
__int64 v305; // x7
__int64 m; // x19
__int64 v307; // x2
__int64 v308; // x3
__int64 v309; // x4
__int64 v310; // x5
__int64 v311; // x6
__int64 v312; // x7
__int64 v313; // x2
__int64 v314; // x3
__int64 v315; // x4
__int64 v316; // x5
__int64 v317; // x6
__int64 v318; // x7
__int64 v319; // x2
__int64 v320; // x3
__int64 v321; // x4
__int64 v322; // x5
__int64 v323; // x6
__int64 v324; // x7
__int64 v325; // x2
__int64 v326; // x3
__int64 v327; // x4
__int64 v328; // x5
__int64 v329; // x6
__int64 v330; // x7
__int64 v331; // x2
__int64 v332; // x3
__int64 v333; // x4
__int64 v334; // x5
__int64 v335; // x6
__int64 v336; // x7
__int64 v337; // x2
__int64 v338; // x3
__int64 v339; // x4
__int64 v340; // x5
__int64 v341; // x6
__int64 v342; // x7
__int64 v343; // x2
__int64 v344; // x3
__int64 v345; // x4
__int64 v346; // x5
__int64 v347; // x6
__int64 v348; // x7
__int64 v349; // x2
__int64 v350; // x3
__int64 v351; // x4
__int64 v352; // x5
__int64 v353; // x6
__int64 v354; // x7
__int64 v355; // x2
__int64 v356; // x3
__int64 v357; // x4
__int64 v358; // x5
__int64 v359; // x6
__int64 v360; // x7
__int64 v361; // x2
__int64 v362; // x3
__int64 v363; // x4
__int64 v364; // x5
__int64 v365; // x6
__int64 v366; // x7
__int64 v367; // x2
__int64 v368; // x3
__int64 v369; // x4
__int64 v370; // x5
__int64 v371; // x6
__int64 v372; // x7
__int64 v373; // x2
__int64 v374; // x3
__int64 v375; // x4
__int64 v376; // x5
__int64 v377; // x6
__int64 v378; // x7
__int64 v379; // x2
__int64 v380; // x3
__int64 v381; // x4
__int64 v382; // x5
__int64 v383; // x6
__int64 v384; // x7
__int64 v385; // x2
__int64 v386; // x3
__int64 v387; // x4
__int64 v388; // x5
__int64 v389; // x6
__int64 v390; // x7
__int64 v391; // x2
__int64 v392; // x3
__int64 v393; // x4
__int64 v394; // x5
__int64 v395; // x6
__int64 v396; // x7
__int64 v397; // x2
__int64 v398; // x3
__int64 v399; // x4
__int64 v400; // x5
__int64 v401; // x6
__int64 v402; // x7
__int64 v403; // x2
__int64 v404; // x3
__int64 v405; // x4
__int64 v406; // x5
__int64 v407; // x6
__int64 v408; // x7
__int64 v409; // x2
__int64 v410; // x3
__int64 v411; // x4
__int64 v412; // x5
__int64 v413; // x6
__int64 v414; // x7
__int64 v415; // x2
__int64 v416; // x3
__int64 v417; // x4
__int64 v418; // x5
__int64 v419; // x6
__int64 v420; // x7
__int64 v421; // x2
__int64 v422; // x3
__int64 v423; // x4
__int64 v424; // x5
__int64 v425; // x6
__int64 v426; // x7
__int64 v427; // x2
__int64 v428; // x3
__int64 v429; // x4
__int64 v430; // x5
__int64 v431; // x6
__int64 v432; // x7
__int64 v433; // x2
__int64 v434; // x3
__int64 v435; // x4
__int64 v436; // x5
__int64 v437; // x6
__int64 v438; // x7
__int64 v439; // x2
__int64 v440; // x3
__int64 v441; // x4
__int64 v442; // x5
__int64 v443; // x6
__int64 v444; // x7
__int64 v445; // x2
__int64 v446; // x3
__int64 v447; // x4
__int64 v448; // x5
__int64 v449; // x6
__int64 v450; // x7
__int64 v451; // x2
__int64 v452; // x3
__int64 v453; // x4
__int64 v454; // x5
__int64 v455; // x6
__int64 v456; // x7
__int64 v457; // x2
__int64 v458; // x3
__int64 v459; // x4
__int64 v460; // x5
__int64 v461; // x6
__int64 v462; // x7
__int64 v463; // x2
__int64 v464; // x3
__int64 v465; // x4
__int64 v466; // x5
__int64 v467; // x6
__int64 v468; // x7
__int64 v469; // x2
__int64 v470; // x3
__int64 v471; // x4
__int64 v472; // x5
__int64 v473; // x6
__int64 v474; // x7
__int64 v475; // x2
__int64 v476; // x3
__int64 v477; // x4
__int64 v478; // x5
__int64 v479; // x6
__int64 v480; // x7
__int64 v481; // x2
__int64 v482; // x3
__int64 v483; // x4
__int64 v484; // x5
__int64 v485; // x6
__int64 v486; // x7
__int64 v487; // x2
__int64 v488; // x3
__int64 v489; // x4
__int64 v490; // x5
__int64 v491; // x6
__int64 v492; // x7
__int64 v493; // x2
__int64 v494; // x3
__int64 v495; // x4
__int64 v496; // x5
__int64 v497; // x6
__int64 v498; // x7
__int64 v499; // x2
__int64 v500; // x3
__int64 v501; // x4
__int64 v502; // x5
__int64 v503; // x6
__int64 v504; // x7
__int64 v505; // x2
__int64 v506; // x3
__int64 v507; // x4
__int64 v508; // x5
__int64 v509; // x6
__int64 v510; // x7
__int64 v511; // x2
__int64 v512; // x3
__int64 v513; // x4
__int64 v514; // x5
__int64 v515; // x6
__int64 v516; // x7
__int64 v517; // x2
__int64 v518; // x3
__int64 v519; // x4
__int64 v520; // x5
__int64 v521; // x6
__int64 v522; // x7
__int64 v523; // x2
__int64 v524; // x3
__int64 v525; // x4
__int64 v526; // x5
__int64 v527; // x6
__int64 v528; // x7
__int64 v529; // x2
__int64 v530; // x3
__int64 v531; // x4
__int64 v532; // x5
__int64 v533; // x6
__int64 v534; // x7
__int64 v535; // x2
__int64 v536; // x3
__int64 v537; // x4
__int64 v538; // x5
__int64 v539; // x6
__int64 v540; // x7
__int64 v541; // x2
__int64 v542; // x3
__int64 v543; // x4
__int64 v544; // x5
__int64 v545; // x6
__int64 v546; // x7
__int64 v547; // x2
__int64 v548; // x3
__int64 v549; // x4
__int64 v550; // x5
__int64 v551; // x6
__int64 v552; // x7
__int64 v553; // x2
__int64 v554; // x3
__int64 v555; // x4
__int64 v556; // x5
__int64 v557; // x6
__int64 v558; // x7
__int64 v559; // x2
__int64 v560; // x3
__int64 v561; // x4
__int64 v562; // x5
__int64 v563; // x6
__int64 v564; // x7
__int64 v565; // x2
__int64 v566; // x3
__int64 v567; // x4
__int64 v568; // x5
__int64 v569; // x6
__int64 v570; // x7
__int64 v571; // x2
__int64 v572; // x3
__int64 v573; // x4
__int64 v574; // x5
__int64 v575; // x6
__int64 v576; // x7
__int64 v577; // x2
__int64 v578; // x3
__int64 v579; // x4
__int64 v580; // x5
__int64 v581; // x6
__int64 v582; // x7
__int64 v583; // x2
__int64 v584; // x3
__int64 v585; // x4
__int64 v586; // x5
__int64 v587; // x6
__int64 v588; // x7
__int64 v589; // x2
__int64 v590; // x3
__int64 v591; // x4
__int64 v592; // x5
__int64 v593; // x6
__int64 v594; // x7
for ( i = 0LL; i != 98304; i += 0x8000LL )
sub_1800B716C(i + 8592163224LL, 13107600LL, a3, a4, a5, a6, a7, a8);
for ( j = 0LL; j != 98304; j += 0x8000LL )
sub_1800B716C(j + 8592162816LL, 1LL, a3, a4, a5, a6, a7, a8);
v10 = 0LL;
v11 = 8592166144LL;
while ( v10 != 68 )
{
sub_1800B716C(v11, HIDWORD(qword_1801148A0[v10 + 67]), a3, a4, a5, a6, a7, a8);
v10 += 17LL;
v11 += 4LL;
}
v12 = 0LL;
v13 = 8592198400LL;
while ( v12 != 68 )
{
sub_1800B716C(v13, HIDWORD(qword_1801148A0[v12 + 69]), a3, a4, a5, a6, a7, a8);
sub_1800B716C(v13 + 0x8000, HIDWORD(qword_1801148A0[v12 + 69]), v14, v15, v16, v17, v18, v19);
v12 += 17LL;
v13 += 4LL;
}
sub_1800B716C(8592163208LL, 33556480LL, a3, a4, a5, a6, a7, a8);
sub_1800B716C(8592195976LL, 33556480LL, v20, v21, v22, v23, v24, v25);
sub_1800B716C(8592228744LL, 33556480LL, v26, v27, v28, v29, v30, v31);
sub_1800B716C(8592164632LL, 50529029LL, v32, v33, v34, v35, v36, v37);
sub_1800B716C(8592197148LL, 196613LL, v38, v39, v40, v41, v42, v43);
sub_1800B716C(8592229916LL, 196613LL, v44, v45, v46, v47, v48, v49);
sub_1800B716C(8592197128LL, 16711682LL, v50, v51, v52, v53, v54, v55);
sub_1800B716C(8592229896LL, 16711682LL, v56, v57, v58, v59, v60, v61);
sub_1800B72C0(8592197128LL, 2LL, 0LL, v62, v63, v64, v65, v66);
sub_1800B72C0(8592229896LL, 2LL, 0LL, v67, v68, v69, v70, v71);
sub_1800B716C(8592197120LL, 4278190082LL, v72, v73, v74, v75, v76, v77);
sub_1800B716C(8592229888LL, 4278190082LL, v78, v79, v80, v81, v82, v83);
sub_1800B72C0(8592197120LL, 2LL, 0LL, v84, v85, v86, v87, v88);
sub_1800B72C0(8592229888LL, 2LL, 0LL, v89, v90, v91, v92, v93);
sub_1800B716C(8592164864LL, 16712191LL, v94, v95, v96, v97, v98, v99);
sub_1800B72C0(8592164864LL, 256LL, 0LL, v100, v101, v102, v103, v104);
for ( k = 0LL; k != 98304; k += 0x8000LL )
sub_1800B716C(k + 8592163224LL, 13107600LL, v105, v106, v107, v108, v109, v110);
sub_1800B716C(8592166516LL, 101062148LL, v105, v106, v107, v108, v109, v110);
v118 = 0LL;
v119 = 8592166784LL;
while ( v118 != 51 )
{
sub_1800B716C(v119, LODWORD(qword_1801148A0[v118 + 87]), v112, v113, v114, v115, v116, v117);
v118 += 17LL;
v119 += 4LL;
}
v120 = 0LL;
v121 = 8592199040LL;
while ( v120 != 68 )
{
sub_1800B716C(v121, HIDWORD(qword_1801148A0[v120 + 70]), v112, v113, v114, v115, v116, v117);
sub_1800B716C(v121 + 0x8000, HIDWORD(qword_1801148A0[v120 + 70]), v122, v123, v124, v125, v126, v127);
v120 += 17LL;
v121 += 4LL;
}
sub_1800B716C(8592166800LL, 22LL, v112, v113, v114, v115, v116, v117);
sub_1800B716C(8592166400LL, 17171720LL, v128, v129, v130, v131, v132, v133);
sub_1800B716C(8592166408LL, 17171458LL, v134, v135, v136, v137, v138, v139);
sub_1800B716C(8592166424LL, 17171464LL, v140, v141, v142, v143, v144, v145);
sub_1800B716C(8592166404LL, 101059596LL, v146, v147, v148, v149, v150, v151);
sub_1800B716C(8592166412LL, 101059082LL, v152, v153, v154, v155, v156, v157);
sub_1800B716C(8592166444LL, 1431649370LL, v158, v159, v160, v161, v162, v163);
sub_1800B716C(8592166448LL, 15450LL, v164, v165, v166, v167, v168, v169);
sub_1800B716C(8592166560LL, 1894911016LL, v170, v171, v172, v173, v174, v175);
sub_1800B716C(8592166564LL, 1665907093LL, v176, v177, v178, v179, v180, v181);
sub_1800B716C(8592166568LL, 28015LL, v182, v183, v184, v185, v186, v187);
sub_1800B716C(8592166580LL, 218694913LL, v188, v189, v190, v191, v192, v193);
sub_1800B716C(8592166584LL, 488183057LL, v194, v195, v196, v197, v198, v199);
sub_1800B716C(8592166588LL, 33LL, v200, v201, v202, v203, v204, v205);
sub_1800B716C(8592166592LL, 875572264LL, v206, v207, v208, v209, v210, v211);
sub_1800B716C(8592166596LL, 1145060408LL, v212, v213, v214, v215, v216, v217);
sub_1800B716C(8592166600LL, 72LL, v218, v219, v220, v221, v222, v223);
sub_1800B716C(8592166456LL, 16253393LL, v224, v225, v226, v227, v228, v229);
sub_1800B716C(8592166460LL, 19858272LL, v230, v231, v232, v233, v234, v235);
sub_1800B716C(8592166464LL, 16253393LL, v236, v237, v238, v239, v240, v241);
sub_1800B716C(8592166468LL, 19858272LL, v242, v243, v244, v245, v246, v247);
sub_1800B716C(8592166524LL, 10489108LL, v248, v249, v250, v251, v252, v253);
sub_1800B716C(8592166528LL, 2694843661LL, v254, v255, v256, v257, v258, v259);
sub_1800B716C(8592198912LL, 538447872LL, v260, v261, v262, v263, v264, v265);
sub_1800B716C(8592231680LL, 538447872LL, v266, v267, v268, v269, v270, v271);
v278 = 0LL;
v279 = 8592195840LL;
while ( v278 != 68 )
{
sub_1800B716C(v279, LODWORD(qword_1801148A0[v278 + 73]), v272, v273, v274, v275, v276, v277);
sub_1800B716C(v279 + 0x8000, LODWORD(qword_1801148A0[v278 + 73]), v280, v281, v282, v283, v284, v285);
v278 += 17LL;
v279 += 4LL;
}
for ( l = 0LL; l != 98304; l += 0x8000LL )
{
if ( l )
v287 = 0LL;
else
v287 = -4LL;
sub_1800B716C(v287 + 8592163224LL + l + 12, 2147483776LL, v272, v273, v274, v275, v276, v277);
}
sub_1800B716C(8592163228LL, 270532640LL, v272, v273, v274, v275, v276, v277);
sub_1800B716C(8592196000LL, 0LL, v288, v289, v290, v291, v292, v293);
sub_1800B716C(8592228768LL, 0LL, v294, v295, v296, v297, v298, v299);
for ( m = 0LL; m != 0x10000; m += 0x8000LL )
sub_1800B716C(m + 8592195968LL, 256LL, v300, v301, v302, v303, v304, v305);
sub_1800B716C(8592162968LL, 268765991LL, v300, v301, v302, v303, v304, v305);
sub_1800B716C(8592162972LL, 400LL, v307, v308, v309, v310, v311, v312);
sub_1800B716C(8592166604LL, 1LL, v313, v314, v315, v316, v317, v318);
sub_1800B716C(8592166608LL, 907682836LL, v319, v320, v321, v322, v323, v324);
sub_1800B716C(8592166612LL, 403514388LL, v325, v326, v327, v328, v329, v330);
sub_1800B716C(8592165128LL, 2162688LL, v331, v332, v333, v334, v335, v336);
sub_1800B716C(8592165440LL, 792LL, v337, v338, v339, v340, v341, v342);
sub_1800B716C(8592165444LL, 396LL, v343, v344, v345, v346, v347, v348);
sub_1800B716C(8592165452LL, 28LL, v349, v350, v351, v352, v353, v354);
sub_1800B716C(8592165456LL, 24LL, v355, v356, v357, v358, v359, v360);
sub_1800B716C(8592165468LL, 1LL, v361, v362, v363, v364, v365, v366);
sub_1800B716C(8592261160LL, 857151255LL, v367, v368, v369, v370, v371, v372);
sub_1800B716C(8592261168LL, 0LL, v373, v374, v375, v376, v377, v378);
sub_1800B716C(8592261188LL, 131315LL, v379, v380, v381, v382, v383, v384);
sub_1800B716C(8592261200LL, 857151255LL, v385, v386, v387, v388, v389, v390);
sub_1800B716C(8592261208LL, 0LL, v391, v392, v393, v394, v395, v396);
sub_1800B716C(8592261216LL, 243LL, v397, v398, v399, v400, v401, v402);
sub_1800B716C(8592261240LL, 857151255LL, v403, v404, v405, v406, v407, v408);
sub_1800B716C(8592261248LL, 0LL, v409, v410, v411, v412, v413, v414);
sub_1800B716C(8592261280LL, 1884291315LL, v415, v416, v417, v418, v419, v420);
sub_1800B716C(8592261296LL, 29361971LL, v421, v422, v423, v424, v425, v426);
sub_1800B716C(8592261300LL, 5LL, v427, v428, v429, v430, v431, v432);
sub_1800B716C(8592261352LL, 857151255LL, v433, v434, v435, v436, v437, v438);
sub_1800B716C(8592261408LL, 5LL, v439, v440, v441, v442, v443, v444);
sub_1800B716C(8592261360LL, 0LL, v445, v446, v447, v448, v449, v450);
sub_1800B716C(8592261388LL, 1884291315LL, v451, v452, v453, v454, v455, v456);
sub_1800B716C(8592261404LL, 29361971LL, v457, v458, v459, v460, v461, v462);
sub_1800B716C(8592261312LL, 857151255LL, v463, v464, v465, v466, v467, v468);
sub_1800B716C(8592261328LL, 1884291315LL, v469, v470, v471, v472, v473, v474);
sub_1800B716C(8592261336LL, 29362051LL, v475, v476, v477, v478, v479, v480);
sub_1800B716C(8592261344LL, 7LL, v481, v482, v483, v484, v485, v486);
sub_1800B716C(8592261340LL, 265984LL, v487, v488, v489, v490, v491, v492);
sub_1800B716C(8592261320LL, 1930LL, v493, v494, v495, v496, v497, v498);
sub_1800B716C(8592261324LL, 196608LL, v499, v500, v501, v502, v503, v504);
sub_1800B716C(8592261424LL, 857151255LL, v505, v506, v507, v508, v509, v510);
sub_1800B716C(8592261440LL, 1884291315LL, v511, v512, v513, v514, v515, v516);
sub_1800B716C(8592261448LL, 29361027LL, v517, v518, v519, v520, v521, v522);
sub_1800B716C(8592261456LL, 265984LL, v523, v524, v525, v526, v527, v528);
sub_1800B716C(8592261452LL, 7LL, v529, v530, v531, v532, v533, v534);
sub_1800B716C(8592261432LL, 1930LL, v535, v536, v537, v538, v539, v540);
sub_1800B716C(8592261156LL, 0LL, v541, v542, v543, v544, v545, v546);
sub_1800B716C(8592261132LL, 8945535LL, v547, v548, v549, v550, v551, v552);
sub_1800B716C(8592261128LL, 983835LL, v553, v554, v555, v556, v557, v558);
sub_1800B716C(8592261884LL, 2070LL, v559, v560, v561, v562, v563, v564);
sub_1800B716C(8592166688LL, 421075217LL, v565, v566, v567, v568, v569, v570);
sub_1800B716C(8592166680LL, 3823363001LL, v571, v572, v573, v574, v575, v576);
sub_1800B716C(8592166620LL, 134744072LL, v577, v578, v579, v580, v581, v582);
sub_1800B716C(8592166636LL, 842163144LL, v583, v584, v585, v586, v587, v588);
return sub_1800B716C(8592166712LL, 0LL, v589, v590, v591, v592, v593, v594);
}
// 1801148A0: using guessed type __int64 qword_1801148A0[];
//----- (00000001800CAB14) ----------------------------------------------------
__int64 __fastcall sub_1800CAB14(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
__int64 v14; // x2
__int64 v15; // x3
__int64 v16; // x4
__int64 v17; // x5
__int64 v18; // x6
__int64 v19; // x7
__int64 v20; // x22
__int64 v21; // x19
__int64 v22; // x2
__int64 v23; // x3
__int64 v24; // x4
__int64 v25; // x5
__int64 v26; // x6
__int64 v27; // x7
__int64 v28; // x2
__int64 v29; // x3
__int64 v30; // x4
__int64 v31; // x5
__int64 v32; // x6
__int64 v33; // x7
__int64 v34; // x2
__int64 v35; // x3
__int64 v36; // x4
__int64 v37; // x5
__int64 v38; // x6
__int64 v39; // x7
__int64 v40; // x2
__int64 v41; // x3
__int64 v42; // x4
__int64 v43; // x5
__int64 v44; // x6
__int64 v45; // x7
__int64 v46; // x2
__int64 v47; // x3
__int64 v48; // x4
__int64 v49; // x5
__int64 v50; // x6
__int64 v51; // x7
sub_1800B797C(5u, (__int64)"after Imp. Cal.", a3, a4, a5, a6, a7, a8);
sub_1800B716C(8592032792LL, 134291481LL, v8, v9, v10, v11, v12, v13);
v20 = 0LL;
v21 = 8592032624LL;
while ( v20 != 68 )
{
sub_1800B716C(v21, HIDWORD(qword_1801148A0[v20 + 73]), v14, v15, v16, v17, v18, v19);
v20 += 17LL;
v21 += 4LL;
}
sub_1800B716C(8592032700LL, 4129279LL, v14, v15, v16, v17, v18, v19);
sub_1800B716C(8592032700LL, 1310813LL, v22, v23, v24, v25, v26, v27);
sub_1800B716C(8592032804LL, 4096LL, v28, v29, v30, v31, v32, v33);
sub_1800B716C(8592032800LL, 16850952LL, v34, v35, v36, v37, v38, v39);
sub_1800B716C(8592032800LL, 16850952LL, v40, v41, v42, v43, v44, v45);
return sub_1800B716C(8592032832LL, 352518156LL, v46, v47, v48, v49, v50, v51);
}
// 1801148A0: using guessed type __int64 qword_1801148A0[];
//----- (00000001800CABF0) ----------------------------------------------------
__int64 __fastcall sub_1800CABF0(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
__int64 i; // x20
__int64 v15; // x3
__int64 v16; // x4
__int64 v17; // x5
__int64 v18; // x6
__int64 v19; // x7
__int64 v20; // x0
__int64 v21; // x1
__int64 v22; // x2
__int64 v23; // x3
__int64 v24; // x4
__int64 v25; // x5
__int64 v26; // x6
__int64 v27; // x7
__int64 v28; // x2
__int64 v29; // x3
__int64 v30; // x4
__int64 v31; // x5
__int64 v32; // x6
__int64 v33; // x7
__int64 v34; // x3
__int64 v35; // x4
__int64 v36; // x5
__int64 v37; // x6
__int64 v38; // x7
__int64 v39; // x2
__int64 v40; // x3
__int64 v41; // x4
__int64 v42; // x5
__int64 v43; // x6
__int64 v44; // x7
__int64 v45; // x2
__int64 v46; // x3
__int64 v47; // x4
__int64 v48; // x5
__int64 v49; // x6
__int64 v50; // x7
__int64 v51; // x19
__int64 v52; // x2
__int64 v53; // x3
__int64 v54; // x4
__int64 v55; // x5
__int64 v56; // x6
__int64 v57; // x7
__int64 v58; // x3
__int64 v59; // x4
__int64 v60; // x5
__int64 v61; // x6
__int64 v62; // x7
__int64 v63; // x2
__int64 v64; // x3
__int64 v65; // x4
__int64 v66; // x5
__int64 v67; // x6
__int64 v68; // x7
__int64 v69; // x2
__int64 v70; // x3
__int64 v71; // x4
__int64 v72; // x5
__int64 v73; // x6
__int64 v74; // x7
sub_1800B716C(8592031744LL, 3LL, a3, a4, a5, a6, a7, a8);
for ( i = 0LL; i != 98304; i += 0x8000LL )
sub_1800B716C(i + 8592162824LL, 1LL, v8, v9, v10, v11, v12, v13);
sub_1800B716C(8592162960LL, 1LL, v8, v9, v10, v11, v12, v13);
v20 = sub_1800B72C0(8592162960LL, 1LL, 0LL, v15, v16, v17, v18, v19);
if ( MEMORY[0x180115A28] == 1 )
sub_1800C9DC8(v20, v21, v22, v23, v24, v25, v26, v27);
sub_1800B797C(0x898u, (__int64)"After Enable Auto-Refresh", v22, v23, v24, v25, v26, v27);
sub_1800B716C(8592032848LL, 0x10000LL, v28, v29, v30, v31, v32, v33);
sub_1800B72C0(8592032848LL, 0x10000LL, 0LL, v34, v35, v36, v37, v38);
sub_1800B797C(2u, (__int64)"After SoC Update", v39, v40, v41, v42, v43, v44);
if ( MEMORY[0x180115A28] )
v51 = 0x4000LL;
else
v51 = 0LL;
sub_1800B716C(8592033024LL, v51, v45, v46, v47, v48, v49, v50);
sub_1800B716C(8592033024LL, (unsigned int)v51 | 1, v52, v53, v54, v55, v56, v57);
sub_1800B72C0(8592033024LL, 1LL, 0LL, v58, v59, v60, v61, v62);
sub_1800B797C(2u, 0LL, v63, v64, v65, v66, v67, v68);
return sub_1800B70E4(8842903620LL, (unsigned int)((1 << MEMORY[0x180115A34]) - 1), v69, v70, v71, v72, v73, v74);
}
//----- (00000001800CAD5C) ----------------------------------------------------
__int64 sub_1800CAD5C()
{
__int64 v0; // x2
__int64 v1; // x3
__int64 v2; // x4
__int64 v3; // x5
__int64 v4; // x6
__int64 v5; // x7
__int64 v6; // x2
__int64 v7; // x3
__int64 v8; // x4
__int64 v9; // x5
__int64 v10; // x6
__int64 v11; // x7
__int64 result; // x0
unsigned int v13; // w20
unsigned __int16 v14; // w21
sub_1800B75EC(2, MEMORY[0x180115A34], MEMORY[0x180115A38], 0, (_BYTE *)0x4F);
sub_1800B797C(1u, (__int64)"tZQCAL", v0, v1, v2, v3, v4, v5);
sub_1800B75EC(2, MEMORY[0x180115A34], MEMORY[0x180115A38], 0, (_BYTE *)0x51);
result = sub_1800B797C(1u, (__int64)"tZQLAT", v6, v7, v8, v9, v10, v11);
if ( !MEMORY[0x180115A28] )
{
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 2, 0LL);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 1, (_BYTE *)0x8E);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 3, (_BYTE *)0xF3);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 22, 0LL);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 11, 0LL);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 13, (_BYTE *)0x18);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 12, (_BYTE *)0x59);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 14, (_BYTE *)0x59);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 23, (_BYTE *)0x80);
v13 = MEMORY[0x200220E2C];
v14 = MEMORY[0x200220E30];
sub_1800B75EC(2, MEMORY[0x180115A34], MEMORY[0x180115A38], 15, (_BYTE *)((MEMORY[0x200220E2C] >> 16) & 0xFF));
sub_1800B75EC(2, MEMORY[0x180115A34], MEMORY[0x180115A38], 20, (_BYTE *)(v13 >> 24));
sub_1800B75EC(2, MEMORY[0x180115A34], MEMORY[0x180115A38], 32, (_BYTE *)(unsigned __int8)v14);
result = sub_1800B75EC(2, MEMORY[0x180115A34], MEMORY[0x180115A38], 40, (_BYTE *)(v14 >> 8));
}
return result;
}
//----- (00000001800CAF3C) ----------------------------------------------------
__int64 __fastcall sub_1800CAF3C(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
return sub_1800B70E4(8589935816LL, 197121LL, a3, a4, a5, a6, a7, a8);
}
//----- (00000001800CAF54) ----------------------------------------------------
__int64 sub_1800CAF54()
{
int *v0; // x0
__int64 v1; // x1
__int64 v2; // x2
__int64 v3; // x3
__int64 v4; // x4
__int64 v5; // x5
__int64 v6; // x6
__int64 v7; // x7
int v8; // w23
int v9; // w24
__int16 v10; // w9
__int64 v11; // x2
__int64 v12; // x3
__int64 v13; // x4
__int64 v14; // x5
__int64 v15; // x6
__int64 v16; // x7
__int64 v17; // x2
__int64 v18; // x3
__int64 v19; // x4
__int64 v20; // x5
__int64 v21; // x6
__int64 v22; // x7
__int64 v23; // x2
__int64 v24; // x3
__int64 v25; // x4
__int64 v26; // x5
__int64 v27; // x6
__int64 v28; // x7
__int64 v29; // x2
__int64 v30; // x3
__int64 v31; // x4
__int64 v32; // x5
__int64 v33; // x6
__int64 v34; // x7
__int64 v35; // x2
__int64 v36; // x3
__int64 v37; // x4
__int64 v38; // x5
__int64 v39; // x6
__int64 v40; // x7
__int64 v41; // x2
__int64 v42; // x3
__int64 v43; // x4
__int64 v44; // x5
__int64 v45; // x6
__int64 v46; // x7
__int64 v47; // x2
__int64 v48; // x3
__int64 v49; // x4
__int64 v50; // x5
__int64 v51; // x6
__int64 v52; // x7
__int64 v53; // x0
__int64 v54; // x1
bool v55; // zf
__int64 v56; // x2
__int64 v57; // x3
__int64 v58; // x4
__int64 v59; // x5
__int64 v60; // x6
__int64 v61; // x7
__int64 result; // x0
__int64 v63; // x1
__int64 v64; // x2
__int64 v65; // x3
__int64 v66; // x4
__int64 v67; // x5
__int64 v68; // x6
__int64 v69; // x7
v0 = (int *)sub_1800B6010();
v8 = *v0;
v9 = v0[5];
v10 = MEMORY[0x180115A3C];
if ( MEMORY[0x180115A3C] & 0x200 )
{
sub_1800EF260((__int64)"%llx:%d\n", v1, v2, v3, v4, v5, v6, v7, -4137634360339349652LL);
v10 = MEMORY[0x180115A3C];
}
if ( v10 & 0x200 )
sub_1800EF260((__int64)"%llx:%d\n", v1, v2, v3, v4, v5, v6, v7, -4137634360339349652LL);
if ( v9 == 3 )
{
sub_1800B70E4(8589935780LL, 328226LL, v2, v3, v4, v5, v6, v7);
sub_1800B70E4(8589935816LL, 262657LL, v11, v12, v13, v14, v15, v16);
if ( v8 != 6 )
goto LABEL_15;
sub_1800B716C(8592032624LL, 1218904237LL, v17, v18, v19, v20, v21, v22);
sub_1800B716C(8592032640LL, 2668285970LL, v23, v24, v25, v26, v27, v28);
sub_1800B716C(8592032628LL, 609484887LL, v29, v30, v31, v32, v33, v34);
sub_1800B716C(8592032644LL, 1342533650LL, v35, v36, v37, v38, v39, v40);
sub_1800B716C(8592032632LL, 152371222LL, v41, v42, v43, v44, v45, v46);
v53 = 8592032648LL;
v54 = 671178770LL;
goto LABEL_14;
}
sub_1800B70E4(8589935780LL, 328224LL, v2, v3, v4, v5, v6, v7);
if ( v8 == 6 )
v55 = v9 == 2;
else
v55 = 0;
if ( v55 )
{
sub_1800B716C(8592032624LL, 948895917LL, v17, v18, v19, v20, v21, v22);
sub_1800B716C(8592032628LL, 474480727LL, v56, v57, v58, v59, v60, v61);
v53 = 8592032632LL;
v54 = 118620182LL;
LABEL_14:
sub_1800B716C(v53, v54, v47, v48, v49, v50, v51, v52);
}
LABEL_15:
result = sub_1800B716C(8592032636LL, 50724870LL, v17, v18, v19, v20, v21, v22);
if ( MEMORY[0x180115A3C] & 0x200 )
result = sub_1800EF260((__int64)"%llx:%d\n", v63, v64, v65, v66, v67, v68, v69, -4137634360339349652LL);
return result;
}
// 180114568: using guessed type int dword_180114568;
//----- (00000001800CB1A8) ----------------------------------------------------
__int64 __fastcall sub_1800CB1A8(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
sub_1800B797C(5u, (__int64)"After Refresh", a3, a4, a5, a6, a7, a8);
return sub_1800B716C(8592031744LL, 3LL, v8, v9, v10, v11, v12, v13);
}
//----- (00000001800CB1D4) ----------------------------------------------------
__int64 sub_1800CB1D4()
{
int *v0; // x0
int v1; // w20
int v2; // w21
__int64 v3; // x2
__int64 v4; // x3
__int64 v5; // x4
__int64 v6; // x5
__int64 v7; // x6
__int64 v8; // x7
bool v9; // zf
__int64 v10; // x3
__int64 v11; // x4
__int64 v12; // x5
__int64 v13; // x6
__int64 v14; // x7
v0 = (int *)sub_1800B6010();
v1 = *v0;
v2 = v0[5];
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 13, (_BYTE *)0x58);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 2, (_BYTE *)0x52);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 1, (_BYTE *)0xAE);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 3, (_BYTE *)0x73);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 22, (_BYTE *)4);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 11, 0LL);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 12, (_BYTE *)0x51);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 14, (_BYTE *)0x59);
if ( v1 == 6 )
v9 = v2 == 3;
else
v9 = 0;
if ( v9 )
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 21, (_BYTE *)0xA0);
sub_1800B716C(8592164864LL, 512LL, v3, v4, v5, v6, v7, v8);
return sub_1800B72C0(8592164864LL, 512LL, 0LL, v10, v11, v12, v13, v14);
}
//----- (00000001800CB318) ----------------------------------------------------
__int64 sub_1800CB318()
{
__int64 v0; // x2
__int64 v1; // x3
__int64 v2; // x4
__int64 v3; // x5
__int64 v4; // x6
__int64 v5; // x7
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 13, (_BYTE *)0xD8);
return sub_1800B797C(1u, 0LL, v0, v1, v2, v3, v4, v5);
}
//----- (00000001800CB350) ----------------------------------------------------
__int64 __fastcall sub_1800CB350(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x3
__int64 v9; // x4
__int64 v10; // x5
__int64 v11; // x6
__int64 v12; // x7
__int64 v13; // x2
__int64 v14; // x3
__int64 v15; // x4
__int64 v16; // x5
__int64 v17; // x6
__int64 v18; // x7
__int64 v19; // x2
__int64 v20; // x3
__int64 v21; // x4
__int64 v22; // x5
__int64 v23; // x6
__int64 v24; // x7
sub_1800B716C(8592032848LL, 33619968LL, a3, a4, a5, a6, a7, a8);
sub_1800B72C0(8592032848LL, 0x10000LL, 0LL, v8, v9, v10, v11, v12);
sub_1800B716C(8592032848LL, 0x2000000LL, v13, v14, v15, v16, v17, v18);
return sub_1800B797C(2u, 0LL, v19, v20, v21, v22, v23, v24);
}
//----- (00000001800CB3A8) ----------------------------------------------------
__int64 __fastcall sub_1800CB3A8(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
sub_1800B716C(8592197152LL, 100663296LL, a3, a4, a5, a6, a7, a8);
return sub_1800B716C(8592229920LL, 100663296LL, v8, v9, v10, v11, v12, v13);
}
//----- (00000001800CB3E8) ----------------------------------------------------
__int64 __fastcall sub_1800CB3E8(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
sub_1800B716C(8592261320LL, 198538LL, a3, a4, a5, a6, a7, a8);
return sub_1800B716C(8592261432LL, 198538LL, v8, v9, v10, v11, v12, v13);
}
//----- (00000001800CB430) ----------------------------------------------------
__int64 sub_1800CB430()
{
int *v0; // x0
int v1; // w19
int v2; // w20
__int64 v3; // x2
__int64 v4; // x3
__int64 v5; // x4
__int64 v6; // x5
__int64 v7; // x6
__int64 v8; // x7
__int64 v9; // x2
__int64 v10; // x3
__int64 v11; // x4
__int64 v12; // x5
__int64 v13; // x6
__int64 v14; // x7
__int64 result; // x0
bool v16; // zf
v0 = (int *)sub_1800B6010();
v1 = *v0;
v2 = v0[5];
sub_1800B716C(8592261320LL, 1930LL, v3, v4, v5, v6, v7, v8);
sub_1800B716C(8592261432LL, 1930LL, v9, v10, v11, v12, v13, v14);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 13, (_BYTE *)0x98);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 2, (_BYTE *)0x2D);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 1, (_BYTE *)0xDE);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 3, (_BYTE *)0xB3);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 22, (_BYTE *)4);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 11, (_BYTE *)0x44);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 12, (_BYTE *)0x11);
result = sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 14, (_BYTE *)0x11);
if ( v1 == 6 )
v16 = v2 == 3;
else
v16 = 0;
if ( v16 )
result = sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 21, (_BYTE *)0x80);
return result;
}
//----- (00000001800CB580) ----------------------------------------------------
__int64 sub_1800CB580()
{
__int64 v0; // x2
__int64 v1; // x3
__int64 v2; // x4
__int64 v3; // x5
__int64 v4; // x6
__int64 v5; // x7
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 13, (_BYTE *)0x18);
return sub_1800B797C(1u, 0LL, v0, v1, v2, v3, v4, v5);
}
//----- (00000001800CB5B8) ----------------------------------------------------
__int64 __fastcall sub_1800CB5B8(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x3
__int64 v9; // x4
__int64 v10; // x5
__int64 v11; // x6
__int64 v12; // x7
__int64 v13; // x2
__int64 v14; // x3
__int64 v15; // x4
__int64 v16; // x5
__int64 v17; // x6
__int64 v18; // x7
__int64 v19; // x2
__int64 v20; // x3
__int64 v21; // x4
__int64 v22; // x5
__int64 v23; // x6
__int64 v24; // x7
sub_1800B716C(8592032848LL, 0x10000LL, a3, a4, a5, a6, a7, a8);
sub_1800B72C0(8592032848LL, 0x10000LL, 0LL, v8, v9, v10, v11, v12);
sub_1800B716C(8592032848LL, 0LL, v13, v14, v15, v16, v17, v18);
return sub_1800B797C(2u, 0LL, v19, v20, v21, v22, v23, v24);
}
//----- (00000001800CB610) ----------------------------------------------------
__int64 __fastcall sub_1800CB610(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
__int64 v14; // x2
__int64 v15; // x3
__int64 v16; // x4
__int64 v17; // x5
__int64 v18; // x6
__int64 v19; // x7
__int64 v20; // x2
__int64 v21; // x3
__int64 v22; // x4
__int64 v23; // x5
__int64 v24; // x6
__int64 v25; // x7
__int64 v26; // x2
__int64 v27; // x3
__int64 v28; // x4
__int64 v29; // x5
__int64 v30; // x6
__int64 v31; // x7
__int64 v32; // x2
__int64 v33; // x3
__int64 v34; // x4
__int64 v35; // x5
__int64 v36; // x6
__int64 v37; // x7
__int64 v38; // x2
__int64 v39; // x3
__int64 v40; // x4
__int64 v41; // x5
__int64 v42; // x6
__int64 v43; // x7
__int64 v44; // x2
__int64 v45; // x3
__int64 v46; // x4
__int64 v47; // x5
__int64 v48; // x6
__int64 v49; // x7
__int64 v50; // x2
__int64 v51; // x3
__int64 v52; // x4
__int64 v53; // x5
__int64 v54; // x6
__int64 v55; // x7
sub_1800B716C(8592261884LL, 3094LL, a3, a4, a5, a6, a7, a8);
sub_1800B75EC(1, MEMORY[0x180115A34], MEMORY[0x180115A38], 13, (_BYTE *)0x50);
sub_1800B797C(1u, 0LL, v8, v9, v10, v11, v12, v13);
sub_1800B716C(8592032848LL, 39321LL, v14, v15, v16, v17, v18, v19);
sub_1800B716C(8592197120LL, 4278190088LL, v20, v21, v22, v23, v24, v25);
sub_1800B716C(8592229888LL, 4278190088LL, v26, v27, v28, v29, v30, v31);
sub_1800B716C(8592166452LL, 0LL, v32, v33, v34, v35, v36, v37);
sub_1800B716C(8592166452LL, 3LL, v38, v39, v40, v41, v42, v43);
sub_1800B716C(8592166616LL, 29666913LL, v44, v45, v46, v47, v48, v49);
return sub_1800B716C(8592166632LL, 18874465LL, v50, v51, v52, v53, v54, v55);
}
//----- (00000001800CB700) ----------------------------------------------------
__int64 __fastcall sub_1800CB700(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
__int64 v14; // x2
__int64 v15; // x3
__int64 v16; // x4
__int64 v17; // x5
__int64 v18; // x6
__int64 v19; // x7
__int64 v20; // x2
__int64 v21; // x3
__int64 v22; // x4
__int64 v23; // x5
__int64 v24; // x6
__int64 v25; // x7
__int64 v26; // x2
__int64 v27; // x3
__int64 v28; // x4
__int64 v29; // x5
__int64 v30; // x6
__int64 v31; // x7
__int64 v32; // x0
__int64 v33; // x1
__int64 v34; // x2
__int64 v35; // x3
__int64 v36; // x4
__int64 v37; // x5
__int64 v38; // x6
__int64 v39; // x7
__int64 v40; // x2
__int64 v41; // x3
__int64 v42; // x4
__int64 v43; // x5
__int64 v44; // x6
__int64 v45; // x7
__int64 v46; // x2
__int64 v47; // x3
__int64 v48; // x4
__int64 v49; // x5
__int64 v50; // x6
__int64 v51; // x7
__int64 v52; // x2
__int64 v53; // x3
__int64 v54; // x4
__int64 v55; // x5
__int64 v56; // x6
__int64 v57; // x7
__int64 v58; // x2
__int64 v59; // x3
__int64 v60; // x4
__int64 v61; // x5
__int64 v62; // x6
__int64 v63; // x7
sub_1800B716C(8592032792LL, 134291481LL, a3, a4, a5, a6, a7, a8);
sub_1800B716C(8592032804LL, 3221229568LL, v8, v9, v10, v11, v12, v13);
sub_1800B716C(8592032128LL, 136314880LL, v14, v15, v16, v17, v18, v19);
sub_1800B716C(8592032152LL, 527LL, v20, v21, v22, v23, v24, v25);
v32 = sub_1800B716C(8592032232LL, 256LL, v26, v27, v28, v29, v30, v31);
sub_1800C9DC8(v32, v33, v34, v35, v36, v37, v38, v39);
sub_1800B716C(8589934604LL, 1114212LL, v40, v41, v42, v43, v44, v45);
sub_1800B716C(8592261276LL, 3355LL, v46, v47, v48, v49, v50, v51);
sub_1800B716C(8592261272LL, 3LL, v52, v53, v54, v55, v56, v57);
return sub_1800B716C(8592261384LL, 3LL, v58, v59, v60, v61, v62, v63);
}
//----- (00000001800CB7C0) ----------------------------------------------------
__int64 __fastcall sub_1800CB7C0(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
__int64 v14; // x2
__int64 v15; // x3
__int64 v16; // x4
__int64 v17; // x5
__int64 v18; // x6
__int64 v19; // x7
sub_1800B716C(8592032156LL, 8288LL, a3, a4, a5, a6, a7, a8);
sub_1800B716C(8592032152LL, 527LL, v8, v9, v10, v11, v12, v13);
return sub_1800B70E4(8589936512LL, 1048868LL, v14, v15, v16, v17, v18, v19);
}
//----- (00000001800CB814) ----------------------------------------------------
__int64 sub_1800CB814()
{
_DWORD *v0; // x19
__int64 v1; // x2
__int64 v2; // x3
__int64 v3; // x4
__int64 v4; // x5
__int64 v5; // x6
__int64 v6; // x7
__int64 v7; // x2
__int64 v8; // x3
__int64 v9; // x4
__int64 v10; // x5
__int64 v11; // x6
__int64 v12; // x7
__int64 v13; // x2
__int64 v14; // x3
__int64 v15; // x4
__int64 v16; // x5
__int64 v17; // x6
__int64 v18; // x7
__int64 v19; // x2
__int64 v20; // x3
__int64 v21; // x4
__int64 v22; // x5
__int64 v23; // x6
__int64 v24; // x7
__int64 v25; // x2
__int64 v26; // x3
__int64 v27; // x4
__int64 v28; // x5
__int64 v29; // x6
__int64 v30; // x7
__int64 v31; // x2
__int64 v32; // x3
__int64 v33; // x4
__int64 v34; // x5
__int64 v35; // x6
__int64 v36; // x7
__int64 v37; // x2
__int64 v38; // x3
__int64 v39; // x4
__int64 v40; // x5
__int64 v41; // x6
__int64 v42; // x7
__int64 v43; // x2
__int64 v44; // x3
__int64 v45; // x4
__int64 v46; // x5
__int64 v47; // x6
__int64 v48; // x7
__int64 v49; // x2
__int64 v50; // x3
__int64 v51; // x4
__int64 v52; // x5
__int64 v53; // x6
__int64 v54; // x7
__int64 v55; // x2
__int64 v56; // x3
__int64 v57; // x4
__int64 v58; // x5
__int64 v59; // x6
__int64 v60; // x7
__int64 v61; // x2
__int64 v62; // x3
__int64 v63; // x4
__int64 v64; // x5
__int64 v65; // x6
__int64 v66; // x7
__int64 v67; // x2
__int64 v68; // x3
__int64 v69; // x4
__int64 v70; // x5
__int64 v71; // x6
__int64 v72; // x7
__int64 v73; // x2
__int64 v74; // x3
__int64 v75; // x4
__int64 v76; // x5
__int64 v77; // x6
__int64 v78; // x7
__int64 v79; // x2
__int64 v80; // x3
__int64 v81; // x4
__int64 v82; // x5
__int64 v83; // x6
__int64 v84; // x7
__int64 v85; // x2
__int64 v86; // x3
__int64 v87; // x4
__int64 v88; // x5
__int64 v89; // x6
__int64 v90; // x7
__int64 v91; // x2
__int64 v92; // x3
__int64 v93; // x4
__int64 v94; // x5
__int64 v95; // x6
__int64 v96; // x7
__int64 v97; // x2
__int64 v98; // x3
__int64 v99; // x4
__int64 v100; // x5
__int64 v101; // x6
__int64 v102; // x7
__int64 v103; // x2
__int64 v104; // x3
__int64 v105; // x4
__int64 v106; // x5
__int64 v107; // x6
__int64 v108; // x7
__int64 v109; // x2
__int64 v110; // x3
__int64 v111; // x4
__int64 v112; // x5
__int64 v113; // x6
__int64 v114; // x7
__int64 v115; // x2
__int64 v116; // x3
__int64 v117; // x4
__int64 v118; // x5
__int64 v119; // x6
__int64 v120; // x7
__int64 v121; // x2
__int64 v122; // x3
__int64 v123; // x4
__int64 v124; // x5
__int64 v125; // x6
__int64 v126; // x7
__int64 v127; // x2
__int64 v128; // x3
__int64 v129; // x4
__int64 v130; // x5
__int64 v131; // x6
__int64 v132; // x7
__int64 v133; // x2
__int64 v134; // x3
__int64 v135; // x4
__int64 v136; // x5
__int64 v137; // x6
__int64 v138; // x7
__int64 v139; // x2
__int64 v140; // x3
__int64 v141; // x4
__int64 v142; // x5
__int64 v143; // x6
__int64 v144; // x7
__int64 v145; // x2
__int64 v146; // x3
__int64 v147; // x4
__int64 v148; // x5
__int64 v149; // x6
__int64 v150; // x7
__int64 v151; // x2
__int64 v152; // x3
__int64 v153; // x4
__int64 v154; // x5
__int64 v155; // x6
__int64 v156; // x7
__int64 v157; // x2
__int64 v158; // x3
__int64 v159; // x4
__int64 v160; // x5
__int64 v161; // x6
__int64 v162; // x7
int v163; // w8
__int64 v164; // x2
__int64 v165; // x3
__int64 v166; // x4
__int64 v167; // x5
__int64 v168; // x6
__int64 v169; // x7
__int64 v170; // x2
__int64 v171; // x3
__int64 v172; // x4
__int64 v173; // x5
__int64 v174; // x6
__int64 v175; // x7
__int64 v176; // x2
__int64 v177; // x3
__int64 v178; // x4
__int64 v179; // x5
__int64 v180; // x6
__int64 v181; // x7
__int64 v182; // x2
__int64 v183; // x3
__int64 v184; // x4
__int64 v185; // x5
__int64 v186; // x6
__int64 v187; // x7
__int64 v188; // x0
__int64 v189; // x1
__int64 v190; // x2
__int64 v191; // x3
__int64 v192; // x4
__int64 v193; // x5
__int64 v194; // x6
__int64 v195; // x7
__int64 v197; // x2
__int64 v198; // x3
__int64 v199; // x4
__int64 v200; // x5
__int64 v201; // x6
__int64 v202; // x7
__int64 v203; // x2
__int64 v204; // x3
__int64 v205; // x4
__int64 v206; // x5
__int64 v207; // x6
__int64 v208; // x7
__int64 v209; // x2
__int64 v210; // x3
__int64 v211; // x4
__int64 v212; // x5
__int64 v213; // x6
__int64 v214; // x7
v0 = (_DWORD *)sub_1800B6010();
sub_1800B716C(8592162820LL, 2315255808LL, v1, v2, v3, v4, v5, v6);
sub_1800B716C(8592195588LL, 0x80000000LL, v7, v8, v9, v10, v11, v12);
sub_1800B716C(8592228356LL, 0x80000000LL, v13, v14, v15, v16, v17, v18);
sub_1800B716C(8592080996LL, 1LL, v19, v20, v21, v22, v23, v24);
sub_1800B716C(8592032808LL, 51LL, v25, v26, v27, v28, v29, v30);
sub_1800B70E4(8842903612LL, 511LL, v31, v32, v33, v34, v35, v36);
sub_1800B716C(8592032236LL, 31850784LL, v37, v38, v39, v40, v41, v42);
sub_1800B70E4(8842903632LL, 31457568LL, v43, v44, v45, v46, v47, v48);
sub_1800B70E4(8842903636LL, 31457760LL, v49, v50, v51, v52, v53, v54);
sub_1800B70E4(8842903640LL, 62915136LL, v55, v56, v57, v58, v59, v60);
sub_1800B70E4(8842903644LL, 62915520LL, v61, v62, v63, v64, v65, v66);
sub_1800B70E4(8842903684LL, 31457568LL, v67, v68, v69, v70, v71, v72);
sub_1800B70E4(8842903688LL, 18874656LL, v73, v74, v75, v76, v77, v78);
sub_1800B70E4(8842903648LL, 18874656LL, v79, v80, v81, v82, v83, v84);
sub_1800B70E4(8842903652LL, 18874656LL, v85, v86, v87, v88, v89, v90);
sub_1800B70E4(8842903624LL, 18874656LL, v91, v92, v93, v94, v95, v96);
sub_1800B70E4(8842903628LL, 18874656LL, v97, v98, v99, v100, v101, v102);
sub_1800B70E4(8842903676LL, 31457568LL, v103, v104, v105, v106, v107, v108);
sub_1800B70E4(8842903680LL, 18874656LL, v109, v110, v111, v112, v113, v114);
sub_1800B70E4(8842903672LL, 13107680LL, v115, v116, v117, v118, v119, v120);
sub_1800B70E4(8842903552LL, 3000LL, v121, v122, v123, v124, v125, v126);
sub_1800B70E4(8842903580LL, 3000LL, v127, v128, v129, v130, v131, v132);
sub_1800B70E4(8842903556LL, 75LL, v133, v134, v135, v136, v137, v138);
sub_1800B70E4(8842903560LL, 15LL, v139, v140, v141, v142, v143, v144);
sub_1800B70E4(8842903568LL, 3000000LL, v145, v146, v147, v148, v149, v150);
sub_1800B70E4(8842903572LL, 3000000LL, v151, v152, v153, v154, v155, v156);
if ( *v0 == 1 )
{
v163 = v0[5];
if ( v163 == 3 )
{
if ( v0[1] == 5 && !v0[2] )
goto LABEL_11;
}
else if ( v163 == 2 && v0[1] == 5 && v0[2] == 1 )
{
LABEL_11:
sub_1800B70E4(8842903584LL, 1LL, v157, v158, v159, v160, v161, v162);
sub_1800B70E4(8842903592LL, 12000LL, v197, v198, v199, v200, v201, v202);
sub_1800B70E4(8842903696LL, 67LL, v203, v204, v205, v206, v207, v208);
sub_1800B70E4(8842903596LL, 31LL, v209, v210, v211, v212, v213, v214);
v188 = 8842903600LL;
v189 = 15LL;
goto LABEL_10;
}
}
sub_1800B70E4(8842903576LL, 4000000LL, v157, v158, v159, v160, v161, v162);
sub_1800B70E4(8842903584LL, 1LL, v164, v165, v166, v167, v168, v169);
sub_1800B70E4(8842903592LL, 12000LL, v170, v171, v172, v173, v174, v175);
sub_1800B70E4(8842903696LL, 67LL, v176, v177, v178, v179, v180, v181);
v188 = 8842903608LL;
v189 = 255LL;
LABEL_10:
sub_1800B70E4(v188, v189, v182, v183, v184, v185, v186, v187);
return sub_1800B716C(8592031760LL, 84541440LL, v190, v191, v192, v193, v194, v195);
}
//----- (00000001800CBAD4) ----------------------------------------------------
__int64 sub_1800CBAD4()
{
__int64 v0; // x2
__int64 v1; // x3
__int64 v2; // x4
__int64 v3; // x5
__int64 v4; // x6
__int64 v5; // x7
__int64 result; // x0
char v7; // [xsp+8h] [xbp-88h]
__int64 v8; // [xsp+88h] [xbp-8h]
v8 = 5139240511851214385LL;
sub_1800B75EC(0, MEMORY[0x180115A34], MEMORY[0x180115A38], 4, &v7);
result = sub_1800B716C(8592032804LL, 3221238560LL, v0, v1, v2, v3, v4, v5);
if ( 5139240511851214385LL != v8 )
sub_1800D4A5C();
return result;
}
//----- (00000001800CBB54) ----------------------------------------------------
signed __int64 __fastcall sub_1800CBB54(int a1, int a2, int a3)
{
__int64 v3; // x9
__int64 i; // x9
__int64 j; // x9
__int64 k; // x9
__int64 l; // x9
__int64 m; // x9
__int64 n; // x9
__int64 v10; // x9
__int64 v11; // x9
signed __int64 v12; // x10
int *v13; // x11
_DWORD *v14; // x12
int *v15; // x13
signed __int64 ii; // x14
int v17; // t1
v3 = 0LL;
MEMORY[0x180121584] = a3;
MEMORY[0x18012157C] = a2;
MEMORY[0x180121580] = a2;
MEMORY[0x180121588] = 631;
MEMORY[0x18012158C] = 1262;
MEMORY[0x180121598] = 18;
MEMORY[0x18012159C] = 23;
MEMORY[0x1801215A0] = 23;
MEMORY[0x180121594] = 15;
MEMORY[0x1801215A8] = 15;
MEMORY[0x1801215AC] = 20;
MEMORY[0x1801215B0] = 1;
while ( v3 != 15 )
{
*(_DWORD *)(4 * v3 + 0x1801215DCLL) = v3 + 8;
++v3;
}
for ( i = 0LL; i != 18; ++i )
*(_DWORD *)(4 * i + 0x180121618LL) = i + 73;
for ( j = 0LL; j != 23; ++j )
*(_DWORD *)(4 * j + 0x180121660LL) = j + 174;
for ( k = 0LL; k != 23; ++k )
*(_DWORD *)(4 * k + 0x1801216BCLL) = k + 224;
for ( l = 0LL; l != 15; ++l )
*(_DWORD *)(4 * l + 0x180121740LL) = l + 8;
for ( m = 0LL; m != 20; ++m )
*(_DWORD *)(4 * m + 0x18012177CLL) = m + 80;
for ( n = 0LL; n != 8; ++n )
*(_DWORD *)(4 * n + 0x1801217F4LL) = n;
v10 = 0uLL;
MEMORY[0x180121814] = 1;
MEMORY[0x1801217CC] = a1 != 0;
MEMORY[0x1801217CD] = 0;
MEMORY[0x1801217D4] = 15;
MEMORY[0x1801217D8] = 1;
MEMORY[0x1801217DC] = 1;
MEMORY[0x1801218CC] = 16;
MEMORY[0x1801218D0] = 12;
MEMORY[0x1801217E0] = 2;
MEMORY[0x1801217E4] = 1;
MEMORY[0x1801217E8] = 1;
MEMORY[0x1801217EC] = 0;
MEMORY[0x1801217F0] = 0;
MEMORY[0x1801218C8] = 1;
MEMORY[0x1801218D4] = 0;
MEMORY[0x1801218D8] = 0;
MEMORY[0x1801217D0] = 1;
MEMORY[0x1801218B0] = 15;
MEMORY[0x1801218B4] = 21;
MEMORY[0x1801218B8] = 11;
MEMORY[0x1801218AC] = 2;
MEMORY[0x1801218A8] = 2;
MEMORY[0x1801218A0] = 160;
MEMORY[0x180121894] = 20;
MEMORY[0x180121898] = 13;
MEMORY[0x18012189C] = 9;
MEMORY[0x1801218BC] = 9;
MEMORY[0x1801218C0] = 7;
MEMORY[0x1801218C4] = 0;
MEMORY[0x180121818] = 1894911016;
MEMORY[0x18012181C] = 1665907093;
MEMORY[0x180121820] = 28015;
MEMORY[0x180121824] = 0;
MEMORY[0x180121888] = 101;
MEMORY[0x18012188C] = 1;
MEMORY[0x180121890] = 2;
while ( v10 != 6 )
{
*(_DWORD *)(v10 * 4 + 6443636776LL) = dword_18010D5F0[v10];
++v10;
}
v11 = 0LL;
v12 = 6443636800LL;
v13 = &dword_18010D608;
while ( v11 != 2 )
{
v14 = (_DWORD *)v12;
v15 = v13;
for ( ii = 9LL; ii; --ii )
{
v17 = *v15;
++v15;
*v14 = v17;
++v14;
}
++v11;
v13 += 9;
v12 += 36LL;
}
return 6443636084LL;
}
// 18010D5F0: using guessed type int dword_18010D5F0[];
// 18010D608: using guessed type int dword_18010D608;
//----- (00000001800CBDDC) ----------------------------------------------------
void sub_1800CBDDC()
{
__int64 v0; // x13
unsigned int v1; // w9
unsigned int v2; // w15
signed __int64 v3; // x16
unsigned int v4; // w14
LOBYTE(v0) = 0;
v1 = MEMORY[0x18012157C];
while ( 1 )
{
v0 = (unsigned __int8)v0;
if ( (unsigned __int8)v0 >= v1 )
break;
v2 = *(_DWORD *)((v0 << 18) + 0x200228194LL) & 0xFF;
v3 = 12LL * (unsigned int)v0 + 6443633504LL;
*(_DWORD *)(v3 + 304) = v2;
v4 = *(_DWORD *)((v0 << 18) + 0x200230194LL);
*(_DWORD *)(v3 + 308) = (unsigned __int8)v4;
if ( v2 <= (unsigned __int8)v4 )
v4 = (unsigned __int8)v4;
else
v4 = v2;
*(_DWORD *)(12LL * (unsigned int)v0 + 0x180120C8CLL) = v4;
LOBYTE(v0) = v0 + 1;
}
}
//----- (00000001800CBE44) ----------------------------------------------------
__int64 __fastcall sub_1800CBE44(__int64 a1, int a2, int a3)
{
__int64 v3; // x20
__int64 result; // x0
__int64 v5; // x19
v3 = (unsigned int)((_DWORD)a1 << 18);
*(_DWORD *)(v3 + 0x200220800LL) = a2 | (a3 << 16) | *(_DWORD *)(v3 + 0x200220800LL) & 0xFF00FF00 | 0x200;
result = sub_1800E1188(a1);
v5 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*(_DWORD *)(v3 + 8592164864LL) & 0x200) )
break;
if ( (unsigned __int64)(result - v5) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 2189LL);
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800CBEE8) ----------------------------------------------------
__int64 __fastcall sub_1800CBEE8(__int64 a1, int a2, int a3, int a4)
{
unsigned __int64 v4; // x8
_DWORD *v5; // x20
__int64 result; // x0
__int64 v7; // x19
v4 = (unsigned int)((_DWORD)a1 << 18) + (unsigned __int64)(unsigned int)((a2 << 15) + 0x8000) + 8592162816LL;
v5 = (_DWORD *)(v4 | 0x704);
*(_DWORD *)(v4 + 1796) = a3 | (a4 << 16) | *(_DWORD *)((unsigned int)((_DWORD)a1 << 18)
+ (unsigned __int64)(unsigned int)((a2 << 15) + 0x8000)
+ 0x200220704LL) & 0xFF00FF00 | 0x200;
result = sub_1800E1188(a1);
v7 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*v5 & 0x200) )
break;
if ( (unsigned __int64)(result - v7) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 2207LL);
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800CBFA0) ----------------------------------------------------
__int64 __fastcall sub_1800CBFA0(__int64 a1, unsigned __int16 a2)
{
__int64 v2; // x20
__int64 result; // x0
__int64 v4; // x19
v2 = (unsigned int)((_DWORD)a1 << 18);
*(_DWORD *)(v2 + 0x200220700LL) = (a2 << 16) | 4;
result = sub_1800E1188(a1);
v4 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*(_DWORD *)(v2 + 8592164608LL) & 4) )
break;
if ( (unsigned __int64)(result - v4) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 1616LL);
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800CC038) ----------------------------------------------------
__int64 __fastcall sub_1800CC038(__int64 a1, unsigned __int16 a2)
{
__int64 v2; // x20
__int64 result; // x0
__int64 v4; // x19
v2 = (unsigned int)((_DWORD)a1 << 18);
*(_DWORD *)(v2 + 0x200220710LL) = (a2 << 16) | 4;
result = sub_1800E1188(a1);
v4 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*(_DWORD *)(v2 + 8592164624LL) & 4) )
break;
if ( (unsigned __int64)(result - v4) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 1648LL);
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800CC0D0) ----------------------------------------------------
__int64 __fastcall sub_1800CC0D0(__int64 a1, unsigned __int16 a2)
{
__int64 v2; // x20
__int64 result; // x0
__int64 v4; // x19
v2 = (unsigned int)((_DWORD)a1 << 18);
*(_DWORD *)(v2 + 0x200220708LL) = (a2 << 16) | 4;
result = sub_1800E1188(a1);
v4 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*(_DWORD *)(v2 + 8592164616LL) & 4) )
break;
if ( (unsigned __int64)(result - v4) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 1681LL);
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800CC168) ----------------------------------------------------
__int64 __fastcall sub_1800CC168(__int64 result, int a2, int a3)
{
unsigned int *v3; // x8
unsigned int v4; // w9
if ( a3 == 1 )
{
v3 = (unsigned int *)((unsigned int)((_DWORD)result << 18) + 8592166680LL);
v4 = *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200220F1CLL) & 0xFFFF00FF | (a2 << 8) | 0x8000;
}
else
{
if ( a3 )
return result;
v3 = (unsigned int *)((unsigned int)((_DWORD)result << 18) + 8592166680LL);
v4 = *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200220F1CLL) & 0xFFFFFF00 | a2 | 0x80;
}
*v3 = v4;
return result;
}
//----- (00000001800CC1BC) ----------------------------------------------------
__int64 __fastcall sub_1800CC1BC(__int64 result)
{
__int64 i; // x8
__int64 j; // x11
__int64 v3; // xzr
if ( result & 0xF )
{
for ( i = 0LL; i != MEMORY[0x18012157C]; ++i )
{
if ( result & 8 )
{
for ( j = 0LL; j != 0x10000; j += 0x8000LL )
v3 = *(unsigned int *)(((unsigned __int64)(i & 0x3FFF) << 18) + 8592197124LL + j);
}
}
}
return result;
}
//----- (00000001800CC218) ----------------------------------------------------
// write access to const memory has been detected, the output may be wrong!
void sub_1800CC218()
{
unsigned int v0; // w8
unsigned int v1; // w9
int v2; // w10
unsigned int v3; // w11
unsigned int v4; // w12
signed __int64 v5; // x1
unsigned int v6; // w8
unsigned int v7; // w8
__int64 v8; // x9
_DWORD *v9; // x10
unsigned int v10; // w11
__int64 v11; // x19
unsigned int v12; // w20
unsigned __int64 v13; // x28
unsigned int v14; // w9
int v15; // w1
__int64 v16; // x1
__int64 v17; // x2
__int64 v18; // x3
__int64 v19; // x4
__int64 v20; // x5
__int64 v21; // x6
__int64 v22; // x7
__int64 v23; // x8
_DWORD *v24; // x10
__int64 v25; // x0
__int64 i; // x8
unsigned __int64 v27; // x24
__int64 v28; // x22
__int64 v29; // x1
__int64 v30; // x2
__int64 v31; // x3
__int64 v32; // x4
__int64 v33; // x5
__int64 v34; // x6
__int64 v35; // x7
signed int v36; // w8
unsigned int v37; // w8
unsigned int v38; // w22
__int64 j; // x22
signed __int64 v40; // x24
int v41; // w0
unsigned int v42; // w1
__int64 v43; // x0
signed int v44; // w8
int *v45; // x9
__int64 v46; // x10
int v47; // t1
int *v48; // x8
int v49; // w1
unsigned int v50; // w8
__int64 k; // x19
unsigned int l; // w20
unsigned int m; // w21
int v54; // w1
__int64 v55; // x1
__int64 v56; // x2
__int64 v57; // x3
__int64 v58; // x4
__int64 v59; // x5
__int64 v60; // x6
__int64 v61; // x7
__int64 v62; // x22
int v63; // w8
_DWORD *v64; // x28
__int64 v65; // x1
__int64 v66; // x2
__int64 v67; // x3
__int64 v68; // x4
__int64 v69; // x5
__int64 v70; // x6
__int64 v71; // x7
int v72; // w0
unsigned int v73; // w1
signed __int64 v74; // x8
unsigned int v75; // [xsp+1Ch] [xbp-114h]
signed __int64 v76; // [xsp+20h] [xbp-110h]
signed __int64 v77; // [xsp+28h] [xbp-108h]
_DWORD *v78; // [xsp+30h] [xbp-100h]
signed __int64 v79; // [xsp+40h] [xbp-F0h]
signed __int64 v80; // [xsp+A0h] [xbp-90h]
__int64 v81; // [xsp+B0h] [xbp-80h]
unsigned int v82; // [xsp+BCh] [xbp-74h]
unsigned int v83; // [xsp+C0h] [xbp-70h]
int v84; // [xsp+C4h] [xbp-6Ch]
char v85[16]; // [xsp+C8h] [xbp-68h]
__int64 v86; // [xsp+D8h] [xbp-58h]
v0 = 0;
v1 = 0;
v86 = 5139240511851214385LL;
v2 = MEMORY[0x1801218C8];
v3 = MEMORY[0x180121594];
v4 = MEMORY[0x180121598];
while ( v1 < MEMORY[0x18012157C] )
{
if ( MEMORY[0x1801218C8] == 1 )
{
*(_DWORD *)(v0 + 0x200220910LL) = 108397382;
*(_DWORD *)(v0 + 0x200220914LL) = 104203078;
}
else
{
*(_DWORD *)(v0 + 0x200220910LL) = 106300262;
*(_DWORD *)(v0 + 0x200220914LL) = 102105958;
}
v5 = v0 + 8592164608LL;
*(_DWORD *)(v5 + 556) = 50462976;
*(_DWORD *)(v5 + 560) = 1284;
++v1;
v0 += 0x40000;
}
if ( v2 )
v6 = v4;
else
v6 = v3;
v83 = v6;
v7 = MEMORY[0x1801217D8];
v8 = (unsigned int)(MEMORY[0x1801217D4] * MEMORY[0x1801217D8]);
v9 = (_DWORD *)6443634452LL;
while ( v8 )
{
*v9 = 63;
++v9;
--v8;
}
v10 = 0;
v11 = 0LL;
while ( (unsigned int)v11 < MEMORY[0x180121580] )
{
v12 = 0;
v79 = 72LL * (unsigned int)v11 + 6443634708LL;
v80 = v10 + 8592164096LL;
v77 = 24LL * (unsigned int)v11 + 6443634164LL;
v13 = (unsigned int)((_DWORD)v11 << 18);
v78 = (_DWORD *)(12LL * (unsigned int)v11 + 6443633804LL);
v75 = v10;
v81 = (unsigned int)v11;
v82 = v11;
v76 = v10 + 8592195980LL;
while ( v12 < MEMORY[0x180121584] )
{
v14 = 0;
while ( v14 < v7 )
{
v84 = v14;
*(_DWORD *)(v13 + 8592165144LL) = (MEMORY[0x18012180C] << 24) | (MEMORY[0x180121810] << 28) | (MEMORY[0x180121808] << 20) | (MEMORY[0x180121804] << 16) | (MEMORY[0x180121800] << 12) | (MEMORY[0x1801217FC] << 8) | 16 * MEMORY[0x1801217F8] | MEMORY[0x1801217F4];
*(_DWORD *)(v13 + 8592165120LL) = (v12 << 24) | (MEMORY[0x180121814] << 28) | (MEMORY[0x1801217D4] << 16) | (MEMORY[0x180121894] << 8) | MEMORY[0x180121898];
*(_DWORD *)(v13 + 8592165124LL) = (MEMORY[0x1801218A8] << 16) | (MEMORY[0x1801218AC] << 24) | (MEMORY[0x1801218A0] << 8) | MEMORY[0x18012189C];
*(_DWORD *)(v13 + 8592165160LL) = (MEMORY[0x18012188C] << 16) | (MEMORY[0x180121890] << 24) | (MEMORY[0x1801218BC] << 8) | MEMORY[0x1801218C0];
*(_DWORD *)(v13 + 8592165132LL) = MEMORY[0x180121888] << 16;
*(_DWORD *)(v13 + 8592166560LL) = MEMORY[0x180121818];
*(_DWORD *)(v13 + 8592166564LL) = MEMORY[0x18012181C];
*(_DWORD *)(v13 + 8592166568LL) = MEMORY[0x180121820];
*(_DWORD *)(v13 + 8592166572LL) = MEMORY[0x180121824];
*(_DWORD *)(v13 + 8592165164LL) = (MEMORY[0x180121830] << 16) | (MEMORY[0x180121834] << 24) | (MEMORY[0x18012182C] << 8) | MEMORY[0x180121828];
*(_DWORD *)(v13 + 8592165168LL) = MEMORY[0x180121838] | (MEMORY[0x18012183C] << 8);
if ( MEMORY[0x1801218C8] == 1 )
v15 = 3;
else
v15 = 1;
sub_1800CCC0C(v11, v15);
sub_1800CCCD0(v11, MEMORY[0x1801218C8]);
sub_1800CCD74(v11);
if ( MEMORY[0x1801218C8] <= 1 )
sub_1800B6208(MEMORY[0x1801218C8], v16, v17, v18, v19, v20, v21, v22);
sub_1800CCE0C(v11);
if ( !MEMORY[0x1801218C8] )
{
v23 = 0LL;
v24 = (_DWORD *)(4 * v81 + 6443633504LL);
v24[19] = (*(_DWORD *)(v13 + 8592164624LL) >> 16) & 0xFF;
v24[15] = (*(_DWORD *)(v13 + 8592164616LL) >> 16) & 0xFF;
v24[27] = (*(_DWORD *)(v13 + 8592164608LL) >> 16) & 0xFF;
while ( v23 != 24 )
{
*(_DWORD *)(v77 + v23) = *(_DWORD *)(v80 + v23) & 0x3F;
v23 += 4LL;
}
}
sub_1800CCE40(v11);
sub_1800CCEF8(v11);
v25 = sub_1800CBE44(v11, 0, 0);
if ( !MEMORY[0x1801218C8] )
{
for ( i = 0LL; i != 0x10000; i += 0x8000LL )
*(_DWORD *)(v76 + i) = 1;
v27 = 0LL;
while ( v27 <= 1 )
{
v25 = sub_1800E1188(v25);
v28 = v25;
while ( 1 )
{
v25 = sub_1800E1188(v25);
if ( !(*(_DWORD *)((v27 << 15) + v13 + 8592195980LL) & 1) )
break;
if ( (unsigned __int64)(v25 - v28) >= 0xF4240 )
{
v74 = 1416LL;
goto LABEL_93;
}
}
++v27;
v11 = v82;
}
}
sub_1800CBDDC();
v36 = MEMORY[0x1801218C8];
if ( !MEMORY[0x1801218C8] && MEMORY[0x1801217CD] )
{
if ( !MEMORY[0x180121588] )
{
dword_180114568 = 10;
MEMORY[0x180115A3C] |= 0x20u;
sub_1800CC1BC(15LL);
v74 = 1045LL;
LABEL_93:
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, v74);
}
v37 = 100 * MEMORY[0x18012158C] * *v78 / (unsigned int)(*(_DWORD *)&v85[4 * v81] * MEMORY[0x180121588]);
v38 = (*(_DWORD *)(4 * v81 + 0x180120B9CLL) * v37 + 50) / 0x64;
sub_1800CC038(v11, (*(_DWORD *)(4 * v81 + 0x180120BACLL) * v37 + 50) / 0x64);
sub_1800CC0D0(v11, v38);
v36 = MEMORY[0x1801218C8];
if ( MEMORY[0x1801218C8] == 1 )
{
*(_DWORD *)&v85[4 * v81] = *v78;
v36 = 1;
}
}
for ( j = 0LL; (unsigned int)j < v83; ++j )
{
if ( v36 == 1 )
{
sub_1800CCFFC(v11, *(_DWORD *)(4 * j + 0x180121618LL), MEMORY[0x1801217DC], MEMORY[0x1801217E0]);
v36 = MEMORY[0x1801218C8];
}
if ( !v36 )
sub_1800CCFFC(v11, *(_DWORD *)(4 * j + 0x1801215DCLL), MEMORY[0x1801217DC], MEMORY[0x1801217E0]);
sub_1800CD0A0(v11);
v40 = 4 * j + 6443633504LL;
*(_DWORD *)(v40 + 444) = 0;
*(_DWORD *)(v40 + 516) = 0;
sub_1800CD138(v11, v12, 0, v84, j);
sub_1800CD8E8();
*(_DWORD *)(v40 + 444) = (*(_DWORD *)(v13 + 8592164624LL) >> 16) & 0xFF;
*(_DWORD *)(v40 + 516) = (*(_DWORD *)(v13 + 8592164616LL) >> 16) & 0xFF;
sub_1800CD138(v11, v12, 1, v84, j);
sub_1800CCE40(v11);
sub_1800CCEF8(v11);
v36 = MEMORY[0x1801218C8];
}
if ( v36 == 1 )
{
v41 = 3;
}
else
{
sub_1800CDA4C(v11);
v41 = 1;
}
sub_1800B6208(v41, v29, v30, v31, v32, v33, v34, v35);
sub_1800CCE0C(v11);
sub_1800CDB48(v11);
if ( MEMORY[0x1801218C8] == 1 )
v42 = 3;
else
v42 = 1;
sub_1800CDC54(v11, v42);
v43 = sub_1800CDCD0(v11, MEMORY[0x1801218C8]);
v44 = 1;
v46 = v83;
v45 = (int *)v79;
while ( v46 )
{
v47 = *v45;
++v45;
v44 &= v47;
--v46;
}
if ( v44 == 1 )
{
dword_180114568 = 10;
MEMORY[0x180115A3C] |= 0x20u;
sub_1800CC1BC(15LL);
v74 = 1133LL;
goto LABEL_93;
}
if ( MEMORY[0x1801218C8] )
v48 = (int *)6443636120LL;
else
v48 = (int *)6443636116LL;
v49 = *v48;
v50 = v12 + (v11 + MEMORY[0x18012157C] * v84) * MEMORY[0x180121584];
sub_1800D0ED0(
v43,
v49,
6u,
432LL * v50 + 6443636960LL,
432LL * v50 + 6443638688LL,
(int *)(72LL * v50 + 6443634708LL),
0LL,
0LL,
(int *)(4LL * v50 + 6443633708LL),
(int *)(4LL * v50 + 6443633516LL));
v14 = v84 + 1;
v7 = MEMORY[0x1801217D8];
}
++v12;
}
v11 = (unsigned int)(v11 + 1);
v10 = v75 + 0x40000;
}
sub_1800CDD74();
for ( k = 0LL; (unsigned int)k < MEMORY[0x180121580]; k = (unsigned int)(k + 1) )
{
for ( l = 0; l < MEMORY[0x180121584]; ++l )
{
for ( m = 0; m < MEMORY[0x1801217D8]; ++m )
{
if ( MEMORY[0x1801218C8] == 1 )
v54 = 3;
else
v54 = 1;
sub_1800CCC0C(k, v54);
sub_1800CCCD0(k, MEMORY[0x1801218C8]);
sub_1800CCD74(k);
if ( MEMORY[0x1801218C8] <= 1 )
sub_1800B6208(MEMORY[0x1801218C8], v55, v56, v57, v58, v59, v60, v61);
sub_1800CCE0C(k);
v62 = *(unsigned int *)(4LL * (l + ((_DWORD)k + MEMORY[0x18012157C] * m) * MEMORY[0x180121584]) + 0x180120B6CLL);
v63 = MEMORY[0x1801218C8];
if ( MEMORY[0x1801218C8] == 1 )
{
sub_1800CCFFC(k, *(_DWORD *)(4 * v62 + 0x180121618LL), MEMORY[0x1801217DC], MEMORY[0x1801217E0]);
v63 = MEMORY[0x1801218C8];
}
if ( !v63 )
sub_1800CCFFC(k, *(_DWORD *)(4 * v62 + 0x1801215DCLL), MEMORY[0x1801217DC], MEMORY[0x1801217E0]);
sub_1800CD0A0(k);
v64 = (_DWORD *)(4 * v62 + 6443633504LL);
v64[111] = (*(_DWORD *)((unsigned int)((_DWORD)k << 18) + 0x200220710LL) >> 16) & 0xFF;
v64[129] = (*(_DWORD *)((unsigned int)((_DWORD)k << 18) + 0x200220708LL) >> 16) & 0xFF;
v64[147] = (*(_DWORD *)((unsigned int)((_DWORD)k << 18) + 0x200220700LL) >> 16) & 0xFF;
sub_1800CD138(k, l, 2, m, v62);
sub_1800CD8E8();
v64[111] = (*(_DWORD *)((unsigned int)((_DWORD)k << 18) + 0x200220710LL) >> 16) & 0xFF;
v64[129] = (*(_DWORD *)((unsigned int)((_DWORD)k << 18) + 0x200220708LL) >> 16) & 0xFF;
v64[147] = (*(_DWORD *)((unsigned int)((_DWORD)k << 18) + 0x200220700LL) >> 16) & 0xFF;
if ( MEMORY[0x1801218C8] == 1 )
{
v72 = 3;
}
else
{
sub_1800CDA4C(k);
v72 = 1;
}
sub_1800B6208(v72, v65, v66, v67, v68, v69, v70, v71);
sub_1800CCE0C(k);
sub_1800CDB48(k);
if ( MEMORY[0x1801218C8] == 1 )
v73 = 3;
else
v73 = 1;
sub_1800CDC54(k, v73);
sub_1800CDCD0(k, MEMORY[0x1801218C8]);
}
}
}
sub_1800CDD74();
if ( 5139240511851214385LL != v86 )
sub_1800D4A5C();
}
// 1800CCBA4: write access to const memory at 180114568 has been detected
// 1800CCBDC: write access to const memory at 180114568 has been detected
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
// 180114568: using guessed type int dword_180114568;
// 1800CC218: using guessed type char var_68[16];
//----- (00000001800CCC0C) ----------------------------------------------------
__int64 __fastcall sub_1800CCC0C(__int64 result, int a2)
{
int v2; // w12
int v3; // w11
unsigned int v4; // w10
v2 = *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x2002380C8LL);
v3 = *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200238138LL);
if ( a2 == 3 )
{
MEMORY[0x18011AA98] = (*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x2002380C8LL) >> 7) & 1;
MEMORY[0x18011AA9C] = (*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200238138LL) >> 7) & 1;
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x2002380C8LL) = v2 & 0xFFFFFF7F;
v4 = v3 & 0xFFFFFF7F;
}
else if ( a2 == 1 )
{
MEMORY[0x18011AA88] = (*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x2002380C8LL) >> 3) & 1;
MEMORY[0x18011AA8C] = (*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200238138LL) >> 3) & 1;
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x2002380C8LL) = v2 & 0xFFFFFFF7;
v4 = v3 & 0xFFFFFFF7;
}
else
{
if ( a2 )
return result;
MEMORY[0x18011AA80] = (*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x2002380C8LL) >> 1) & 1;
MEMORY[0x18011AA84] = (*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200238138LL) >> 1) & 1;
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x2002380C8LL) = v2 & 0xFFFFFFFD;
v4 = v3 & 0xFFFFFFFD;
}
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200238138LL) = v4;
return result;
}
//----- (00000001800CCCD0) ----------------------------------------------------
__int64 __fastcall sub_1800CCCD0(__int64 result, int a2)
{
int v2; // w11
int v3; // w12
int v4; // w9
v2 = *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200238080LL);
v3 = *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x2002380F0LL);
switch ( a2 )
{
case 3:
if ( !MEMORY[0x180121814] )
{
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200238080LL) = v2 | 0x80;
return result;
}
v4 = v3 | 0x80;
LABEL_10:
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x2002380F0LL) = v4;
return result;
case 1:
if ( !MEMORY[0x180121814] )
{
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200238080LL) = v2 | 8;
return result;
}
v4 = v3 | 8;
goto LABEL_10;
case 0:
if ( MEMORY[0x180121814] )
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x2002380F0LL) = v3 | 2;
else
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200238080LL) = v2 | 2;
break;
}
return result;
}
//----- (00000001800CCD74) ----------------------------------------------------
__int64 __fastcall sub_1800CCD74(__int64 a1)
{
__int64 v1; // x20
__int64 result; // x0
__int64 v3; // x19
v1 = (unsigned int)((_DWORD)a1 << 18);
*(_DWORD *)(v1 + 0x200220924LL) |= 1u;
result = sub_1800E1188(a1);
v3 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*(_DWORD *)(v1 + 8592165156LL) & 1) )
break;
if ( (unsigned __int64)(result - v3) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 1834LL);
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800CCE0C) ----------------------------------------------------
__int64 __fastcall sub_1800CCE0C(__int64 result)
{
int v1; // t1
int v2; // t1
int v3; // t1
int v4; // t1
__int64 v5; // xzr
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200200450LL) |= 0x10000u;
v1 = *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200200450LL);
v2 = *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200200450LL);
v3 = *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200200450LL);
v4 = *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200200450LL);
v5 = *(unsigned int *)((unsigned int)((_DWORD)result << 18) + 0x200200450LL);
return result;
}
//----- (00000001800CCE40) ----------------------------------------------------
__int64 __fastcall sub_1800CCE40(__int64 result)
{
unsigned __int64 v1; // x20
signed __int64 v2; // x21
__int64 v3; // x19
v1 = 0LL;
v2 = (unsigned int)((_DWORD)result << 18) + 8592164096LL;
while ( v1 <= 5 )
{
*(_DWORD *)(v2 + 4 * v1) = 256;
result = sub_1800E1188(result);
v3 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*(_DWORD *)(v2 + 4 * v1) & 0x100) )
break;
if ( (unsigned __int64)(result - v3) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 1533LL);
}
++v1;
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800CCEF8) ----------------------------------------------------
__int64 __fastcall sub_1800CCEF8(__int64 a1)
{
unsigned __int64 v1; // x21
__int64 v2; // x0
__int64 v3; // x19
signed __int64 v4; // x8
__int64 v5; // x0
__int64 v6; // x19
__int64 result; // x0
__int64 v8; // x19
v1 = (unsigned int)((_DWORD)a1 << 18);
*(_DWORD *)(v1 + 0x200220700LL) = 2;
v2 = sub_1800E1188(a1);
v3 = v2;
while ( 1 )
{
v2 = sub_1800E1188(v2);
if ( !(*(_DWORD *)(v1 + 8592164608LL) & 2) )
break;
if ( (unsigned __int64)(v2 - v3) > 0xF423F )
{
v4 = 1542LL;
goto LABEL_13;
}
}
*(_DWORD *)(v1 + 8592164616LL) = 2;
v5 = sub_1800E1188(v2);
v6 = v5;
while ( 1 )
{
v5 = sub_1800E1188(v5);
if ( !(*(_DWORD *)(v1 + 8592164616LL) & 2) )
break;
if ( (unsigned __int64)(v5 - v6) > 0xF423F )
{
v4 = 1546LL;
goto LABEL_13;
}
}
*(_DWORD *)(v1 + 8592164624LL) = 2;
result = sub_1800E1188(v5);
v8 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*(_DWORD *)(v1 + 8592164624LL) & 2) )
break;
if ( (unsigned __int64)(result - v8) > 0xF423F )
{
v4 = 1550LL;
LABEL_13:
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, v4);
}
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800CCFFC) ----------------------------------------------------
__int64 __fastcall sub_1800CCFFC(int a1, unsigned int a2, int a3, int a4)
{
__int64 v4; // x8
__int64 result; // x0
v4 = (unsigned int)(a1 << 18);
result = (a4 << 20) | (unsigned int)(a3 << 16);
*(_DWORD *)(v4 + 8592165128LL) = result | *(_DWORD *)(v4 + 0x200220908LL) & 0xFF000000 | (((a2 >> 6) & 1) << MEMORY[0x18012180C]) | (((a2 >> 5) & 1) << MEMORY[0x180121808]) | (((a2 >> 4) & 1) << MEMORY[0x180121804]) | (((a2 >> 3) & 1) << MEMORY[0x180121800]) | (((a2 >> 2) & 1) << MEMORY[0x1801217FC]) | (((a2 >> 1) & 1) << MEMORY[0x1801217F8]) | ((a2 & 1) << MEMORY[0x1801217F4]);
return result;
}
//----- (00000001800CD0A0) ----------------------------------------------------
__int64 __fastcall sub_1800CD0A0(__int64 a1)
{
__int64 v1; // x20
__int64 result; // x0
__int64 v3; // x19
v1 = (unsigned int)((_DWORD)a1 << 18);
*(_DWORD *)(v1 + 0x200220924LL) |= 0x10000u;
result = sub_1800E1188(a1);
v3 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*(_DWORD *)(v1 + 8592165156LL) & 0x10000) )
break;
if ( (unsigned __int64)(result - v3) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 1863LL);
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800CD138) ----------------------------------------------------
__int64 __fastcall sub_1800CD138(__int64 a1, int a2, int a3, int a4, unsigned int a5)
{
int v5; // w19
__int64 v6; // x20
signed __int64 v7; // x21
int v8; // w8
unsigned int v9; // w23
unsigned int v10; // w24
unsigned int v11; // w25
int v12; // w22
unsigned int v13; // w21
signed int v14; // w22
signed int v15; // w26
unsigned int v16; // w8
bool v17; // cf
bool v18; // zf
unsigned int v19; // w8
bool v20; // cf
bool v21; // zf
BOOL v22; // w8
bool v23; // cf
bool v24; // zf
signed int v25; // w8
signed int v26; // w9
__int64 v27; // x24
__int64 v28; // x26
bool v29; // w21
int v30; // t1
__int64 v31; // xzr
unsigned int v32; // w24
int v33; // w25
int v34; // w27
int v35; // w14
__int64 v36; // x0
unsigned int v37; // w1
__int64 v38; // x0
unsigned int v39; // w1
int v40; // w0
__int64 v41; // x8
int v42; // w11
unsigned __int64 v43; // x8
signed int v44; // w9
int v45; // w10
unsigned int v46; // w9
bool v47; // w8
int v48; // w11
int v49; // w12
unsigned int v50; // w21
unsigned int v51; // w28
unsigned int v52; // w23
int v53; // w22
signed int v54; // w27
unsigned int v55; // w24
BOOL v56; // w25
__int64 result; // x0
unsigned int v58; // w10
int v59; // t1
__int64 v60; // xzr
__int64 v61; // x8
unsigned int v62; // w21
signed __int64 v63; // x23
signed __int64 v64; // x22
__int64 i; // x8
int v66; // w9
unsigned __int64 v67; // x9
signed int v68; // w8
int v69; // w10
__int64 v70; // [xsp+8h] [xbp-C8h]
int v71; // [xsp+10h] [xbp-C0h]
int v72; // [xsp+18h] [xbp-B8h]
int v73; // [xsp+28h] [xbp-A8h]
int v74; // [xsp+2Ch] [xbp-A4h]
__int64 v75; // [xsp+30h] [xbp-A0h]
_DWORD *v76; // [xsp+30h] [xbp-A0h]
_DWORD *v77; // [xsp+38h] [xbp-98h]
__int64 v78; // [xsp+40h] [xbp-90h]
__int64 v79; // [xsp+48h] [xbp-88h]
__int64 v80; // [xsp+50h] [xbp-80h]
__int64 v81; // [xsp+58h] [xbp-78h]
__int64 v82; // [xsp+60h] [xbp-70h]
__int64 v83; // [xsp+68h] [xbp-68h]
__int64 v84; // [xsp+70h] [xbp-60h]
__int64 v85; // [xsp+78h] [xbp-58h]
v73 = a4;
v74 = a2;
v5 = a3;
v6 = a1;
v85 = 5139240511851214385LL;
v75 = (unsigned int)a1;
v7 = 12LL * (unsigned int)a1 + 6443633504LL;
v8 = *(_DWORD *)(12LL * (unsigned int)a1 + 0x180120C8CLL);
v78 = a5;
v9 = *(_DWORD *)(4LL * a5 + 0x180120D1CLL) + 2 * v8;
v10 = *(_DWORD *)(4LL * a5 + 0x180120D64LL) + 2 * v8;
v11 = *(_DWORD *)(4LL * a5 + 0x180120DACLL) + 2 * v8;
v12 = 3 * v8;
if ( !a3 )
sub_1800CCE40(a1);
v77 = (_DWORD *)(v7 + 300);
v13 = v12 + 1;
v14 = 4;
v15 = 63;
while ( 1 )
{
sub_1800D10AC(v6, v9);
if ( v5 == 1 )
{
sub_1800D1198(v6, v10);
}
else if ( v5 == 2 )
{
sub_1800D1284(v6, v11);
}
v15 &= sub_1800D13CC(v6, v5);
if ( !(v15 & 0x3F) )
break;
v16 = v14 + v9;
if ( v14 + v10 <= v13 )
{
v17 = v16 >= v13;
v18 = v16 == v13;
}
else
{
v17 = 1;
v18 = 0;
}
v19 = v14 + v11;
if ( !v18 && v17 )
{
v20 = 1;
v21 = 0;
}
else
{
v20 = v19 >= v13;
v21 = v19 == v13;
}
if ( !v21 && v20 )
v14 = 1;
v9 += v14;
if ( v5 == 1 )
{
v10 += v14;
v22 = v9 > v13;
v23 = v10 >= v13;
v24 = v10 == v13;
LABEL_25:
if ( !v24 && v23 )
v26 = 1;
else
v26 = 0;
if ( v22 | v26 )
{
LABEL_31:
v27 = v75;
v28 = v78;
*(_DWORD *)(72 * v75 + 0x180120B60LL + 4 * v78 + 1204) = 1;
goto LABEL_86;
}
}
else
{
if ( v5 == 2 )
v25 = v14;
else
v25 = 0;
v11 += v25;
if ( v5 == 2 )
{
v22 = v9 > v13;
v23 = v11 >= v13;
v24 = v11 == v13;
goto LABEL_25;
}
if ( v9 > v13 )
goto LABEL_31;
}
}
v29 = 0;
v83 = 0LL;
v84 = 0LL;
v81 = 0LL;
v82 = 0LL;
v79 = 0LL;
v80 = 0LL;
v30 = *(_DWORD *)((unsigned int)((_DWORD)v6 << 18) + 0x20022051CLL);
v31 = *(unsigned int *)((unsigned int)((_DWORD)v6 << 18) + 0x200220518LL);
v32 = (*(_DWORD *)((unsigned int)((_DWORD)v6 << 18) + 0x200220710LL) >> 16) & 0xFF;
v33 = (*(_DWORD *)((unsigned int)((_DWORD)v6 << 18) + 0x200220708LL) >> 16) & 0xFF;
v34 = (*(_DWORD *)((unsigned int)((_DWORD)v6 << 18) + 0x200220700LL) >> 16) & 0xFF;
v35 = v5 | 2;
v70 = (unsigned int)(v74 + (v6 + MEMORY[0x18012157C] * v73) * MEMORY[0x180121584]);
v28 = v78;
v72 = (*(_DWORD *)((unsigned int)((_DWORD)v6 << 18) + 0x200220708LL) >> 16) & 0xFF;
v71 = v5 | 2;
LABEL_33:
if ( v29 )
{
if ( v5 == 1 )
{
v36 = v6;
v37 = v32;
goto LABEL_43;
}
if ( v35 == 2 )
{
v38 = v6;
v39 = v32;
LABEL_41:
sub_1800D1198(v38, v39);
}
}
else
{
sub_1800D10AC(v6, v32);
if ( v5 == 2 )
{
v36 = v6;
v37 = v34;
LABEL_43:
sub_1800D1284(v36, v37);
}
else if ( v5 == 1 )
{
v38 = v6;
v39 = v33;
goto LABEL_41;
}
}
v40 = sub_1800D13CC(v6, v5);
v41 = 0LL;
v35 = v5 | 2;
while ( v41 != 6 )
{
if ( !((1 << v41) & v40) || *((_DWORD *)&v82 + v41) )
{
*((_DWORD *)&v79 + v41) = 0;
}
else
{
v42 = *((_DWORD *)&v79 + v41);
if ( v42 == 8 )
{
*((_DWORD *)&v82 + v41) = 1;
}
else
{
*((_DWORD *)&v79 + v41) = v42 + 1;
if ( !v42 )
{
if ( v29 )
{
if ( v5 == 1 )
{
*(_DWORD *)(432LL * (unsigned int)v70 + 0x1801218E0LL + 24 * v78 + 4 * v41) = -v32;
}
else if ( v71 == 2 )
{
*(_DWORD *)(4 * v70 + 0x180120BDCLL) = *(_DWORD *)(4 * v78 + 0x180120D1CLL) - v32;
}
}
else if ( v5 == 1 )
{
*(_DWORD *)(432LL * (unsigned int)v70 + 0x1801218E0LL + 24 * v78 + 4 * v41) = v32;
}
else if ( v71 == 2 )
{
*(_DWORD *)(4 * v70 + 0x180120BDCLL) = v32 - v72;
}
}
}
}
++v41;
}
v43 = 0LL;
v44 = 1;
while ( v43 <= 5 )
{
v45 = *((_DWORD *)&v82 + v43++);
v44 &= v45;
if ( !v44 )
{
if ( v29 )
v46 = v32;
else
v46 = 0;
if ( v32 != *(_DWORD *)(4 * v78 + 0x180120D1CLL) )
v46 = v32;
v47 = v29 || v32 == *(_DWORD *)(4 * v78 + 0x180120D1CLL);
v48 = v34 - 1;
v49 = v33 - 1;
if ( v5 != 1 )
v49 = v33;
if ( v5 != 2 )
v48 = v34;
if ( v5 == 2 )
v49 = v33;
if ( !v29 && v32 != *(_DWORD *)(4 * v78 + 0x180120D1CLL) )
v34 = v48;
if ( !v29 && v32 != *(_DWORD *)(4 * v78 + 0x180120D1CLL) )
v33 = v49;
if ( v29 || v32 == *(_DWORD *)(4 * v78 + 0x180120D1CLL) )
v32 = v46 + 1;
else
v32 = v46 - 1;
v29 = v47 != 0;
if ( v32 > 3 * *v77 + 1 )
{
*(_DWORD *)(72 * v75 + 0x180120B60LL + 4 * v78 + 1204) = 1;
break;
}
goto LABEL_33;
}
}
v27 = v75;
LABEL_86:
sub_1800D10AC(v6, *(_DWORD *)(4 * v28 + 0x180120D1CLL));
if ( v5 == 1 )
{
sub_1800D1198(v6, *(_DWORD *)(4 * v28 + 0x180120D64LL));
}
else if ( v5 == 2 )
{
sub_1800D1284(v6, *(_DWORD *)(4 * v28 + 0x180120DACLL));
}
v50 = (_DWORD)v6 << 18;
v51 = 3 * *v77 + 1;
v52 = *(_DWORD *)(v50 + 0x200220500LL) + 2 * *v77 + (unsigned __int8)(*(_DWORD *)(v50 + 0x200220700LL) >> 16);
v53 = v5 | 2;
v76 = (_DWORD *)(72 * v27 + 6443633504LL + 4 * v28 + 1204);
v54 = 4;
v55 = *(_DWORD *)(v50 + 0x200220518LL) + 2 * *v77 + (unsigned __int8)(*(_DWORD *)(v50 + 0x200220708LL) >> 16);
while ( 1 )
{
if ( v5 == 1 )
{
sub_1800D1284(v6, v52);
v56 = v53 == 2;
}
else if ( v53 == 2 )
{
sub_1800D1198(v6, v55);
v56 = 1;
}
else
{
v56 = 0;
}
result = sub_1800D13CC(v6, v5);
if ( !(result & 0x3F) )
break;
if ( v5 == 1 )
{
if ( v54 + v52 > v51 )
v54 = 1;
v52 += v54;
if ( v52 > v51 )
*v76 = 1;
}
if ( v56 )
{
if ( v54 + v55 > v51 )
v54 = 1;
v55 += v54;
if ( v55 > v51 )
*v76 = 1;
}
if ( v5 == 1 && v52 > v51 || (unsigned __int8)v56 & (v55 > v51) )
goto LABEL_137;
}
v83 = 0LL;
v84 = 0LL;
v81 = 0LL;
v82 = 0LL;
v79 = 0LL;
v80 = 0LL;
v58 = *(_DWORD *)((unsigned int)((_DWORD)v6 << 18) + 0x200220700LL);
v59 = *(_DWORD *)((unsigned int)((_DWORD)v6 << 18) + 0x200220500LL);
v60 = *(unsigned int *)((unsigned int)((_DWORD)v6 << 18) + 0x200220518LL);
if ( v56 )
v58 = *(_DWORD *)((unsigned int)((_DWORD)v6 << 18) + 0x200220708LL);
v61 = (unsigned int)(v74 + (v6 + MEMORY[0x18012157C] * v73) * MEMORY[0x180121584]);
v62 = (v58 >> 16) & 0xFF;
v63 = 432LL * (unsigned int)v61 + 6443636960LL + 24 * v78 + 1728;
v64 = 4 * v61 + 6443633504LL;
while ( 1 )
{
if ( v5 == 1 )
sub_1800D1284(v6, v62);
if ( v56 )
sub_1800D1198(v6, v62);
result = sub_1800D13CC(v6, v5);
for ( i = 0LL; i != 6; ++i )
{
if ( !((1 << i) & (unsigned int)result) || *((_DWORD *)&v82 + i) )
{
*((_DWORD *)&v79 + i) = 0;
}
else
{
v66 = *((_DWORD *)&v79 + i);
if ( v66 == 8 )
{
*((_DWORD *)&v82 + i) = 1;
}
else
{
*((_DWORD *)&v79 + i) = v66 + 1;
if ( !v66 )
{
if ( v5 == 1 )
*(_DWORD *)(v63 + 4 * i) = *(_DWORD *)(4 * v78 + 0x180120D1CLL) - v62;
if ( v56 )
*(_DWORD *)(v64 + 140) = *(_DWORD *)(4 * v78 + 0x180120D1CLL) - v62;
}
}
}
}
v67 = 0LL;
v68 = 1;
do
{
if ( v67 > 5 )
break;
v69 = *((_DWORD *)&v82 + v67++);
v68 &= v69;
}
while ( v68 );
if ( !(v68 | v62) )
break;
if ( !v68 )
{
v62 -= v68 == 0;
if ( v62 <= 3 * *v77 + 1 )
continue;
}
goto LABEL_138;
}
LABEL_137:
*v76 = 1;
LABEL_138:
if ( 5139240511851214385LL != v85 )
sub_1800D4A5C();
return result;
}
//----- (00000001800CD8E8) ----------------------------------------------------
void sub_1800CD8E8()
{
__int64 i; // x19
__int64 v1; // x8
__int64 v2; // x9
signed __int64 v3; // x10
int v4; // w11
unsigned int v5; // w12
int v6; // w14
int v7; // w13
int v8; // w0
int v9; // w20
__int64 k; // x21
__int64 j; // x20
for ( i = 0LL; (unsigned int)i < MEMORY[0x18012157C]; i = (unsigned int)(i + 1) )
{
v1 = 0LL;
v2 = (unsigned int)(MEMORY[0x180121584] * i);
v3 = -(signed __int64)MEMORY[0x1801217D8];
v4 = MEMORY[0x18012157C] * MEMORY[0x180121584];
v5 = MEMORY[0x180121584] * i;
while ( v3 != v1 )
{
v6 = *(_DWORD *)(4LL * v5 + 0x180120BECLL);
v7 = *(_DWORD *)(4LL * v5 + 0x180120BDCLL);
if ( v1 )
{
if ( v6 <= *(_DWORD *)(4 * v2 + 0x180120BFCLL) )
v6 = *(_DWORD *)(4 * v2 + 0x180120BFCLL);
*(_DWORD *)(4 * v2 + 0x180120BFCLL) = v6;
if ( v7 >= *(_DWORD *)(4 * v2 + 0x180120C0CLL) )
v7 = *(_DWORD *)(4 * v2 + 0x180120C0CLL);
}
else
{
*(_DWORD *)(4 * v2 + 0x180120BFCLL) = v6;
}
*(_DWORD *)(4 * v2 + 0x180120C0CLL) = v7;
--v1;
v5 += v4;
}
v8 = sub_1800D14C4(*(_DWORD *)(4 * v2 + 0x180120BFCLL), *(_DWORD *)(4 * v2 + 0x180120C0CLL));
v9 = v8;
if ( v8 & 0x80000000 )
{
sub_1800CC0D0(i, -(signed __int16)v8);
sub_1800CC038(i, 0);
for ( j = 0LL; j != 2; ++j )
{
*(_DWORD *)(8LL * (unsigned int)i + 0x180120C4CLL + 4 * j) = 0;
sub_1800CBEE8(i, j, 0, 0);
}
}
else
{
sub_1800CC038(i, v8);
for ( k = 0LL; k != 2; ++k )
{
*(_DWORD *)(8LL * (unsigned int)i + 0x180120C4CLL + 4 * k) = v9;
sub_1800CBEE8(i, k, v9, 0);
}
sub_1800CC0D0(i, 0);
}
}
}
//----- (00000001800CDA4C) ----------------------------------------------------
__int64 __fastcall sub_1800CDA4C(__int64 a1)
{
__int64 v1; // x19
__int64 v2; // x22
signed __int64 v3; // x20
__int64 result; // x0
unsigned __int64 v5; // x20
signed __int64 v6; // x21
signed __int64 v7; // x22
__int64 v8; // x19
v1 = a1;
v2 = (unsigned int)a1;
v3 = 4LL * (unsigned int)a1 + 6443633504LL;
sub_1800D10AC(a1, *(_DWORD *)(4LL * (unsigned int)a1 + 0x180120BACLL));
sub_1800D1198(v1, *(_DWORD *)(v3 + 60));
result = sub_1800D1284(v1, *(_DWORD *)(v3 + 108));
v5 = 0LL;
v6 = (unsigned int)((_DWORD)v1 << 18) + 8592164096LL;
v7 = 24 * v2 + 6443633504LL;
while ( v5 <= 5 )
{
*(_DWORD *)(v6 + 4 * v5) = *(_DWORD *)(v7 + 4 * v5 + 660) | 0x100;
result = sub_1800E1188(result);
v8 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*(_DWORD *)(v6 + 4 * v5) & 0x100) )
break;
if ( (unsigned __int64)(result - v8) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 470LL);
}
++v5;
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800CDB48) ----------------------------------------------------
__int64 __fastcall sub_1800CDB48(__int64 a1)
{
__int64 v1; // x20
int v2; // w23
__int64 v3; // x0
__int64 v4; // x19
signed __int64 v5; // x8
__int64 v6; // x0
__int64 v7; // x19
__int64 v8; // x0
__int64 result; // x0
__int64 v10; // xzr
v1 = (unsigned int)((_DWORD)a1 << 18);
v2 = *(_DWORD *)(v1 + 0x200238164LL);
*(_DWORD *)(v1 + 0x200220924LL) |= 0x1000u;
v3 = sub_1800E1188(a1);
v4 = v3;
while ( 1 )
{
v3 = sub_1800E1188(v3);
if ( !(*(_DWORD *)(v1 + 8592165156LL) & 0x1000) )
break;
if ( (unsigned __int64)(v3 - v4) > 0xF423F )
{
v5 = 1844LL;
goto LABEL_9;
}
}
*(_DWORD *)(v1 + 8592261476LL) = v2 | 2;
v6 = sub_1800E1188(v3);
v7 = v6;
while ( 1 )
{
v6 = sub_1800E1188(v6);
if ( *(_DWORD *)(v1 + 8592261476LL) & 2 )
break;
if ( (unsigned __int64)(v6 - v7) > 0xF423F )
{
v5 = 1849LL;
LABEL_9:
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, v5);
}
}
*(_DWORD *)(v1 + 8592261476LL) = v2 & 0xFFFFFFFD;
v8 = sub_1800E1188(v6);
result = sub_1800E1188(v8);
v10 = *(unsigned int *)(v1 + 8592261476LL);
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800CDC54) ----------------------------------------------------
__int64 __fastcall sub_1800CDC54(__int64 result, unsigned int a2)
{
char v2; // w8
signed int v3; // w9
int v4; // w11
int v5; // w8
int *v6; // x10
int v7; // w13
if ( a2 == 1 )
v2 = 3;
else
v2 = 7;
if ( a2 == 1 )
v3 = -9;
else
v3 = -129;
if ( !a2 )
v2 = 1;
if ( !a2 )
v3 = -3;
v4 = *(_DWORD *)(8LL * a2 + 0x18011AA80LL) << v2;
v5 = *(_DWORD *)(8LL * a2 + 0x18011AA84LL) << v2;
v6 = (int *)((unsigned int)((_DWORD)result << 18) + 8592261320LL);
v7 = *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200238138LL);
*v6 = *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x2002380C8LL) & v3 | v4;
v6[28] = v7 & v3 | v5;
return result;
}
//----- (00000001800CDCD0) ----------------------------------------------------
__int64 __fastcall sub_1800CDCD0(__int64 result, int a2)
{
int v2; // w11
int v3; // w12
unsigned int v4; // w9
v2 = *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200238080LL);
v3 = *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x2002380F0LL);
switch ( a2 )
{
case 3:
if ( !MEMORY[0x180121814] )
{
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200238080LL) = v2 & 0xFFFFFF7F;
return result;
}
v4 = v3 & 0xFFFFFF7F;
LABEL_10:
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x2002380F0LL) = v4;
return result;
case 1:
if ( !MEMORY[0x180121814] )
{
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200238080LL) = v2 & 0xFFFFFFF7;
return result;
}
v4 = v3 & 0xFFFFFFF7;
goto LABEL_10;
case 0:
if ( MEMORY[0x180121814] )
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x2002380F0LL) = v3 & 0xFFFFFFFD;
else
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200238080LL) = v2 & 0xFFFFFFFD;
break;
}
return result;
}
//----- (00000001800CDD74) ----------------------------------------------------
void sub_1800CDD74()
{
__int64 v0; // x19
__int64 v1; // x20
__int64 v2; // xzr
__int64 v3; // x21
__int64 v4; // x26
__int64 v5; // x8
signed __int64 v6; // x10
int *v7; // x9
int *v8; // x10
signed __int64 v9; // x11
unsigned int v10; // w12
int v11; // w13
int v12; // w15
int v13; // w14
int v14; // w20
signed __int64 i; // x8
int v16; // w9
int v17; // w8
int v18; // w21
unsigned __int16 v19; // w22
__int64 n; // x21
__int64 v21; // x0
unsigned __int16 v22; // w1
__int64 k; // x22
BOOL v24; // w8
BOOL v25; // w1
__int64 l; // x22
__int64 v27; // x0
__int64 m; // x22
__int64 j; // x22
__int64 v30; // x0
unsigned __int64 v31; // x22
_DWORD *v32; // x23
signed __int64 v33; // x19
int v34; // w8
__int64 v35; // x21
int v36; // w8
int v37; // [xsp+14h] [xbp-8Ch]
__int64 v38; // [xsp+18h] [xbp-88h]
unsigned __int64 v39; // [xsp+20h] [xbp-80h]
int v40[6]; // [xsp+30h] [xbp-70h]
__int64 v41; // [xsp+48h] [xbp-58h]
v0 = 0LL;
v41 = 5139240511851214385LL;
while ( (unsigned int)v0 < MEMORY[0x18012157C] )
{
v1 = 0LL;
v39 = (unsigned int)((_DWORD)v0 << 18);
v2 = *(unsigned int *)(v39 + 0x200220700LL);
v3 = (unsigned int)(MEMORY[0x180121584] * v0);
v4 = *(unsigned int *)(4LL * (unsigned int)v3 + 0x180120B6CLL);
while ( v1 != 6 )
{
v5 = 0LL;
v6 = 24 * v3 + 6443633504LL + 4 * v1;
v7 = (int *)(v6 + 756);
v8 = (int *)(v6 + 852);
v9 = -(signed __int64)MEMORY[0x1801217D8];
v10 = v0 * MEMORY[0x180121584];
v11 = MEMORY[0x18012157C] * MEMORY[0x180121584];
while ( v9 != v5 )
{
v12 = *(_DWORD *)(432LL * v10 + 0x1801218E0LL + 24 * v4 + 4 * v1 + 1728);
v13 = *(_DWORD *)(432LL * v10 + 0x1801218E0LL + 24 * v4 + 4 * v1);
if ( v5 )
{
if ( v12 <= *v7 )
v12 = *v7;
*v7 = v12;
if ( v13 >= *v8 )
v13 = *v8;
}
else
{
*v7 = v12;
}
*v8 = v13;
--v5;
v10 += v11;
}
v40[v1++] = sub_1800D14C4(*v7, *v8);
}
v14 = v40[0];
for ( i = 1LL; i != 6; ++i )
{
if ( v40[i] > v14 )
v14 = v40[i];
}
v38 = (unsigned int)v0;
v16 = *(_DWORD *)(4 * v4 + 0x180120D1CLL);
v17 = *(_DWORD *)(4 * v4 + 0x180120D64LL);
v18 = v16 - v17;
v37 = v0;
if ( v14 & 0x80000000 )
{
if ( v18 < 1 )
{
sub_1800CC038(v0, 0);
for ( j = 0LL; j != 2; ++j )
{
*(_DWORD *)(8LL * (unsigned int)v0 + 0x180120C4CLL + 4 * j) = 0;
sub_1800CBEE8(v0, j, 0, 0);
}
sub_1800CC0D0(v0, -(signed __int16)v18);
if ( v14 >= 0 )
LOWORD(v25) = v14;
else
v25 = !v14;
}
else
{
sub_1800CC038(v0, v16 - v17);
for ( k = 0LL; k != 2; ++k )
{
*(_DWORD *)(8LL * (unsigned int)v0 + 0x180120C4CLL + 4 * k) = v18;
sub_1800CBEE8(v0, k, v18, 0);
}
sub_1800CC0D0(v0, 0);
if ( v14 >= 0 )
LOWORD(v24) = v14;
else
v24 = !v14;
LOWORD(v25) = v18 + v24;
}
goto LABEL_50;
}
if ( v18 < 1 )
{
sub_1800CC038(v0, v14);
for ( l = 0LL; l != 2; ++l )
{
*(_DWORD *)(8LL * (unsigned int)v0 + 0x180120C4CLL + 4 * l) = v14;
sub_1800CBEE8(v0, l, v14, 0);
}
v22 = v14 - v18;
v21 = v0;
}
else
{
v19 = v14 - v18;
if ( v14 <= v18 )
{
sub_1800CC038(v0, v16 - v17);
for ( m = 0LL; m != 2; ++m )
{
*(_DWORD *)(8LL * (unsigned int)v0 + 0x180120C4CLL + 4 * m) = v18;
sub_1800CBEE8(v0, m, v18, 0);
}
sub_1800CC0D0(v0, 0);
LOWORD(v25) = v18 - v14;
LABEL_50:
v27 = v0;
goto LABEL_51;
}
sub_1800CC038(v0, v14);
for ( n = 0LL; n != 2; ++n )
{
*(_DWORD *)(8LL * (unsigned int)v0 + 0x180120C4CLL + 4 * n) = v14;
sub_1800CBEE8(v0, n, v14, 0);
}
v21 = v0;
v22 = v19;
}
sub_1800CC0D0(v21, v22);
v27 = v0;
LOWORD(v25) = 0;
LABEL_51:
v30 = sub_1800CBFA0(v27, v25);
v31 = 0LL;
v32 = (_DWORD *)(72LL * (unsigned int)v0 + 6443633504LL + 4 * v4 + 1204);
v33 = v39 + 8592164096LL;
while ( v31 <= 5 )
{
v34 = v14 - v40[v31];
if ( v34 & 0x80000000 )
*v32 = 1;
*(_DWORD *)(v33 + 4 * v31) = v34 | 0x100;
v30 = sub_1800E1188(v30);
v35 = v30;
while ( 1 )
{
v30 = sub_1800E1188(v30);
if ( !(*(_DWORD *)(v33 + 4 * v31) & 0x100) )
break;
if ( (unsigned __int64)(v30 - v35) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 3023LL);
}
++v31;
}
v36 = MEMORY[0x1801218C8];
if ( MEMORY[0x1801218C8] == 1 )
{
sub_1800B74E8(1, (unsigned __int8)v37, 0, 12, (_BYTE *)*(unsigned int *)(4 * v4 + 0x180121618LL));
v36 = MEMORY[0x1801218C8];
}
if ( !v36 )
{
sub_1800B74E8(1, (unsigned __int8)v37, 0, 12, (_BYTE *)*(unsigned int *)(4 * v4 + 0x1801215DCLL));
v36 = MEMORY[0x1801218C8];
}
if ( v36 )
{
if ( v36 == 1 )
*(_DWORD *)(v39 + 8592032880LL) = *(_DWORD *)(v39 + 8592032880LL) & 0xC0FFFF | (*(_DWORD *)(4LL * *(unsigned int *)(4 * v38 + 0x180120B6CLL)
+ 0x180121618LL) << 24) | 0xC0000;
}
else
{
*(_DWORD *)(v39 + 8592032856LL) = *(_DWORD *)(v39 + 8592032856LL) & 0xC0FFFF | (*(_DWORD *)(4LL
* *(unsigned int *)(4 * v38 + 0x180120B6CLL)
+ 0x1801215DCLL) << 24) | 0xC0000;
}
v0 = (unsigned int)(v37 + 1);
}
if ( 5139240511851214385LL != v41 )
sub_1800D4A5C();
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
// 1800CDD74: using guessed type int var_70[6];
//----- (00000001800CE280) ----------------------------------------------------
// write access to const memory has been detected, the output may be wrong!
__int64 __fastcall sub_1800CE280(__int64 result, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8, double a9, double a10)
{
__int64 v10; // x25
unsigned int *v11; // x8
unsigned int v12; // w9
unsigned __int64 v13; // x10
int v14; // w9
int v15; // w12
int v16; // w8
_DWORD *v17; // x12
unsigned int v18; // w9
signed __int64 v19; // x10
unsigned int v20; // w8
__int64 v21; // x1
__int64 v22; // x2
__int64 v23; // x3
__int64 v24; // x4
__int64 v25; // x5
__int64 v26; // x6
__int64 v27; // x7
__int64 i; // x8
__int64 v29; // x1
__int64 v30; // x2
__int64 v31; // x3
__int64 v32; // x4
__int64 v33; // x5
__int64 v34; // x6
__int64 v35; // x7
__int64 v36; // x1
__int64 v37; // x2
__int64 v38; // x3
__int64 v39; // x4
__int64 v40; // x5
__int64 v41; // x6
__int64 v42; // x7
__int64 j; // x8
unsigned __int64 v44; // x9
int *v45; // x8
__int64 v46; // x0
double v47; // d0
double v48; // d1
__int64 v49; // x19
int v50; // w20
char *v51; // x21
int v52; // w12
signed int v53; // w10
unsigned __int64 v54; // x25
int v55; // w28
unsigned __int64 v56; // x19
unsigned __int64 v57; // x21
signed __int64 v58; // x26
__int64 v59; // x20
__int64 v60; // x20
double v61; // d0
double v62; // d1
__int64 v63; // x8
int v64; // w9
__int64 v65; // x9
int v66; // w8
bool v67; // zf
unsigned __int64 v68; // x19
unsigned __int64 v69; // x21
unsigned __int64 v70; // x25
signed __int64 v71; // x26
__int64 v72; // x20
__int64 v73; // x20
__int64 v74; // x8
__int64 v75; // x9
char *v76; // x10
char *v77; // x11
_DWORD *v78; // x12
signed int v79; // w28
signed int v80; // w19
__int64 kk; // x20
__int64 v82; // x8
signed int v83; // w25
signed int v84; // w9
__int64 v85; // x8
int v86; // w9
__int64 ll; // x20
unsigned __int64 v88; // x8
int v89; // w9
int v90; // w10
unsigned int v91; // w10
__int64 mm; // x8
unsigned __int64 v93; // x9
signed int v94; // w8
unsigned int v95; // w10
signed __int64 v96; // x11
int v97; // w9
__int64 nn; // x9
unsigned __int64 v99; // x9
unsigned int v100; // w10
__int64 v101; // x8
signed __int64 v102; // x13
int v103; // w9
signed int v104; // w14
__int64 i1; // x8
__int64 v106; // x8
int v107; // w9
signed int v108; // w13
__int64 k; // x20
unsigned __int64 l; // x25
unsigned __int64 v111; // x19
unsigned __int64 v112; // x28
signed __int64 v113; // x21
__int64 v114; // x20
int v115; // w8
__int64 v116; // x20
unsigned __int64 v117; // x8
int v118; // w9
int v119; // w10
unsigned int v120; // w10
int v121; // w10
__int64 m; // x8
unsigned __int64 v123; // x9
signed int v124; // w8
unsigned int v125; // w10
signed __int64 v126; // x11
int v127; // w9
int v128; // w9
unsigned __int64 n; // x10
__int64 ii; // x9
int v131; // w10
__int64 v132; // x9
_DWORD *v133; // x10
__int64 jj; // x9
unsigned __int64 v135; // x9
unsigned int v136; // w10
int v137; // w11
signed int v138; // w8
int *v139; // x9
unsigned __int64 i2; // x10
int v141; // t1
unsigned int v142; // w8
int *v143; // x9
__int64 i3; // x19
__int64 v145; // x20
__int64 v146; // x21
signed __int64 v147; // x22
signed __int64 v148; // x25
__int64 v149; // x8
char *v150; // x9
int v151; // t1
unsigned __int64 i4; // x8
unsigned int v153; // w9
signed __int64 v154; // x10
int v155; // w8
unsigned __int64 i5; // x8
unsigned int v157; // w9
unsigned __int64 v158; // x20
int v159; // w21
unsigned int v160; // w0
int v161; // w1
int v162; // w2
__int64 v163; // x0
unsigned __int64 v164; // x27
signed __int64 v165; // x28
int v166; // w8
__int64 v167; // x21
int v168; // w8
__int64 v169; // x0
__int64 v170; // x21
int *v171; // x9
int v172; // w9
signed __int64 v173; // x8
signed __int64 v174; // [xsp+28h] [xbp-228h]
unsigned int v175; // [xsp+34h] [xbp-21Ch]
signed __int64 v176; // [xsp+A8h] [xbp-1A8h]
unsigned __int64 v177; // [xsp+B8h] [xbp-198h]
__int64 v178; // [xsp+C0h] [xbp-190h]
signed __int64 v179; // [xsp+D0h] [xbp-180h]
unsigned __int64 v180; // [xsp+D8h] [xbp-178h]
signed __int64 v181; // [xsp+E0h] [xbp-170h]
unsigned int v182; // [xsp+ECh] [xbp-164h]
signed __int64 v183; // [xsp+F0h] [xbp-160h]
signed __int64 v184; // [xsp+F8h] [xbp-158h]
unsigned __int64 v185; // [xsp+100h] [xbp-150h]
signed int v186; // [xsp+108h] [xbp-148h]
signed int v187; // [xsp+108h] [xbp-148h]
signed __int64 v188; // [xsp+108h] [xbp-148h]
int v189; // [xsp+110h] [xbp-140h]
signed __int64 v190; // [xsp+110h] [xbp-140h]
signed int v191; // [xsp+110h] [xbp-140h]
signed __int64 v192; // [xsp+118h] [xbp-138h]
__int128 v193; // [xsp+120h] [xbp-130h]
_DWORD *v194; // [xsp+128h] [xbp-128h]
unsigned int v195; // [xsp+130h] [xbp-120h]
__int64 v196; // [xsp+138h] [xbp-118h]
__int64 v197; // [xsp+140h] [xbp-110h]
int v198[2]; // [xsp+148h] [xbp-108h]
char v199[72]; // [xsp+150h] [xbp-100h]
char v200[72]; // [xsp+198h] [xbp-B8h]
char v201[8]; // [xsp+1E0h] [xbp-70h]
char v202[8]; // [xsp+1E8h] [xbp-68h]
char v203[8]; // [xsp+1F0h] [xbp-60h]
__int64 v204; // [xsp+1F8h] [xbp-58h]
v175 = 0;
v10 = 0LL;
v204 = 5139240511851214385LL;
v11 = (unsigned int *)6443636124LL;
if ( MEMORY[0x1801218C8] )
v11 = (unsigned int *)6443636128LL;
v177 = *v11;
LABEL_249:
if ( (unsigned int)v10 < MEMORY[0x180121580] )
{
v174 = 92LL * (unsigned int)v10 + 6443635316LL;
v12 = 0;
v181 = 12LL * (unsigned int)v10 + 6443633504LL;
v192 = 12LL * (unsigned int)v10 + 6443633808LL;
v176 = v175 + 8592197120LL;
v13 = (unsigned int)((_DWORD)v10 << 18);
v194 = (_DWORD *)v13;
v13 += 8592162816LL;
v184 = v13 + 0x8000;
v185 = v13;
v178 = (unsigned int)v10;
v195 = v10;
while ( 1 )
{
if ( v12 >= MEMORY[0x180121584] )
{
v10 = (unsigned int)(v10 + 1);
v175 += 0x40000;
goto LABEL_249;
}
v182 = v12;
v14 = v194[2148041600LL];
v15 = v194[2148041602LL];
v16 = v194[2148041668LL];
v194[2148041608LL] = MEMORY[0x1801217E4] | v194[2148041608LL] & 0xFFFFFF00;
if ( MEMORY[0x1801218C8] == 1 )
break;
v17 = v194;
if ( !MEMORY[0x1801218C8] )
{
v18 = (v14 & 0xFFFF0000 | (unsigned __int8)(MEMORY[0x1801218CC] / 2 - 6)) & 0xFFFF00FF | ((unsigned __int8)(MEMORY[0x1801218D0] / 2 - 2) << 8);
v19 = 2148041600LL;
LABEL_9:
v17[v19] = v18;
}
v17[2148041640LL] = MEMORY[0x180121818];
v17[2148041641LL] = MEMORY[0x18012181C];
v17[2148041642LL] = MEMORY[0x180121820];
v17[2148041643LL] = MEMORY[0x180121824];
v17[2148041645LL] = (MEMORY[0x180121848] << 16) | (MEMORY[0x18012184C] << 24) | (MEMORY[0x180121844] << 8) | MEMORY[0x180121840];
v17[2148041646LL] = (MEMORY[0x180121858] << 16) | (MEMORY[0x18012185C] << 24) | (MEMORY[0x180121854] << 8) | MEMORY[0x180121850];
v17[2148041647LL] = MEMORY[0x180121860];
v17[2148041648LL] = (MEMORY[0x18012186C] << 16) | (MEMORY[0x180121870] << 24) | (MEMORY[0x180121868] << 8) | MEMORY[0x180121864];
v17[2148041649LL] = (MEMORY[0x18012187C] << 16) | (MEMORY[0x180121880] << 24) | (MEMORY[0x180121878] << 8) | MEMORY[0x180121874];
v17[2148041650LL] = MEMORY[0x180121884];
if ( MEMORY[0x1801217EC] == 1 )
v20 = v16 | 1;
else
v20 = v16 & 0xFFFFFFFE;
v17[2148041668LL] = v20;
if ( !MEMORY[0x1801217EC] )
{
if ( MEMORY[0x1801218C8] == 1 )
{
sub_1800B6208(3, a2, a3, a4, a5, a6, a7, a8);
}
else
{
for ( i = 0LL; i != 0x10000; i += 0x8000LL )
*(_DWORD *)(v176 + i) |= 8u;
sub_1800B74E8(1, (unsigned __int8)v10, 0, 13, (_BYTE *)0x98);
sub_1800B6208(1, v29, v30, v31, v32, v33, v34, v35);
sub_1800CCE0C(v10);
}
v194[2148041622LL] |= 0x1000u;
while ( v194[2148041622LL] & 0x1000 )
;
if ( MEMORY[0x1801218C8] == 1 )
{
result = sub_1800B6208(1, v21, v22, v23, v24, v25, v26, v27);
}
else
{
sub_1800B74E8(1, (unsigned __int8)v10, 0, 13, (_BYTE *)0x58);
sub_1800B6208(0, v36, v37, v38, v39, v40, v41, v42);
result = sub_1800CCE0C(v10);
for ( j = 0LL; j != 0x10000; j += 0x8000LL )
*(_DWORD *)(v176 + j) &= 0xFFFFFFF7;
}
}
v44 = 0LL;
v183 = 6443615360LL;
v179 = 6443608736LL;
while ( v44 < v177 )
{
v180 = v44;
v45 = (int *)(4 * v44 + 6443636412LL);
if ( !MEMORY[0x1801218C8] )
v45 = (int *)(4 * v44 + 6443636320LL);
v46 = sub_1800CC168(v10, *v45, MEMORY[0x1801218C8]);
v49 = 0LL;
v50 = 0;
v196 = 0LL;
v51 = v202;
while ( v49 != 16 )
{
v46 = sub_1800D1544(v10, v50, 0, v47, v48);
*(_DWORD *)v51 = (255 << v49) | (1 << (v50 + 16));
v51 += 4;
++v50;
v49 += 8LL;
}
v52 = 0;
v53 = 4;
do
{
v186 = v53;
v54 = 0LL;
v189 = v52;
v55 = v52 | 0x100;
while ( v54 <= 1 )
{
if ( !*((_DWORD *)&v196 + v54) )
{
v56 = 0LL;
v57 = v184 + (v54 << 15);
v58 = v57 | 0x428;
while ( v56 <= 7 )
{
*(_DWORD *)(v58 + 4 * v56) = v55;
v46 = sub_1800E1188(v46);
v59 = v46;
while ( 1 )
{
v46 = sub_1800E1188(v46);
if ( !(*(_DWORD *)(v58 + 4 * v56) & 0x100) )
break;
if ( (unsigned __int64)(v46 - v59) > 0xF423F )
{
v173 = 3243LL;
goto LABEL_298;
}
}
++v56;
}
*(_DWORD *)((v184 + (v54 << 15)) | 0x44C) = v55;
v46 = sub_1800E1188(v46);
v60 = v46;
while ( 1 )
{
v46 = sub_1800E1188(v46);
if ( !(*(_DWORD *)((v184 + (v54 << 15)) | 0x44C) & 0x100) )
break;
if ( (unsigned __int64)(v46 - v60) > 0xF423F )
{
v173 = 3248LL;
goto LABEL_298;
}
}
}
++v54;
}
v46 = sub_1800D1610(v195);
v63 = 0LL;
v64 = v194[2148041623LL] & 0x3FFFF;
while ( v63 != 8 )
{
if ( !*(_DWORD *)((char *)&v196 + v63) && !(v64 & *(_DWORD *)&v202[v63]) )
{
*(_DWORD *)((char *)&v196 + v63) = 1;
*(_DWORD *)&v201[v63] = v189;
}
v63 += 4LL;
}
v65 = 0LL;
v66 = v196;
while ( v65 != 4 )
{
v66 &= *(_DWORD *)((char *)&v196 + v65 + 4);
v65 += 4LL;
}
if ( v66 == 1 )
{
sub_1800F0620((signed __int64 *)v200, 0, 0x48uLL);
v46 = (__int64)sub_1800F0620((signed __int64 *)v199, 0, 0x48uLL);
v106 = 0LL;
v197 = 0LL;
v107 = MEMORY[0x180121584];
while ( v106 != 2 )
{
v198[v106] = *(_DWORD *)&v201[v106 * 4];
++v106;
}
v108 = 0;
v188 = v179 + 1656LL * (v182 + v195 * v107);
while ( 1 )
{
v191 = v108;
if ( v108 & 1 )
{
for ( k = 0LL; k != 2; ++k )
{
if ( !*((_DWORD *)&v197 + k) )
sub_1800D1544(v195, k, v198[k], v61, v62);
}
}
else
{
for ( l = 0LL; l <= 1; ++l )
{
if ( !*((_DWORD *)&v197 + l) )
{
v111 = 0LL;
v112 = v184 + (l << 15);
v113 = v112 | 0x428;
while ( 1 )
{
v115 = v198[l] | 0x100;
if ( v111 > 7 )
break;
*(_DWORD *)(v113 + 4 * v111) = v115;
v46 = sub_1800E1188(v46);
v114 = v46;
while ( 1 )
{
v46 = sub_1800E1188(v46);
if ( !(*(_DWORD *)(v113 + 4 * v111) & 0x100) )
break;
if ( (unsigned __int64)(v46 - v114) > 0xF423F )
{
v173 = 3348LL;
goto LABEL_298;
}
}
++v111;
}
*(_DWORD *)((v184 + (l << 15)) | 0x44C) = v115;
v46 = sub_1800E1188(v46);
v116 = v46;
while ( 1 )
{
v46 = sub_1800E1188(v46);
if ( !(*(_DWORD *)((v184 + (l << 15)) | 0x44C) & 0x100) )
break;
if ( (unsigned __int64)(v46 - v116) > 0xF423F )
{
v173 = 3353LL;
goto LABEL_298;
}
}
}
}
}
v46 = sub_1800D1610(v195);
v117 = 0LL;
v118 = v194[2148041623LL] & 0x3FFFF;
v108 = v191;
while ( v117 != 18 )
{
if ( *(_DWORD *)&v200[4 * v117] || !(v118 & (1 << v117)) )
{
*(_DWORD *)&v199[4 * v117] = 0;
}
else
{
v119 = *(_DWORD *)&v199[4 * v117];
if ( v119 == 8 )
{
*(_DWORD *)&v200[4 * v117] = 1;
}
else
{
*(_DWORD *)&v199[4 * v117] = v119 + 1;
if ( !v119 )
{
v120 = (unsigned int)v117 >> 3;
if ( v117 >= 0x10 )
v120 = v117 - 16;
v121 = v198[v120];
if ( !(v191 & 1) )
v121 = -v121;
*(_DWORD *)(v188 + 4 * v117) = v121;
}
}
}
++v117;
}
for ( m = 0LL; m != 8; m += 4LL )
*(_DWORD *)((char *)&v197 + m) = 1;
v123 = 0LL;
v124 = 1;
while ( v123 != 18 )
{
v125 = (unsigned int)v123 >> 3;
v126 = v123 + 4294967280u;
if ( v123 >= 0x10 )
v125 = v123 - 16;
v127 = *(_DWORD *)&v200[4 * v123];
*((_DWORD *)&v197 + v125) &= v127;
v124 &= v127;
v123 = v126 - 4294967279LL;
}
if ( !v124 )
{
v128 = v198[0];
for ( n = 1LL; n <= 1 && !v128; ++n )
v128 = v198[n];
if ( (v191 | (v128 != 0)) & 1 )
{
if ( !(v191 & 1) )
{
for ( ii = 0LL; ii != 2; ++ii )
{
v131 = v198[ii];
if ( v131 )
v198[ii] = v131 - 1;
}
v108 = 0;
goto LABEL_232;
}
}
else
{
v132 = 0LL;
v133 = (_DWORD *)(v175 + 8592197128LL);
while ( v132 != 2 )
{
v198[v132] = (*v133 >> 16) & 0xFF;
++v132;
v133 += 0x2000;
}
}
for ( jj = 0LL; jj != 2; ++jj )
{
if ( !*(_DWORD *)((char *)&v197 + jj * 4) )
++v198[jj];
}
v108 = 1;
}
LABEL_232:
v135 = 0LL;
while ( v135 <= 1 )
{
v136 = v198[v135];
v137 = *(_DWORD *)(v192 + 4 * v135++);
if ( v136 > 3 * v137 )
goto LABEL_66;
}
if ( v124 )
goto LABEL_67;
}
}
v53 = v186;
if ( (unsigned int)(v189 + v186) > 0x37 )
v53 = 1;
v52 = v53 + v189;
if ( (unsigned int)(v53 + v189) <= 0x37 )
v67 = v66 == 0;
else
v67 = 0;
}
while ( v67 );
if ( !v66 )
LABEL_66:
*(_DWORD *)(92 * v178 + 0x180120B60LL + 4 * v180 + 1812) = 1;
LABEL_67:
v68 = 0LL;
while ( v68 <= 1 )
{
v69 = 0LL;
v70 = v185 + (++v68 << 15);
v71 = v70 | 0x428;
while ( v69 <= 7 )
{
*(_DWORD *)(v71 + 4 * v69) = 256;
v46 = sub_1800E1188(v46);
v72 = v46;
while ( 1 )
{
v46 = sub_1800E1188(v46);
if ( !(*(_DWORD *)(v71 + 4 * v69) & 0x100) )
break;
if ( (unsigned __int64)(v46 - v72) > 0xF423F )
{
v173 = 3304LL;
goto LABEL_298;
}
}
++v69;
}
*(_DWORD *)((v185 + (v68 << 15)) | 0x44C) = 256;
v46 = sub_1800E1188(v46);
v73 = v46;
while ( 1 )
{
v46 = sub_1800E1188(v46);
if ( !(*(_DWORD *)((v185 + (v68 << 15)) | 0x44C) & 0x100) )
break;
if ( (unsigned __int64)(v46 - v73) > 0xF423F )
{
v173 = 3309LL;
goto LABEL_298;
}
}
}
v74 = 0LL;
v75 = 0LL;
v196 = 0LL;
v76 = v202;
v77 = v201;
v78 = (_DWORD *)(v175 + 8592197128LL);
while ( v74 != 16 )
{
*(_DWORD *)v77 = (255 << v74) | (1 << (v75 + 16));
v77 += 4;
++v75;
*(_DWORD *)v76 = (*v78 >> 16) & 0xFF;
v76 += 4;
v78 += 0x2000;
v74 += 8LL;
}
v79 = 0;
v187 = 4;
v80 = 0x3FFFF;
do
{
for ( kk = 0LL; kk != 2; ++kk )
{
if ( !*((_DWORD *)&v196 + kk) )
sub_1800D1544(v195, kk, *(_DWORD *)&v202[4 * kk], v61, v62);
}
result = sub_1800D1610(v195);
v82 = 0LL;
v80 &= v194[2148041623LL] & 0x3FFFF;
v83 = 1;
while ( v82 != 8 )
{
v84 = *(_DWORD *)((char *)&v196 + v82);
if ( !v84 )
{
if ( *(_DWORD *)&v201[v82] & v80 )
{
v84 = 0;
}
else
{
v84 = 1;
*(_DWORD *)((char *)&v196 + v82) = 1;
*(_DWORD *)&v203[v82] = *(_DWORD *)&v202[v82];
}
}
v83 &= v84;
v82 += 4LL;
}
if ( v83 == 1 )
{
sub_1800F0620((signed __int64 *)v200, 0, 0x48uLL);
sub_1800F0620((signed __int64 *)v199, 0, 0x48uLL);
v85 = 0LL;
v197 = 0LL;
v86 = MEMORY[0x180121584];
while ( v85 != 2 )
{
v198[v85] = *(_DWORD *)&v203[v85 * 4];
++v85;
}
v190 = v183 + 1656LL * (v182 + v195 * v86);
while ( 2 )
{
for ( ll = 0LL; ll != 2; ++ll )
{
if ( !*((_DWORD *)&v197 + ll) )
sub_1800D1544(v195, ll, v198[ll], v61, v62);
}
result = sub_1800D1610(v195);
v88 = 0LL;
v89 = v194[2148041623LL] & 0x3FFFF;
while ( v88 != 18 )
{
if ( *(_DWORD *)&v200[4 * v88] || !(v89 & (1 << v88)) )
{
*(_DWORD *)&v199[4 * v88] = 0;
}
else
{
v90 = *(_DWORD *)&v199[4 * v88];
if ( v90 == 8 )
{
*(_DWORD *)&v200[4 * v88] = 1;
}
else
{
*(_DWORD *)&v199[4 * v88] = v90 + 1;
if ( !v90 )
{
v91 = (unsigned int)v88 >> 3;
if ( v88 >= 0x10 )
v91 = v88 - 16;
*(_DWORD *)(v190 + 4 * v88) = v198[v91];
}
}
}
++v88;
}
for ( mm = 0LL; mm != 8; mm += 4LL )
*(_DWORD *)((char *)&v197 + mm) = 1;
v93 = 0LL;
v94 = 1;
while ( v93 != 18 )
{
v95 = (unsigned int)v93 >> 3;
v96 = v93 + 4294967280u;
if ( v93 >= 0x10 )
v95 = v93 - 16;
v97 = *(_DWORD *)&v200[4 * v93];
*((_DWORD *)&v197 + v95) &= v97;
v94 &= v97;
v93 = v96 - 4294967279LL;
}
if ( !v94 )
{
for ( nn = 0LL; nn != 2; ++nn )
{
if ( !*(_DWORD *)((char *)&v197 + nn * 4) )
--v198[nn];
}
}
v99 = 0LL;
while ( v99 <= 1 )
{
v100 = v198[v99];
if ( v100 > 3 * *(_DWORD *)(v192 + 4 * v99) )
{
if ( !v94 )
*(_DWORD *)(92 * v178 + 0x180120B60LL + 4 * v180 + 1812) = 1;
goto LABEL_150;
}
++v99;
if ( !(v100 | v94) )
*(_DWORD *)(92 * v178 + 0x180120B60LL + 4 * v180 + 1812) = 1;
}
if ( !v94 )
continue;
break;
}
LABEL_150:
v102 = v192;
}
else
{
v101 = 0LL;
v102 = v192;
while ( v101 != 2 )
{
if ( !*((_DWORD *)&v196 + v101) )
{
v103 = *(_DWORD *)&v202[4 * v101];
v104 = v187;
if ( v103 + v187 > (unsigned int)(3 * *(_DWORD *)(v181 + 4 * v101 + 304)) )
v104 = 1;
v187 = v104;
*(_DWORD *)&v202[4 * v101] = v104 + v103;
}
++v101;
}
}
for ( i1 = 0LL; i1 != 8; i1 += 4LL )
{
if ( v79 & 1 || *(_DWORD *)&v202[i1] > (unsigned int)(3 * *(_DWORD *)(v102 + i1)) )
{
v79 = 1;
if ( !*(_DWORD *)((char *)&v196 + i1) )
*(_DWORD *)(92 * v178 + 0x180120B60LL + 4 * v180 + 1812) = 1;
}
else
{
v79 = 0;
}
}
}
while ( !v83 && (v79 ^ 1) & 1 );
v44 = v180 + 1;
v179 += 72LL;
v183 += 72LL;
v10 = v195;
}
v138 = 1;
v139 = (int *)v174;
for ( i2 = v177; i2; --i2 )
{
v141 = *v139;
++v139;
v138 &= v141;
}
if ( v138 == 1 )
{
dword_180114568 = 10;
MEMORY[0x180115A3C] |= 0x20u;
sub_1800CC1BC(15LL);
v173 = 1312LL;
LABEL_298:
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, v173);
}
if ( MEMORY[0x1801218C8] )
v143 = (int *)6443636128LL;
else
v143 = (int *)6443636124LL;
v142 = v182 + MEMORY[0x180121584] * v10;
result = (__int64)sub_1800D0ED0(
result,
*v143,
0x12u,
1656LL * v142 + 6443615360LL,
1656LL * v142 + 6443608736LL,
(int *)(92LL * v142 + 6443635316LL),
0LL,
0LL,
(int *)(4LL * v142 + 6443633724LL),
(int *)(4LL * v142 + 6443633532LL));
v12 = v182 + 1;
}
v18 = (v15 & 0xFFFF0000 | (unsigned __int8)(MEMORY[0x1801218CC] / 2 - 6)) & 0xFFFF00FF | ((unsigned __int8)(MEMORY[0x1801218D0] / 2 - 2) << 8);
v17 = v194;
v19 = 2148041602LL;
goto LABEL_9;
}
for ( i3 = 0LL; (unsigned int)i3 < MEMORY[0x18012157C]; i3 = (unsigned int)(i3 + 1) )
{
v145 = 0LL;
v146 = *(unsigned int *)(4LL * (unsigned int)(MEMORY[0x180121584] * i3) + 0x180120B7CLL);
v147 = 1656LL * (unsigned int)(MEMORY[0x180121584] * i3) + 6443615360LL + 72 * v146;
v148 = 1656LL * (unsigned int)(MEMORY[0x180121584] * i3) + 6443608736LL + 72 * v146;
while ( v145 != 72 )
{
result = sub_1800D14C4(*(_DWORD *)(v148 + v145), *(_DWORD *)(v147 + v145));
*(_DWORD *)&v200[v145] = result;
v145 += 4LL;
}
v149 = 0LL;
v150 = v200;
while ( v149 != 2 )
{
v151 = *(_DWORD *)v150;
v150 += 32;
v198[v149] = v151;
++v149;
}
for ( i4 = 0LL; i4 != 18; i4 = v154 - 4294967279LL )
{
v153 = (unsigned int)i4 >> 3;
v154 = i4 + 4294967280u;
if ( i4 >= 0x10 )
v153 = i4 - 16;
v155 = *(_DWORD *)&v200[4 * i4];
if ( v198[v153] > v155 )
v155 = v198[v153];
v198[v153] = v155;
}
for ( i5 = 0LL; i5 != 18; ++i5 )
{
v157 = (unsigned int)i5 >> 3;
if ( i5 >= 0x10 )
v157 = i5 - 16;
*(_DWORD *)&v199[4 * i5] = v198[v157] - *(_DWORD *)&v200[4 * i5];
}
v158 = 0LL;
*(_QWORD *)&v193 = 4 * v146 + 6443636412LL;
*((_QWORD *)&v193 + 1) = 4 * v146 + 6443636320LL;
while ( v158 <= 1 )
{
v159 = v198[v158];
if ( v159 & 0x80000000 )
{
v160 = i3;
v161 = v158;
LOWORD(v162) = 0;
}
else
{
v160 = i3;
v161 = v158;
v162 = v198[v158];
}
v163 = sub_1800D1704(v160, v161, v162, a9, a10);
v164 = 0LL;
v165 = 8 * v158;
while ( v164 <= 7 )
{
v166 = *(_DWORD *)&v199[4 * (v164 + v165)];
if ( v159 & 0x80000000 )
{
v166 -= v159;
*(_DWORD *)&v199[4 * (v164 + v165)] = v166;
}
*(_DWORD *)((((unsigned int)((_DWORD)i3 << 18) + 8592195584LL + (v158 << 15)) | 0x428) + 4 * v164) = v166 | 0x100;
v163 = sub_1800E1188(v163);
v167 = v163;
while ( 1 )
{
v163 = sub_1800E1188(v163);
if ( !(*(_DWORD *)((((unsigned int)((_DWORD)i3 << 18) + 8592195584LL + (v158 << 15)) | 0x428) + 4 * v164) & 0x100) )
break;
if ( (unsigned __int64)(v163 - v167) > 0xF423F )
{
v173 = 3819LL;
goto LABEL_298;
}
}
++v164;
v159 = v198[v158];
}
v168 = *(_DWORD *)&v199[4 * (v158 + 16)];
if ( v159 & 0x80000000 )
{
v168 -= v159;
*(_DWORD *)&v199[4 * (v158 + 16)] = v168;
}
*(_DWORD *)(((unsigned int)((_DWORD)i3 << 18) + 8592162816LL + (++v158 << 15)) | 0x44C) = v168 | 0x100;
v169 = sub_1800E1188(v163);
v170 = v169;
while ( 1 )
{
v169 = sub_1800E1188(v169);
if ( !(*(_DWORD *)(((unsigned int)((_DWORD)i3 << 18) + 8592162816LL + (v158 << 15)) | 0x44C) & 0x100) )
break;
if ( (unsigned __int64)(v169 - v170) > 0xF423F )
{
v173 = 3832LL;
goto LABEL_298;
}
}
v171 = (int *)*((_QWORD *)&v193 + 1);
if ( MEMORY[0x1801218C8] )
v171 = (int *)v193;
result = sub_1800CC168(i3, *v171, MEMORY[0x1801218C8]);
}
if ( !MEMORY[0x1801218C8] )
{
v172 = *(_DWORD *)((unsigned int)((_DWORD)i3 << 18) + 0x200220F1CLL);
*(_DWORD *)((unsigned int)((_DWORD)i3 << 18) + 0x200220F30LL) = (((unsigned __int16)*(_DWORD *)((unsigned int)((_DWORD)i3 << 18) + 0x200220F1CLL) >> 8)
- (unsigned __int8)*(_DWORD *)((unsigned int)((_DWORD)i3 << 18)
+ 0x200220F1CLL)) & 0xFF00FFFF | *(_DWORD *)((unsigned int)((_DWORD)i3 << 18) + 0x200220F30LL) & 0xFF00FF00 | (((*(_DWORD *)((unsigned int)((_DWORD)i3 << 18) + 0x200220F1CLL) & 0xFF) - BYTE1(v172)) << 16);
}
}
if ( 5139240511851214385LL != v204 )
sub_1800D4A5C();
return result;
}
// 1800CF518: write access to const memory at 180114568 has been detected
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
// 180114568: using guessed type int dword_180114568;
// 1800CE280: using guessed type char var_B8[72];
// 1800CE280: using guessed type char var_68[8];
// 1800CE280: using guessed type char var_70[8];
// 1800CE280: using guessed type int var_108[2];
// 1800CE280: using guessed type char var_60[8];
// 1800CE280: using guessed type char var_100[72];
//----- (00000001800CF548) ----------------------------------------------------
// write access to const memory has been detected, the output may be wrong!
__int64 __fastcall sub_1800CF548(__int64 result)
{
unsigned int v1; // w8
unsigned int v2; // w9
unsigned int v3; // w12
__int64 v4; // x19
signed int v5; // w10
signed int v6; // w9
signed int v7; // w8
unsigned __int64 v8; // x25
int v9; // w8
int v10; // w8
__int64 v11; // x0
__int64 v12; // x20
unsigned int i; // w9
__int64 j; // x20
int k; // w20
__int64 l; // x8
int v17; // w21
signed int v18; // w20
__int64 m; // x22
int v20; // w2
int n; // w8
signed int v22; // w10
unsigned __int64 v23; // x8
int v24; // w9
__int64 v25; // x8
_DWORD *v26; // x9
int v27; // w23
unsigned int v28; // w22
signed int v29; // w20
__int64 ii; // x21
int v31; // w2
int jj; // w8
signed int v33; // w10
unsigned __int64 v34; // x8
int v35; // w9
__int64 kk; // x8
__int64 v37; // x8
signed int v38; // w20
int v39; // w11
_DWORD *v40; // x9
bool v41; // w23
signed int v42; // w21
unsigned __int64 ll; // x8
__int64 mm; // x22
int v45; // w2
__int64 nn; // x22
int v47; // w2
int i1; // w8
signed int v49; // w10
__int64 i2; // x9
signed int v51; // w10
signed int v52; // w9
signed int v53; // w8
__int64 v54; // x20
int v55; // w8
unsigned int v56; // w12
unsigned int v57; // w8
__int64 i3; // x19
__int64 v59; // x8
unsigned int v60; // w9
signed __int64 v61; // x10
unsigned int v62; // w12
__int64 v63; // x8
unsigned int v64; // w23
__int64 i4; // x20
int v66; // w8
signed __int64 v67; // x8
unsigned int v68; // [xsp+1Ch] [xbp-94h]
unsigned int v69; // [xsp+20h] [xbp-90h]
int v70; // [xsp+24h] [xbp-8Ch]
int v71; // [xsp+24h] [xbp-8Ch]
signed __int64 v72; // [xsp+28h] [xbp-88h]
unsigned int v73; // [xsp+3Ch] [xbp-74h]
char v74[8]; // [xsp+4Ch] [xbp-64h]
unsigned int v75; // [xsp+54h] [xbp-5Ch]
__int64 v76; // [xsp+58h] [xbp-58h]
v1 = 0;
v2 = 0;
v76 = 5139240511851214385LL;
while ( v2 < MEMORY[0x18012157C] )
{
*(_DWORD *)(v1 + 0x200220B08LL) = (MEMORY[0x1801218B4] << 8) | (MEMORY[0x1801218B0] << 16) | MEMORY[0x1801218B8];
++v2;
v1 += 0x40000;
}
v3 = 0;
v4 = 0LL;
while ( (unsigned int)v4 < MEMORY[0x180121580] )
{
v72 = v3 + 8592197380LL;
if ( MEMORY[0x1801218D0] == 26 )
v5 = 190840832;
else
v5 = 188743680;
if ( MEMORY[0x1801218D0] == 12 )
v6 = 77594624;
else
v6 = 75497472;
if ( MEMORY[0x1801218C8] )
v7 = v6;
else
v7 = v5;
v8 = (unsigned int)((_DWORD)v4 << 18);
*(_DWORD *)(v8 + 8592165632LL) = v7 | 0x1600A6;
v9 = *(_DWORD *)((unsigned int)v8 + 0x200238138LL);
v68 = v3;
if ( MEMORY[0x1801218C8] == 3 )
{
*(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x2002380C8LL) = *(_DWORD *)(v8 + 0x2002380C8LL) | 0x80000;
v10 = v9 | 0x80000;
}
else if ( MEMORY[0x1801218C8] == 1 )
{
*(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x2002380C8LL) = *(_DWORD *)(v8 + 0x2002380C8LL) | 0x20000;
v10 = v9 | 0x20000;
}
else
{
if ( MEMORY[0x1801218C8] )
goto LABEL_21;
*(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x2002380C8LL) = *(_DWORD *)(v8 + 0x2002380C8LL) | 0x10000;
v10 = v9 | 0x10000;
}
*(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x200238138LL) = v10;
LABEL_21:
*(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x200220B0CLL) = *(_DWORD *)((unsigned int)((_DWORD)v4 << 18)
+ 0x200220B0CLL) & 0xFFFFFF0F | 16 * MEMORY[0x1801218C4] | 1;
v11 = sub_1800E1188(result);
v12 = v11;
while ( 1 )
{
v11 = sub_1800E1188(v11);
if ( !(*(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x200220B0CLL) & 1) )
break;
if ( (unsigned __int64)(v11 - v12) > 0xF423F )
{
v67 = 2055LL;
goto LABEL_168;
}
}
for ( i = 0; i < MEMORY[0x180121584]; i = v73 + 1 )
{
v73 = i;
sub_1800CBE44(v4, 0, 0);
for ( j = 0LL; j != 2; ++j )
sub_1800CBEE8(v4, j, *(_DWORD *)(8LL * (unsigned int)v4 + 0x180120C4CLL + 4 * j), 0);
if ( MEMORY[0x1801218C8] == 1 )
{
for ( k = 0; k != 2; ++k )
sub_1800D19D8(v4, 1 << k, 0, 1);
}
for ( l = 0LL; l != 8; l += 4LL )
*(_DWORD *)&v74[l] = *(_DWORD *)(8LL * (unsigned int)v4 + 6443633740LL + l);
v17 = 0;
v18 = 3;
while ( 2 )
{
sub_1800D17D0(v4, v17);
for ( m = 0LL; m != 2; ++m )
{
if ( !((1 << m) & v18) )
{
v20 = *(_DWORD *)&v74[4 * m] + 1;
*(_DWORD *)&v74[4 * m] = v20;
sub_1800D1870(v4, m, v20);
}
}
sub_1800D1924(v4, v18);
for ( n = 0; n != 2; ++n )
{
if ( *(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x200220B10LL) & 3 & (1 << n) )
v22 = -1;
else
v22 = !(1 << n);
v18 &= v22;
}
if ( v17 == 47 )
{
if ( v18 )
{
dword_180114568 = 10;
MEMORY[0x180115A3C] |= 0x20u;
sub_1800CC1BC(15LL);
v67 = 3941LL;
goto LABEL_168;
}
}
else
{
v23 = 0LL;
while ( v23 <= 1 )
{
v24 = *(_DWORD *)&v74[4 * v23++];
if ( v24 == 127 )
{
if ( v18 )
{
dword_180114568 = 10;
MEMORY[0x180115A3C] |= 0x20u;
sub_1800CC1BC(15LL);
v67 = 3947LL;
goto LABEL_168;
}
goto LABEL_57;
}
}
++v17;
if ( v18 )
continue;
}
break;
}
LABEL_57:
v25 = 0LL;
v70 = *(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x200220800LL);
v26 = (_DWORD *)v72;
while ( v25 != 8 )
{
*(_DWORD *)&v74[v25] = *v26;
v25 += 4LL;
v26 += 0x2000;
}
v27 = MEMORY[0x180121584];
v28 = v73 + MEMORY[0x180121584] * v4;
v29 = 3;
do
{
for ( ii = 0LL; ii != 2; ++ii )
{
if ( (1 << ii) & v29 )
{
v31 = *(_DWORD *)&v74[4 * ii] + 1;
*(_DWORD *)&v74[4 * ii] = v31;
sub_1800D1870(v4, ii, v31);
}
}
sub_1800D1924(v4, v29);
for ( jj = 0; jj != 2; ++jj )
{
if ( *(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x200220B10LL) & 3 & (1 << jj) )
v33 = !(1 << jj);
else
v33 = -1;
v29 &= v33;
}
v34 = 0LL;
while ( v34 <= 1 )
{
v35 = *(_DWORD *)&v74[4 * v34++];
if ( v35 == 127 )
{
if ( !v29 )
goto LABEL_79;
dword_180114568 = 10;
MEMORY[0x180115A3C] |= 0x20u;
sub_1800CC1BC(15LL);
v67 = 4003LL;
LABEL_168:
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, v67);
}
}
}
while ( v29 );
LABEL_79:
for ( kk = 0LL; kk != 8; kk += 4LL )
*(_DWORD *)(12LL * (v73 + (_DWORD)v4 * v27) + 6443633852LL + kk) = *(_DWORD *)&v74[kk];
v37 = 0LL;
*(_DWORD *)(12LL * v28 + 0x180120CC4LL) = v70;
v38 = *(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x200220800LL);
v39 = MEMORY[0x180121584];
v40 = (_DWORD *)v72;
while ( v37 != 8 )
{
*(_DWORD *)&v74[v37] = *v40 + 9;
v37 += 4LL;
v40 += 0x2000;
}
v41 = 0;
v69 = v73 + v39 * v4;
v71 = v39;
v42 = 3;
while ( 1 )
{
for ( ll = 0LL; ll <= 1 && !v41; ++ll )
{
if ( *(_DWORD *)&v74[4 * ll] )
v41 = 0;
else
v41 = ((1 << ll) & v42) != 0;
}
if ( v41 )
{
sub_1800D17D0(v4, ++v38);
for ( mm = 0LL; mm != 2; ++mm )
{
if ( !((1 << mm) & v42) )
{
v45 = *(_DWORD *)&v74[4 * mm] + 1;
*(_DWORD *)&v74[4 * mm] = v45;
sub_1800D1870(v4, mm, v45);
}
}
}
else
{
for ( nn = 0LL; nn != 2; ++nn )
{
if ( (1 << nn) & v42 )
{
v47 = *(_DWORD *)&v74[4 * nn] - 1;
*(_DWORD *)&v74[4 * nn] = v47;
sub_1800D1870(v4, nn, v47);
}
}
}
v11 = sub_1800D1924(v4, v42);
for ( i1 = 0; i1 != 2; ++i1 )
{
if ( *(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x200220B10LL) & 3 & (1 << i1) )
v49 = -1;
else
v49 = !(1 << i1);
v42 &= v49;
}
if ( (v41 && v38 == 47) == 1 )
break;
if ( !v42 )
goto LABEL_116;
}
if ( v42 )
{
dword_180114568 = 10;
MEMORY[0x180115A3C] |= 0x20u;
sub_1800CC1BC(15LL);
v67 = 4085LL;
goto LABEL_168;
}
v38 = 47;
LABEL_116:
for ( i2 = 0LL; i2 != 8; i2 += 4LL )
*(_DWORD *)(12LL * (v73 + (_DWORD)v4 * v71) + 6443633900LL + i2) = *(_DWORD *)&v74[i2];
*(_DWORD *)(12LL * v69 + 0x180120CF4LL) = v38;
}
if ( MEMORY[0x1801218D0] == 26 )
v51 = 190840832;
else
v51 = 188743680;
if ( MEMORY[0x1801218D0] == 12 )
v52 = 77594624;
else
v52 = 75497472;
if ( MEMORY[0x1801218C8] )
v53 = v52;
else
v53 = v51;
*(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x200220B04LL) = v53 | 0x160086;
*(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x200220B0CLL) = *(_DWORD *)((unsigned int)((_DWORD)v4 << 18)
+ 0x200220B0CLL) & 0xFFFFFF07 | 16 * MEMORY[0x1801218C4] | 8;
result = sub_1800E1188(v11);
v54 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x200220B0CLL) & 8) )
break;
if ( (unsigned __int64)(result - v54) > 0xF423F )
{
v67 = 2104LL;
goto LABEL_168;
}
}
v55 = *(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x200238138LL);
if ( MEMORY[0x1801218C8] == 3 )
{
*(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x2002380C8LL) &= 0xFFF7FFFF;
*(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x200238138LL) = v55 & 0xFFF7FFFF;
v56 = v68;
}
else
{
v56 = v68;
if ( MEMORY[0x1801218C8] == 1 )
{
*(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x2002380C8LL) &= 0xFFFDFFFF;
v57 = v55 & 0xFFFDFFFF;
}
else
{
if ( MEMORY[0x1801218C8] )
goto LABEL_142;
*(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x2002380C8LL) &= 0xFFFEFFFF;
v57 = v55 & 0xFFFEFFFF;
}
*(_DWORD *)((unsigned int)((_DWORD)v4 << 18) + 0x200238138LL) = v57;
}
LABEL_142:
v4 = (unsigned int)(v4 + 1);
v3 = v56 + 0x40000;
}
for ( i3 = 0LL; (unsigned int)i3 < MEMORY[0x18012157C]; i3 = (unsigned int)(i3 + 1) )
{
v59 = 0LL;
v60 = MEMORY[0x180121584];
v61 = 12LL * (unsigned int)(MEMORY[0x180121584] * i3 + 1) + 6443633852LL;
while ( v59 != 12 )
{
v62 = (unsigned int)(*(_DWORD *)(12LL * v60 * (unsigned int)i3 + 6443633852LL + v59 + 48)
+ *(_DWORD *)(12LL * v60 * (unsigned int)i3 + 6443633852LL + v59)) >> 1;
if ( v60 >= 2 )
v62 = (v62 + ((unsigned int)(*(_DWORD *)(v61 + v59 + 48) + *(_DWORD *)(v61 + v59)) >> 1)) >> 1;
*(_DWORD *)&v74[v59] = v62;
v59 += 4LL;
}
v63 = 0LL;
v64 = v75;
while ( v63 != 8 )
{
if ( *(_DWORD *)&v74[v63] < v64 )
v64 = *(_DWORD *)&v74[v63];
v63 += 4LL;
}
for ( i4 = 0LL; i4 != 3; ++i4 )
{
v66 = *(_DWORD *)&v74[4 * i4];
*(_DWORD *)&v74[4 * i4] = v66 - v64;
if ( i4 == 2 )
result = sub_1800CBE44(i3, v66 - v64, 0);
else
result = sub_1800CBEE8(i3, i4, v66 - v64, 0);
}
}
if ( 5139240511851214385LL != v76 )
sub_1800D4A5C();
return result;
}
// 1800CFE04: write access to const memory at 180114568 has been detected
// 1800CFE3C: write access to const memory at 180114568 has been detected
// 1800CFE74: write access to const memory at 180114568 has been detected
// 1800CFED0: write access to const memory at 180114568 has been detected
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
// 180114568: using guessed type int dword_180114568;
// 1800CF548: using guessed type char var_64[8];
//----- (00000001800CFF00) ----------------------------------------------------
// write access to const memory has been detected, the output may be wrong!
void sub_1800CFF00()
{
unsigned int v0; // w10
unsigned int v1; // w11
__int64 v2; // x0
unsigned __int64 i; // x21
unsigned __int64 v4; // x22
__int64 v5; // x0
__int64 v6; // x20
__int64 v7; // x20
unsigned __int64 j; // x23
_DWORD *v9; // x27
__int64 v10; // x20
__int64 v11; // x8
unsigned int v12; // w9
signed __int64 v13; // x9
_DWORD *v14; // x10
unsigned int *v15; // x8
unsigned int v16; // w21
int v17; // w22
int v18; // w23
int v19; // w8
signed int v20; // w23
signed int v21; // w27
signed int v22; // w20
signed int v23; // w21
unsigned int v24; // w22
bool v25; // zf
bool v26; // zf
bool v27; // zf
bool v28; // zf
bool v29; // cf
__int64 v30; // x0
int v31; // w11
__int64 v32; // x20
signed __int64 v33; // x8
int v34; // w8
__int64 k; // x8
int l; // w20
int v37; // w21
int m; // w22
int n; // w23
int ii; // w23
__int64 v41; // x8
_DWORD *v42; // x9
_DWORD *v43; // x10
int *v44; // x9
signed int v45; // w8
int v46; // t1
int *v47; // x8
int v48; // w1
unsigned int v49; // w8
__int64 jj; // x19
unsigned __int64 v51; // x8
__int64 v52; // x15
signed __int64 v53; // x9
signed __int64 v54; // x10
int v55; // w11
int v56; // w12
__int64 v57; // x8
__int64 *v58; // x9
int v59; // t1
unsigned __int64 kk; // x8
unsigned int v61; // w9
int v62; // w10
int v63; // w2
unsigned __int64 v64; // x21
int v65; // w22
int v66; // w8
__int64 v67; // x28
__int64 v68; // x0
unsigned __int64 ll; // x19
__int64 v70; // x22
int v71; // w8
_DWORD *v72; // x19
__int64 v73; // x0
__int64 v74; // x22
int v75; // w8
int v76; // w9
signed __int64 v77; // x8
unsigned int v78; // [xsp+1Ch] [xbp-134h]
unsigned int v79[3]; // [xsp+38h] [xbp-118h]
__int64 v80; // [xsp+38h] [xbp-118h]
int v81; // [xsp+48h] [xbp-108h]
int v82; // [xsp+48h] [xbp-108h]
unsigned int v83; // [xsp+50h] [xbp-100h]
unsigned int v84; // [xsp+54h] [xbp-FCh]
int v85; // [xsp+58h] [xbp-F8h]
__int64 v86; // [xsp+58h] [xbp-F8h]
__int64 v87; // [xsp+60h] [xbp-F0h]
unsigned __int64 v88; // [xsp+60h] [xbp-F0h]
__int64 v89; // [xsp+68h] [xbp-E8h]
__int64 v90; // [xsp+68h] [xbp-E8h]
unsigned int v91; // [xsp+70h] [xbp-E0h]
signed __int64 v92; // [xsp+70h] [xbp-E0h]
int v93; // [xsp+78h] [xbp-D8h]
signed __int64 v94; // [xsp+78h] [xbp-D8h]
__int64 v95; // [xsp+78h] [xbp-D8h]
unsigned int v96; // [xsp+80h] [xbp-D0h]
signed __int64 v97; // [xsp+80h] [xbp-D0h]
int v98; // [xsp+80h] [xbp-D0h]
__int64 v99; // [xsp+88h] [xbp-C8h]
__int64 v100; // [xsp+90h] [xbp-C0h]
__int64 v101; // [xsp+98h] [xbp-B8h]
__int64 v102; // [xsp+A0h] [xbp-B0h]
int v103; // [xsp+A8h] [xbp-A8h]
__int64 v104; // [xsp+B0h] [xbp-A0h]
__int64 v105; // [xsp+B8h] [xbp-98h]
__int64 v106; // [xsp+C0h] [xbp-90h]
__int64 v107; // [xsp+C8h] [xbp-88h]
int v108; // [xsp+D0h] [xbp-80h]
__int64 v109; // [xsp+F8h] [xbp-58h]
v78 = 0;
v0 = 0;
v109 = 5139240511851214385LL;
while ( v0 < MEMORY[0x180121580] )
{
v1 = 0;
v87 = v0 << 18;
v89 = (unsigned __int8)v0;
v83 = v0;
while ( v1 < MEMORY[0x180121584] )
{
v84 = v1;
v93 = (unsigned __int8)v1;
v2 = sub_1800D0B88((unsigned __int8)v0, v1);
for ( i = 0LL; i <= 1; ++i )
{
v4 = v87 + (i << 15);
*(_DWORD *)(v4 + 8592196640LL) = 256;
v5 = sub_1800E1188(v2);
v6 = v5;
while ( 1 )
{
v5 = sub_1800E1188(v5);
if ( !(*(_DWORD *)(v87 + (i << 15) + 8592196640LL) & 0x100) )
break;
if ( (unsigned __int64)(v5 - v6) > 0xF423F )
{
v77 = 1563LL;
goto LABEL_186;
}
}
*(_DWORD *)(v87 + (i << 15) + 8592196644LL) = 256;
v2 = sub_1800E1188(v5);
v7 = v2;
while ( 1 )
{
v2 = sub_1800E1188(v2);
if ( !(*(_DWORD *)(v87 + (i << 15) + 8592196644LL) & 0x100) )
break;
if ( (unsigned __int64)(v2 - v7) > 0xF423F )
{
v77 = 1569LL;
goto LABEL_186;
}
}
for ( j = 0LL; j <= 7; ++j )
{
v9 = (_DWORD *)((v87 + (i << 15) + 8592196608LL) | 4 * j);
*v9 = 256;
v2 = sub_1800E1188(v2);
v10 = v2;
while ( 1 )
{
v2 = sub_1800E1188(v2);
if ( !(*v9 & 0x100) )
break;
if ( (unsigned __int64)(v2 - v10) > 0xF423F )
{
v77 = 1576LL;
goto LABEL_186;
}
}
}
}
v11 = 0LL;
v12 = v84 + MEMORY[0x180121584] * v83;
*(_DWORD *)(4LL * v12 + 0x180120BBCLL) = *(_DWORD *)(v87 + 8592164864LL) & 0xFF;
v13 = 8LL * v12 + 6443633772LL;
v14 = (_DWORD *)(v78 + 8592197380LL);
while ( v11 != 8 )
{
*(_DWORD *)(v13 + v11) = *v14 & 0xFF;
v11 += 4LL;
v14 += 0x2000;
}
v108 = 0;
v106 = 0LL;
v107 = 0LL;
v104 = 0LL;
v105 = 0LL;
v103 = 0;
v101 = 0LL;
v102 = 0LL;
v99 = 0LL;
v100 = 0LL;
if ( MEMORY[0x1801218C8] )
v15 = (unsigned int *)6443636140LL;
else
v15 = (unsigned int *)6443636136LL;
v16 = *v15;
sub_1800D0B88((unsigned __int8)v83, v84);
v17 = MEMORY[0x180121584];
v18 = MEMORY[0x180121584] * v89 + (unsigned __int8)v84;
sub_1800D1A24(3, 0);
if ( MEMORY[0x1801215B0] )
{
v19 = MEMORY[0x1801218C8];
if ( !MEMORY[0x1801218C8] )
{
sub_1800D1B54((unsigned __int8)v83, (unsigned __int8)v84, MEMORY[0x180121740]);
v19 = MEMORY[0x1801218C8];
}
v81 = v18;
v85 = v17;
v91 = v16;
if ( v19 == 1 )
sub_1800D1B54((unsigned __int8)v83, (unsigned __int8)v84, MEMORY[0x18012177C]);
sub_1800D1BF0(0LL);
v20 = 0;
v21 = 0;
v22 = 0;
v23 = 0;
v24 = 0;
v79[0] = 3 * *(_DWORD *)(12LL * (unsigned int)v89 + 0x180120C8CLL);
v96 = 5 * *(_DWORD *)(12LL * (unsigned int)v89 + 0x180120C8CLL);
while ( 1 )
{
if ( v24 >= v96 )
{
v18 = v81;
goto LABEL_71;
}
if ( sub_1800D1C50(1, v24, 1u) )
v25 = v20 == 0;
else
v25 = 0;
if ( v25 )
v20 = 1;
if ( sub_1800D1C50(2, v24, 1u) )
v26 = v21 == 0;
else
v26 = 0;
if ( v26 )
v21 = 1;
if ( (sub_1800D1C50(1, v24, 1u) == 0) & (unsigned __int8)v20 )
v27 = v22 == 0;
else
v27 = 0;
if ( v27 )
v22 = 1;
if ( (sub_1800D1C50(2, v24, 1u) == 0) & (unsigned __int8)v21 )
v28 = v23 == 0;
else
v28 = 0;
if ( v28 )
v23 = 1;
if ( v21 & v20 )
break;
v24 += 4;
}
v18 = v81;
while ( v24 < v96 && (!v22 || !v23) )
{
if ( !(v22 | sub_1800D1C50(1, v24, 1u)) )
v22 = 1;
if ( !(v23 | sub_1800D1C50(2, v24, 1u)) )
v23 = 1;
v24 += 4;
}
LABEL_71:
if ( v24 >= v96 )
{
sub_1800D1BF0(2LL);
v16 = v91;
v17 = v85;
}
else
{
v29 = v24 >= v79[0];
v16 = v91;
v17 = v85;
if ( v29 )
sub_1800D1BF0(1LL);
}
}
v30 = sub_1800D1CDC(v89, 3, 0);
v80 = v18;
v31 = v93 + v89 * v17;
v32 = v16;
v94 = 1440LL * v31 + 6443627744LL;
v82 = v31;
v92 = 1440LL * v31 + 6443621984LL;
v33 = 0LL;
v86 = v16;
while ( v33 != v32 )
{
v97 = v33;
MEMORY[0x180120B60] = v33;
v34 = MEMORY[0x1801218C8];
if ( !MEMORY[0x1801218C8] )
{
v30 = sub_1800D1B54((unsigned __int8)v83, (unsigned __int8)v84, *(_DWORD *)(4 * v97 + 0x180121740LL));
v34 = MEMORY[0x1801218C8];
}
if ( v34 == 1 )
v30 = sub_1800D1B54((unsigned __int8)v83, (unsigned __int8)v84, *(_DWORD *)(4 * v97 + 0x18012177CLL));
for ( k = 0LL; k != 36; k += 2LL )
{
*(_WORD *)((char *)&v99 + k) = 0;
*(_WORD *)((char *)&v104 + k) = 0;
}
for ( l = 0; l != 2; ++l )
{
if ( l )
v37 = 2;
else
v37 = 1;
for ( m = -12; ; m += 4 )
{
if ( m + 4 > 248 )
{
m += 4;
goto LABEL_97;
}
if ( sub_1800D1C50(v37, m + 4, 1u) )
break;
}
while ( m <= 248 )
{
if ( sub_1800D1C50(v37, m, 4u) )
goto LABEL_98;
++m;
}
LABEL_97:
*(_DWORD *)(80 * v89 + 0x180120B60LL + 4 * v97 + 1492) = 1;
LABEL_98:
for ( n = m; n <= 303 && !sub_1800D1D78(v37, n, 1); n += 4 )
;
if ( n <= m )
*(_DWORD *)(80 * v89 + 0x180120B60LL + 4 * v97 + 1492) = 1;
sub_1800D1E0C(v37, n, -1, -248, (__int64)&v104);
for ( ii = m; !((ii + 248 < 0) ^ __OFADD__(ii, 248)) && !sub_1800D1D78(v37, ii, -1); ii -= 4 )
;
if ( ii > m )
*(_DWORD *)(80 * v89 + 0x180120B60LL + 4 * v97 + 1492) = 1;
v30 = sub_1800D1E0C(v37, ii, 1, 248, (__int64)&v99);
}
v41 = 0LL;
v42 = (_DWORD *)v92;
v43 = (_DWORD *)v94;
v32 = v86;
while ( v41 != 36 )
{
*v42 = *(signed __int16 *)((char *)&v104 + v41);
++v42;
*v43 = *(signed __int16 *)((char *)&v99 + v41);
++v43;
v41 += 2LL;
}
v33 = v97 + 1;
v94 += 72LL;
v92 += 72LL;
}
v44 = (int *)(80LL * v82 + 6443634996LL);
v45 = 1;
while ( v32 )
{
v46 = *v44;
++v44;
v45 &= v46;
--v32;
}
if ( v45 == 1 )
{
dword_180114568 = 10;
MEMORY[0x180115A3C] |= 0x20u;
sub_1800CC1BC(15LL);
v77 = 4849LL;
LABEL_186:
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, v77);
}
if ( MEMORY[0x1801218C8] )
v47 = (int *)6443636140LL;
else
v47 = (int *)6443636136LL;
v48 = *v47;
v49 = (unsigned __int8)v84 + MEMORY[0x180121584] * v89;
sub_1800D0ED0(
v30,
v48,
0x12u,
1440LL * v49 + 6443621984LL,
1440LL * v49 + 6443627744LL,
(int *)(80LL * v49 + 6443634996LL),
0LL,
0LL,
(int *)(4LL * v49 + 6443633692LL),
(int *)(4LL * v49 + 6443633548LL));
sub_1800D1A24(1, *(_DWORD *)(4 * v80 + 0x180120C1CLL));
sub_1800D1A24(2, *(_DWORD *)(4 * v80 + 0x180120C1CLL));
v0 = v83;
v1 = v84 + 1;
}
++v0;
v78 += 0x40000;
}
for ( jj = 0LL; (unsigned int)jj < MEMORY[0x18012157C]; jj = (unsigned int)(jj + 1) )
{
v51 = 0LL;
v52 = *(unsigned int *)(4LL * (unsigned int)(MEMORY[0x180121584] * jj) + 0x180120B8CLL);
v53 = 1440LL * (unsigned int)(MEMORY[0x180121584] * jj) + 6443621984LL + 72 * v52;
v54 = 1440LL * (unsigned int)(MEMORY[0x180121584] * jj) + 6443627744LL + 72 * v52;
while ( v51 < 0x12 )
{
v55 = *(_DWORD *)(v53 + 4 * v51);
v56 = *(_DWORD *)(v54 + 4 * v51);
if ( v55 < v56 )
{
dword_180114568 = 10;
MEMORY[0x180115A3C] |= 0x20u;
sub_1800CC1BC(15LL);
v77 = 5081LL;
goto LABEL_186;
}
*((_DWORD *)&v104 + v51++) = (v56 + v55) / 2;
}
v57 = 0LL;
v58 = &v104;
while ( v57 != 8 )
{
v59 = *(_DWORD *)v58;
v58 += 4;
*(_DWORD *)((char *)&v99 + v57) = v59;
v57 += 4LL;
}
for ( kk = 0LL; kk != 18; ++kk )
{
v61 = (unsigned int)kk >> 3;
if ( kk >= 0x10 )
v61 = kk - 16;
v62 = *((_DWORD *)&v99 + v61);
if ( v62 >= *((_DWORD *)&v104 + kk) )
v62 = *((_DWORD *)&v104 + kk);
*((_DWORD *)&v99 + v61) = v62;
}
v90 = v52;
if ( (-(signed int)v99 & ~(-(signed int)v99 >> 31)) <= (-HIDWORD(v99) & ~(-HIDWORD(v99) >> 31)) )
v63 = -HIDWORD(v99) & ~(-HIDWORD(v99) >> 31);
else
v63 = -(signed int)v99 & ~(-(signed int)v99 >> 31);
v95 = (unsigned int)jj;
v98 = v63;
sub_1800CBE44(jj, *(_DWORD *)(4LL * (unsigned int)jj + 0x180120BBCLL), v63);
v64 = 0LL;
v88 = (unsigned int)((_DWORD)jj << 18);
while ( v64 <= 1 )
{
v65 = *((_DWORD *)&v99 + v64);
sub_1800D19D8(jj, 1 << v64, *((_DWORD *)&v99 + v64), 1);
if ( v65 <= 0 )
v66 = -v65;
else
v66 = 0;
v67 = jj;
v68 = sub_1800CBEE8(jj, v64, *(_DWORD *)(8 * v95 + 0x180120B60LL + 4 * v64 + 268), v98 - v66);
for ( ll = 0LL; ll <= 7; ++ll )
{
*(_DWORD *)(((v88 + 8592195584LL + (v64 << 15)) | 0x400) + 4 * ll) = (*((_DWORD *)&v104 + ll + 8 * v64)
- *((_DWORD *)&v99 + v64)) | 0x100;
v68 = sub_1800E1188(v68);
v70 = v68;
while ( 1 )
{
v68 = sub_1800E1188(v68);
if ( !(*(_DWORD *)(((v88 + 8592195584LL + (v64 << 15)) | 0x400) + 4 * ll) & 0x100) )
break;
if ( (unsigned __int64)(v68 - v70) > 0xF423F )
{
v77 = 4993LL;
goto LABEL_186;
}
}
}
v71 = (*((_DWORD *)&v104 + v64 + 16) - *((_DWORD *)&v99 + v64)) | 0x100;
v72 = (_DWORD *)((v88 + 8592162816LL + (++v64 << 15)) | 0x424);
*v72 = v71;
v73 = sub_1800E1188(v68);
v74 = v73;
while ( 1 )
{
v73 = sub_1800E1188(v73);
if ( !(*(_DWORD *)((v88 + 8592162816LL + (v64 << 15)) | 0x424) & 0x100) )
break;
if ( (unsigned __int64)(v73 - v74) > 0xF423F )
{
v77 = 5002LL;
goto LABEL_186;
}
}
jj = v67;
}
v75 = MEMORY[0x1801218C8];
if ( MEMORY[0x1801218C8] == 1 )
{
sub_1800D1B54((unsigned __int8)jj, 0, *(_DWORD *)(4 * v90 + 0x18012177CLL));
v75 = MEMORY[0x1801218C8];
}
if ( !v75 )
{
sub_1800D1B54((unsigned __int8)jj, 0, *(_DWORD *)(4 * v90 + 0x180121740LL));
v75 = MEMORY[0x1801218C8];
}
if ( v75 )
{
if ( v75 != 1 )
goto LABEL_172;
*(_DWORD *)(v88 + 8592166688LL) = *(_DWORD *)(v88 + 8592166692LL) & 0xFFFF00FF | (*(_DWORD *)(4 * v90
+ 0x18012177CLL) << 8);
}
else
{
*(_DWORD *)(v88 + 8592166688LL) = *(_DWORD *)(v88 + 8592166692LL) & 0xFFFFFF00 | *(_DWORD *)(4 * v90
+ 0x180121740LL);
}
v75 = MEMORY[0x1801218C8];
LABEL_172:
if ( v75 )
{
if ( v75 == 1 )
*(_DWORD *)(v88 + 8592032880LL) = *(_DWORD *)(v88 + 8592032880LL) & 0xFFFF00C0 | (*(_DWORD *)(4 * v90 + 0x18012177CLL) << 8) | 0xE;
}
else
{
*(_DWORD *)(v88 + 8592032856LL) = *(_DWORD *)(v88 + 8592032856LL) & 0xFFFF00C0 | (*(_DWORD *)(4 * v90
+ 0x180121740LL) << 8) | 0xE;
}
if ( MEMORY[0x1801218C8] )
{
if ( MEMORY[0x1801218C8] != 1 )
continue;
*(_DWORD *)(v88 + 8592032880LL) = *(_DWORD *)(v88 + 8592032880LL) & 0xFFFF00C0 | (*(_DWORD *)(4 * v90
+ 0x18012177CLL) << 8) | 0xE;
}
else
{
*(_DWORD *)(v88 + 8592032856LL) = *(_DWORD *)(v88 + 8592032856LL) & 0xFFFF00C0 | (*(_DWORD *)(4 * v90
+ 0x180121740LL) << 8) | 0xE;
}
if ( !MEMORY[0x1801218C8] )
{
v76 = *(_DWORD *)(v88 + 8592166692LL);
*(_DWORD *)(v88 + 8592166704LL) = *(_DWORD *)(v88 + 8592166704LL) & 0xFF00FF | ((unsigned __int8)(*(unsigned int *)(v88 + 8592166692LL) - BYTE1(v76)) << 24) | ((unsigned __int16)(((unsigned __int16)*(_DWORD *)(v88 + 8592166692LL) >> 8) - (unsigned __int8)*(_DWORD *)(v88 + 8592166692LL)) << 8);
}
}
if ( 5139240511851214385LL != v109 )
sub_1800D4A5C();
}
// 1800D0B20: write access to const memory at 180114568 has been detected
// 1800D0B58: write access to const memory at 180114568 has been detected
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
// 180114568: using guessed type int dword_180114568;
//----- (00000001800D0B88) ----------------------------------------------------
__int64 __fastcall sub_1800D0B88(__int64 result, char a2)
{
unsigned int *v2; // x8
int v3; // w10
v2 = (unsigned int *)((result << 18) + 8592166432LL);
v3 = *(_DWORD *)((result << 18) + 0x200220E20LL);
MEMORY[0x180120B61] = result;
MEMORY[0x180120B62] = a2;
*v2 = v3 & 0xFFFF00FF | (MEMORY[0x1801217E8] << 8);
v2[32] = MEMORY[0x180121818];
v2[33] = MEMORY[0x18012181C];
v2[34] = MEMORY[0x180121820];
v2[35] = MEMORY[0x180121824];
v2[37] = (MEMORY[0x180121848] << 16) | (MEMORY[0x18012184C] << 24) | (MEMORY[0x180121844] << 8) | MEMORY[0x180121840];
v2[38] = (MEMORY[0x180121858] << 16) | (MEMORY[0x18012185C] << 24) | (MEMORY[0x180121854] << 8) | MEMORY[0x180121850];
v2[39] = MEMORY[0x180121860];
v2[40] = (MEMORY[0x18012186C] << 16) | (MEMORY[0x180121870] << 24) | (MEMORY[0x180121868] << 8) | MEMORY[0x180121864];
v2[41] = (MEMORY[0x18012187C] << 16) | (MEMORY[0x180121880] << 24) | (MEMORY[0x180121878] << 8) | MEMORY[0x180121874];
v2[42] = MEMORY[0x180121884];
return result;
}
//----- (00000001800D0DF0) ----------------------------------------------------
// write access to const memory has been detected, the output may be wrong!
_DWORD *__fastcall sub_1800D0DF0(_DWORD *result, int a2, int a3, int a4, int a5)
{
__int64 v5; // x29
__int64 v6; // x30
int v7; // w11
int v8; // w8
if ( a4 < a5 )
{
dword_180114568 = 10;
MEMORY[0x180115A3C] |= 0x20u;
sub_1800CC1BC(15LL);
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 5209LL, v5, v6);
}
v7 = result[1];
++*result;
result[1] = a5 + a3 + a4 + a3 + v7;
v8 = result[3] + (a4 - a5) * a2;
result[2] += a4 - a5;
result[3] = v8;
return result;
}
// 1800D0E48: write access to const memory at 180114568 has been detected
// 180101040: using guessed type char byte_180101040;
// 180114568: using guessed type int dword_180114568;
//----- (00000001800D0E98) ----------------------------------------------------
_DWORD *__fastcall sub_1800D0E98(_DWORD *result)
{
unsigned int v1; // w8
if ( *result )
result[4] = (result[1] + *result) / (2 * *result);
v1 = result[2];
if ( v1 )
result[5] = (result[3] + (v1 >> 1)) / v1;
return result;
}
//----- (00000001800D0ED0) ----------------------------------------------------
_DWORD *__fastcall sub_1800D0ED0(__int64 a1, int a2, unsigned int a3, __int64 a4, __int64 a5, int *a6, int *a7, _DWORD *a8, int *a9, int *a10)
{
int *v10; // x25
__int64 v11; // x23
__int64 v12; // x12
int v13; // w26
char *i; // x8
int v15; // w22
int v16; // w21
unsigned int v17; // w20
__int64 v18; // x27
int v19; // w24
signed int v20; // w28
signed int v21; // w19
int v22; // w4
int v23; // w3
int v24; // w8
int v25; // t1
int v26; // t1
_DWORD *v27; // ST48_8
_DWORD *result; // x0
int v29; // w9
int v30; // w10
int v31; // [xsp+1Ch] [xbp-A4h]
__int64 v32; // [xsp+20h] [xbp-A0h]
signed __int64 v33; // [xsp+28h] [xbp-98h]
int v34; // [xsp+34h] [xbp-8Ch]
int *v35; // [xsp+38h] [xbp-88h]
__int64 v36; // [xsp+40h] [xbp-80h]
char v37; // [xsp+50h] [xbp-70h]
int v38; // [xsp+60h] [xbp-60h]
int v39; // [xsp+64h] [xbp-5Ch]
__int64 v40; // [xsp+68h] [xbp-58h]
v10 = a7;
v35 = a6;
v11 = a5;
v12 = a4;
v34 = a2;
v40 = 5139240511851214385LL;
v13 = MEMORY[0x1801217D0];
if ( MEMORY[0x1801217D0] == 1 )
{
for ( i = &v37; i < (char *)&v40; i += 4 )
*(_DWORD *)i = 0;
}
v15 = 0;
v16 = 0;
v31 = 0;
v17 = a3;
v32 = 0LL;
v33 = 4LL * a3;
while ( v15 != v34 )
{
v18 = 0LL;
v19 = *v35;
v20 = 248;
v21 = -248;
v36 = v12;
while ( v17 != (_DWORD)v18 )
{
v22 = *(_DWORD *)(v11 + 4 * v18);
v23 = *(_DWORD *)(v12 + 4 * v18);
if ( a8 && v10 )
{
v25 = *a8;
++a8;
v24 = v25;
v26 = *v10;
++v10;
v16 = v24 - v26;
}
if ( !v19 )
{
if ( v13 == 1 )
{
v27 = a8;
result = sub_1800D0DF0(&v37, v15, v16, v23, v22);
v12 = v36;
a8 = v27;
}
else
{
if ( v20 > v23 )
v20 = *(_DWORD *)(v12 + 4 * v18);
if ( v21 < v22 )
v21 = *(_DWORD *)(v11 + 4 * v18);
}
}
++v18;
}
++v35;
if ( v13 != 1 && !v19 && HIDWORD(v32) < v20 - v21 )
{
HIDWORD(v32) = v20 - v21;
v31 = v15;
LODWORD(v32) = (v20 + v21) / 2;
}
++v15;
v11 += v33;
v12 += v33;
}
v30 = v31;
v29 = v32;
if ( v13 == 1 )
{
result = sub_1800D0E98(&v37);
v29 = v38;
v30 = v39;
}
if ( a10 )
*a10 = v30;
if ( a9 )
*a9 = v29;
if ( 5139240511851214385LL != v40 )
sub_1800D4A5C();
return result;
}
//----- (00000001800D10AC) ----------------------------------------------------
__int64 __fastcall sub_1800D10AC(__int64 a1, unsigned int a2)
{
int v2; // w10
unsigned int v3; // w10
int v4; // w10
__int64 v5; // x20
__int64 result; // x0
__int64 v7; // x19
v2 = 3 * *(_DWORD *)(12LL * (unsigned int)a1 + 0x180120C8CLL);
if ( v2 + 1 >= a2 )
{
v5 = (unsigned int)((_DWORD)a1 << 18);
}
else
{
v3 = a2 - v2;
if ( v3 <= 0x36 )
v4 = v3 | 0x100;
else
v4 = 311;
v5 = (unsigned int)((_DWORD)a1 << 18);
*(_DWORD *)((unsigned int)v5 + 0x20022051CLL) = v4;
a2 = 3 * *(_DWORD *)(12LL * (unsigned int)a1 + 0x180120C8CLL);
}
*(_DWORD *)(v5 + 8592164624LL) = ((unsigned __int16)a2 << 16) | 2;
result = sub_1800E1188(a1);
v7 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*(_DWORD *)(v5 + 8592164624LL) & 2) )
break;
if ( (unsigned __int64)(result - v7) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 1641LL);
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D1198) ----------------------------------------------------
__int64 __fastcall sub_1800D1198(__int64 a1, unsigned int a2)
{
int v2; // w10
unsigned int v3; // w10
int v4; // w10
__int64 v5; // x20
__int64 result; // x0
__int64 v7; // x19
v2 = 3 * *(_DWORD *)(12LL * (unsigned int)a1 + 0x180120C8CLL);
if ( v2 + 1 >= a2 )
{
v5 = (unsigned int)((_DWORD)a1 << 18);
}
else
{
v3 = a2 - v2;
if ( v3 <= 0x36 )
v4 = v3 | 0x100;
else
v4 = 311;
v5 = (unsigned int)((_DWORD)a1 << 18);
*(_DWORD *)((unsigned int)v5 + 0x200220518LL) = v4;
a2 = 3 * *(_DWORD *)(12LL * (unsigned int)a1 + 0x180120C8CLL);
}
*(_DWORD *)(v5 + 8592164616LL) = ((unsigned __int16)a2 << 16) | 2;
result = sub_1800E1188(a1);
v7 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*(_DWORD *)(v5 + 8592164616LL) & 2) )
break;
if ( (unsigned __int64)(result - v7) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 1673LL);
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D1284) ----------------------------------------------------
__int64 __fastcall sub_1800D1284(__int64 a1, unsigned int a2)
{
int v2; // w9
unsigned __int64 v3; // x25
_DWORD *v4; // x24
unsigned int v5; // w8
int v6; // w9
signed int v7; // w26
__int64 v8; // x23
signed __int64 v9; // x27
__int64 v10; // x19
__int64 result; // x0
__int64 v12; // x19
signed __int64 v13; // x8
v2 = 3 * *(_DWORD *)(12LL * (unsigned int)a1 + 0x180120C8CLL);
if ( v2 + 1 >= a2 )
{
v8 = (unsigned int)((_DWORD)a1 << 18);
}
else
{
v3 = 0LL;
v4 = (_DWORD *)(12LL * (unsigned int)a1 + 6443633804LL);
v5 = a2 - v2;
v6 = (a2 - v2) | 0x100;
if ( v5 <= 0x36 )
v7 = v6;
else
v7 = 311;
v8 = (unsigned int)((_DWORD)a1 << 18);
v9 = v8 + 8592164096LL;
while ( v3 <= 5 )
{
*(_DWORD *)(v9 + 4 * v3) = v7;
a1 = sub_1800E1188(a1);
v10 = a1;
while ( 1 )
{
a1 = sub_1800E1188(a1);
if ( !(*(_DWORD *)(v9 + 4 * v3) & 0x100) )
break;
if ( (unsigned __int64)(a1 - v10) > 0xF423F )
{
v13 = 1599LL;
goto LABEL_19;
}
}
++v3;
}
a2 = 3 * *v4;
}
*(_DWORD *)(v8 + 8592164608LL) = ((unsigned __int16)a2 << 16) | 2;
result = sub_1800E1188(a1);
v12 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*(_DWORD *)(v8 + 8592164608LL) & 2) )
break;
if ( (unsigned __int64)(result - v12) > 0xF423F )
{
v13 = 1608LL;
LABEL_19:
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, v13);
}
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D13CC) ----------------------------------------------------
__int64 __fastcall sub_1800D13CC(__int64 a1, int a2)
{
int v2; // w19
__int64 v3; // x23
int v4; // w26
__int64 v5; // x20
signed __int64 v6; // x8
__int64 v7; // x0
__int64 v8; // x19
v2 = a2;
v3 = (unsigned int)((_DWORD)a1 << 18);
v4 = *(_DWORD *)((unsigned int)v3 + 0x200220924LL);
if ( !a2 )
{
*(_DWORD *)((unsigned int)((_DWORD)a1 << 18) + 0x200220924LL) = v4 | 0x10;
a1 = sub_1800E1188(a1);
v5 = a1;
do
{
a1 = sub_1800E1188(a1);
if ( !(*(_DWORD *)(v3 + 8592165156LL) & 0x10) )
goto LABEL_6;
}
while ( (unsigned __int64)(a1 - v5) <= 0xF423F );
v6 = 1875LL;
LABEL_11:
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, v6);
}
LABEL_6:
if ( (unsigned int)(v2 - 1) <= 1 )
{
*(_DWORD *)(v3 + 8592165156LL) = v4 | 0x100;
v7 = sub_1800E1188(a1);
v8 = v7;
do
{
v7 = sub_1800E1188(v7);
if ( !(*(_DWORD *)(v3 + 8592165156LL) & 0x100) )
return *(_DWORD *)(v3 + 8592165148LL) & 0x3F;
}
while ( (unsigned __int64)(v7 - v8) <= 0xF423F );
v6 = 1883LL;
goto LABEL_11;
}
return *(_DWORD *)(v3 + 8592165148LL) & 0x3F;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D14C4) ----------------------------------------------------
// write access to const memory has been detected, the output may be wrong!
__int64 __fastcall sub_1800D14C4(int a1, int a2)
{
__int64 v2; // x29
__int64 v3; // x30
if ( a1 > a2 )
{
dword_180114568 = 10;
MEMORY[0x180115A3C] |= 0x20u;
sub_1800CC1BC(15LL);
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 5071LL, v2, v3);
}
return (a2 + a1) / 2;
}
// 1800D14F4: write access to const memory at 180114568 has been detected
// 180101040: using guessed type char byte_180101040;
// 180114568: using guessed type int dword_180114568;
//----- (00000001800D1544) ----------------------------------------------------
__int64 __fastcall sub_1800D1544(unsigned int a1, int a2, __int16 a3, double a4, double a5)
{
unsigned __int16 v5; // w19
int v6; // w20
unsigned int v7; // w21
unsigned int v8; // w1
signed __int64 v9; // x0
unsigned __int64 v10; // x8
_DWORD *v11; // x20
__int64 result; // x0
__int64 v13; // x19
v5 = a3;
v6 = a2;
v7 = a1;
if ( a2 )
v8 = 2;
else
v8 = 1;
v9 = sub_1800D16A8(a1, v8, a3, a4, a5);
v10 = (v7 << 18) + (unsigned __int64)(unsigned int)((v6 << 15) + 0x8000) + 8592162816LL;
*(_DWORD *)(v10 + 1560) = v9;
v11 = (_DWORD *)(v10 | 0x608);
*(_DWORD *)(v10 + 1544) = (v5 << 16) | 2;
result = sub_1800E1188(v9);
v13 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*v11 & 2) )
break;
if ( (unsigned __int64)(result - v13) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 1962LL);
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D1610) ----------------------------------------------------
__int64 __fastcall sub_1800D1610(__int64 a1)
{
__int64 v1; // x20
__int64 result; // x0
__int64 v3; // x19
v1 = (unsigned int)((_DWORD)a1 << 18);
*(_DWORD *)(v1 + 0x200220E58LL) |= 1u;
result = sub_1800E1188(a1);
v3 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*(_DWORD *)(v1 + 8592166488LL) & 1) )
break;
if ( (unsigned __int64)(result - v3) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 1991LL);
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D16A8) ----------------------------------------------------
signed __int64 __fastcall sub_1800D16A8(unsigned int a1, unsigned int a2, unsigned int a3, double a4, double a5)
{
double v5; // d0
double v6; // d1
v5 = (double)a3;
LODWORD(a5) = *(_DWORD *)(12LL * a1 + 0x180120B60LL + 4LL * a2 + 300);
v6 = (double)*(unsigned __int64 *)&a5;
if ( (double)a3 > v6 * 1.75 )
return 3LL;
if ( v5 <= v6 * 1.5 )
return v5 > v6;
return 2LL;
}
//----- (00000001800D1704) ----------------------------------------------------
__int64 __fastcall sub_1800D1704(unsigned int a1, int a2, __int16 a3, double a4, double a5)
{
unsigned __int16 v5; // w19
int v6; // w20
unsigned int v7; // w21
unsigned int v8; // w1
signed __int64 v9; // x0
unsigned __int64 v10; // x8
_DWORD *v11; // x20
__int64 result; // x0
__int64 v13; // x19
v5 = a3;
v6 = a2;
v7 = a1;
if ( a2 )
v8 = 2;
else
v8 = 1;
v9 = sub_1800D16A8(a1, v8, a3, a4, a5);
v10 = (v7 << 18) + (unsigned __int64)(unsigned int)((v6 << 15) + 0x8000) + 8592162816LL;
*(_DWORD *)(v10 + 1560) = v9;
v11 = (_DWORD *)(v10 | 0x608);
*(_DWORD *)(v10 + 1544) = (v5 << 16) | 4;
result = sub_1800E1188(v9);
v13 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*v11 & 4) )
break;
if ( (unsigned __int64)(result - v13) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 1981LL);
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D17D0) ----------------------------------------------------
__int64 __fastcall sub_1800D17D0(__int64 a1, int a2)
{
__int64 v2; // x20
__int64 result; // x0
__int64 v4; // x19
v2 = (unsigned int)((_DWORD)a1 << 18);
*(_DWORD *)(v2 + 0x200220800LL) = *(_DWORD *)(v2 + 0x200220800LL) & 0xFFFFFE00 | a2 | 0x100;
result = sub_1800E1188(a1);
v4 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*(_DWORD *)(v2 + 8592164864LL) & 0x100) )
break;
if ( (unsigned __int64)(result - v4) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 2123LL);
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D1870) ----------------------------------------------------
__int64 __fastcall sub_1800D1870(__int64 a1, int a2, int a3)
{
unsigned __int64 v3; // x8
_DWORD *v4; // x20
__int64 result; // x0
__int64 v6; // x19
v3 = (unsigned int)((_DWORD)a1 << 18) + (unsigned __int64)(unsigned int)((a2 << 15) + 0x8000) + 8592162816LL;
v4 = (_DWORD *)(v3 | 0x704);
*(_DWORD *)(v3 + 1796) = *(_DWORD *)((unsigned int)((_DWORD)a1 << 18)
+ (unsigned __int64)(unsigned int)((a2 << 15) + 0x8000)
+ 0x200220704LL) & 0xFFFFFE00 | a3 | 0x100;
result = sub_1800E1188(a1);
v6 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*v4 & 0x100) )
break;
if ( (unsigned __int64)(result - v6) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 2154LL);
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D1924) ----------------------------------------------------
__int64 __fastcall sub_1800D1924(__int64 a1, char a2)
{
__int64 v2; // x20
__int64 result; // x0
__int64 v4; // x19
v2 = (unsigned int)((_DWORD)a1 << 18);
*(_DWORD *)(v2 + 0x200220B0CLL) = *(_DWORD *)(v2 + 0x200220B0CLL) & 0xFFFFFF09 | 2 * (a2 & 3) | 16
* MEMORY[0x1801218C4];
result = sub_1800E1188(a1);
v4 = result;
while ( 1 )
{
result = sub_1800E1188(result);
if ( !(*(_DWORD *)(v2 + 8592165644LL) & 6) )
break;
if ( (unsigned __int64)(result - v4) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 2215LL);
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D19D8) ----------------------------------------------------
__int64 __fastcall sub_1800D19D8(__int64 result, char a2, int a3, int a4)
{
char v4; // w20
int v5; // w19
signed int v6; // w22
__int64 v7; // x21
signed __int64 v8; // x8
__int64 v9; // x0
__int64 v10; // x20
__int64 v11; // x19
int v12; // w8
unsigned int v13; // w3
unsigned int v14; // w2
v12 = a4;
if ( (unsigned int)(a3 + 248) > 0x1F0 )
{
*(_DWORD *)(80LL * (unsigned int)result + 0x180120B60LL + 4LL * MEMORY[0x180120B60] + 1492) = 1;
return result;
}
if ( a3 < 0 )
v13 = -a3;
else
v13 = 0;
v14 = a3 & ~(a3 >> 31);
v4 = a2;
v5 = result;
if ( v12 )
v6 = 4;
else
v6 = 2;
if ( v14 > 0xF8 || v13 >= 0xF9 )
{
*(_DWORD *)(80LL * (unsigned int)result + 0x180120B60LL + 4LL * MEMORY[0x180120B60] + 1492) = 1;
result = 0xFFFFFFFFLL;
}
else
{
if ( a2 & 1 )
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200228600LL) = *(_DWORD *)((unsigned int)((_DWORD)result << 18)
+ 0x200228600LL) & 0xFFFF | (v13 << 24) | (v14 << 16) | v6;
if ( a2 & 2 )
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200230600LL) = *(_DWORD *)((unsigned int)((_DWORD)result << 18)
+ 0x200230600LL) & 0xFFFF | (v13 << 24) | (v14 << 16) | v6;
if ( a2 & 1 )
{
result = sub_1800E1188(result);
v7 = result;
do
{
result = sub_1800E1188(result);
if ( !(*(_DWORD *)((unsigned int)(v5 << 18) + 0x200228600LL) & v6) )
goto LABEL_21;
}
while ( (unsigned __int64)(result - v7) <= 0xF423F );
v8 = 4330LL;
LABEL_26:
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, v8);
}
LABEL_21:
if ( v4 & 2 )
{
v9 = sub_1800E1188(result);
v10 = v9;
v11 = (unsigned int)(v5 << 18);
do
{
v9 = sub_1800E1188(v9);
if ( !(*(_DWORD *)(v11 + 8592229888LL) & v6) )
goto LABEL_27;
}
while ( (unsigned __int64)(v9 - v10) <= 0xF423F );
v8 = 4332LL;
goto LABEL_26;
}
LABEL_27:
result = 0LL;
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D1A24) ----------------------------------------------------
signed __int64 __fastcall sub_1800D1A24(char a1, int a2)
{
char v2; // w19
int *v3; // x9
int v4; // w9
unsigned int v5; // w20
char v6; // cf
unsigned int v7; // w11
bool v8; // cf
__int64 v10; // x0
int v11; // w1
unsigned int v12; // w9
unsigned int v13; // w2
int v14; // w20
v2 = a1;
v3 = (int *)(12LL * MEMORY[0x180120B61] + 6443633808LL);
if ( a1 & 2 )
v3 = (int *)(12LL * MEMORY[0x180120B61] + 6443633812LL);
v4 = *v3;
v5 = -a2;
if ( a2 & 0x80000000 )
{
v6 = (a2 + 248 < 0) ^ __OFADD__(a2, 248) ? 0 : 4 * v4 >= v5;
if ( !v6 )
goto LABEL_18;
}
v7 = a2 >= 0 ? a2 : -a2;
if ( v7 > 5 * v4 )
goto LABEL_18;
if ( a2 & 0x80000000 )
{
sub_1800D19D8(MEMORY[0x180120B61], a1, a2, 0);
v10 = MEMORY[0x180120B61];
v11 = *(_DWORD *)(4LL * MEMORY[0x180120B61] + 0x180120BBCLL) + (unsigned __int16)v5;
}
else
{
if ( a2 <= 303 )
v8 = 5 * v4 >= (unsigned int)a2;
else
v8 = 0;
if ( !v8 )
{
LABEL_18:
*(_DWORD *)(80LL * MEMORY[0x180120B61] + 0x180120B60LL + 4LL * MEMORY[0x180120B60] + 1492) = 1;
return 0xFFFFFFFFLL;
}
v12 = 4 * v4;
if ( v12 >= 0xF8 )
v13 = 248;
else
v13 = v12;
if ( v13 >= a2 )
{
sub_1800D19D8(MEMORY[0x180120B61], a1, a2, 0);
}
else
{
v14 = a2 - v13;
sub_1800D19D8(MEMORY[0x180120B61], a1, v13, 0);
sub_1800D1CDC(MEMORY[0x180120B61], v2, v14);
}
v10 = MEMORY[0x180120B61];
v11 = *(_DWORD *)(4LL * MEMORY[0x180120B61] + 0x180120BBCLL);
}
sub_1800D17D0(v10, v11);
return 0LL;
}
//----- (00000001800D1B54) ----------------------------------------------------
__int64 __fastcall sub_1800D1B54(__int64 a1, int a2, int a3)
{
int v3; // w19
int v4; // w20
__int64 v5; // x21
__int64 result; // x0
unsigned int v7; // [xsp+4h] [xbp-2Ch]
__int64 v8; // [xsp+8h] [xbp-28h]
v3 = a3;
v4 = a2;
v5 = a1;
v8 = 5139240511851214385LL;
sub_1800B74E8(0, a1, a2, 14, &v7);
v7 = (unsigned __int8)(v7 & 0x80) | v3;
result = sub_1800B74E8(1, v5, v4, 14, (_BYTE *)v7);
if ( 5139240511851214385LL != v8 )
sub_1800D4A5C();
return result;
}
//----- (00000001800D1BF0) ----------------------------------------------------
__int64 __fastcall sub_1800D1BF0(__int64 result)
{
unsigned __int64 v1; // x8
v1 = (unsigned __int64)MEMORY[0x180120B61] << 18;
*(_DWORD *)(((unsigned __int64)MEMORY[0x180120B61] << 18) + 0x200228600LL) = *(_DWORD *)(((unsigned __int64)MEMORY[0x180120B61] << 18)
+ 0x200228600LL) & 0xFFFFF3FF | ((_DWORD)result << 10) | 4;
while ( *(_DWORD *)(v1 + 8592197120LL) & 4 )
;
*(_DWORD *)(v1 + 8592229888LL) = ((_DWORD)result << 10) | *(_DWORD *)(v1 + 8592229888LL) & 0xFFFFF3FF | 4;
while ( *(_DWORD *)(v1 + 8592229888LL) & 4 )
;
return result;
}
//----- (00000001800D1C50) ----------------------------------------------------
bool __fastcall sub_1800D1C50(int a1, int a2, unsigned int a3)
{
unsigned int v3; // w19
int v4; // w20
unsigned __int8 v5; // w21
int v6; // w22
__int64 v7; // x0
v3 = a3;
v4 = a2;
v5 = 0;
if ( a1 & 2 )
v6 = (a1 << 31 >> 31) & 0x100FF | 0x2FF00;
else
v6 = (a1 << 31 >> 31) & 0x100FF;
do
{
v7 = sub_1800D1A24(3, v4);
if ( (_DWORD)v7 )
break;
if ( v6 & ~(unsigned int)sub_1800D1FD0(v7) )
break;
++v5;
++v4;
}
while ( v5 < v3 );
return v5 == v3;
}
//----- (00000001800D1CDC) ----------------------------------------------------
__int64 __fastcall sub_1800D1CDC(__int64 result, char a2, int a3)
{
__int64 i; // x11
__int64 j; // x11
if ( a2 & 1 )
{
for ( i = 0LL; i != 8; ++i )
{
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200228400LL + 4 * i) = a3 | 0x100;
while ( *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200228400LL + 4 * i) & 0x100 )
;
}
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200228424LL) = a3 | 0x100;
while ( *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200228424LL) & 0x100 )
;
}
if ( a2 & 2 )
{
for ( j = 0LL; j != 8; ++j )
{
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200230400LL + 4 * j) = a3 | 0x100;
while ( *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200230400LL + 4 * j) & 0x100 )
;
}
*(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200230424LL) = a3 | 0x100;
while ( *(_DWORD *)((unsigned int)((_DWORD)result << 18) + 0x200230424LL) & 0x100 )
;
}
return result;
}
//----- (00000001800D1D78) ----------------------------------------------------
bool __fastcall sub_1800D1D78(int a1, int a2, int a3)
{
int v3; // w19
int v4; // w20
unsigned __int8 v5; // w21
int v6; // w22
__int64 v7; // x0
unsigned __int8 v8; // w8
int v9; // w9
v3 = a3;
v4 = a2;
v5 = 0;
if ( a1 & 2 )
v6 = (a1 << 31 >> 31) & 0x100FF | 0x2FF00;
else
v6 = (a1 << 31 >> 31) & 0x100FF;
while ( 1 )
{
v7 = sub_1800D1A24(3, v4);
if ( (_DWORD)v7 || (unsigned int)sub_1800D1FD0(v7) & v6 )
break;
v8 = v5 + 1;
v4 += v3;
v9 = v5++;
if ( v9 )
return v8 == 2;
}
v8 = v5;
return v8 == 2;
}
//----- (00000001800D1E0C) ----------------------------------------------------
__int64 __fastcall sub_1800D1E0C(int a1, int a2, int a3, int a4, __int64 a5)
{
__int64 v5; // x19
int v6; // w20
int v7; // w21
int v8; // w22
int v9; // w23
__int64 result; // x0
int v11; // w23
BOOL v12; // w8
__int64 v13; // x0
__int64 v14; // x8
signed int v15; // w10
int v16; // w11
__int64 v17; // x8
signed int v18; // w9
signed int v19; // w10
char v20[72]; // [xsp+8h] [xbp-D8h]
char v21[72]; // [xsp+50h] [xbp-90h]
__int64 v22; // [xsp+98h] [xbp-48h]
v5 = a5;
v6 = a4;
v7 = a3;
v8 = a2;
v9 = a1;
v22 = 5139240511851214385LL;
sub_1800F0620((signed __int64 *)v21, 0, 0x48uLL);
result = (__int64)sub_1800F0620((signed __int64 *)v20, 0, 0x48uLL);
if ( v9 & 2 )
v11 = (v9 << 31 >> 31) & 0x100FF | 0x2FF00;
else
v11 = (v9 << 31 >> 31) & 0x100FF;
while ( 1 )
{
v8 += v7;
v12 = v8 > v6;
if ( v7 >= 0 )
v12 = v8 < v6;
if ( v12 != 1 )
break;
v13 = sub_1800D1A24(3, v8);
result = sub_1800D1FD0(v13);
v14 = 0LL;
v15 = 1;
while ( v14 != 18 )
{
if ( v15 & v11 )
{
if ( (unsigned int)result & v11 & v15 && !*(_DWORD *)&v20[4 * v14] )
{
v16 = *(_DWORD *)&v21[4 * v14];
if ( v16 == 8 )
{
*(_DWORD *)&v20[4 * v14] = 1;
}
else
{
*(_DWORD *)&v21[4 * v14] = v16 + 1;
if ( !v16 )
*(_WORD *)(v5 + 2 * v14) = v8;
}
}
else
{
*(_DWORD *)&v21[4 * v14] = 0;
}
}
++v14;
v15 *= 2;
}
v17 = 0LL;
v18 = 1;
v19 = 1;
while ( v17 != 72 )
{
if ( v18 & v11 )
v19 &= *(_DWORD *)&v20[v17] & 0xFF;
v18 *= 2;
v17 += 4LL;
}
if ( (_BYTE)v19 )
goto LABEL_26;
}
*(_DWORD *)(80LL * MEMORY[0x180120B61] + 0x180120B60LL + 4LL * MEMORY[0x180120B60] + 1492) = 1;
LABEL_26:
if ( 5139240511851214385LL != v22 )
sub_1800D4A5C();
return result;
}
// 1800D1E0C: using guessed type char var_90[72];
// 1800D1E0C: using guessed type char var_D8[72];
//----- (00000001800D1FD0) ----------------------------------------------------
__int64 __fastcall sub_1800D1FD0(__int64 a1)
{
__int64 v1; // x0
__int64 v2; // x19
*(_DWORD *)(((unsigned __int64)MEMORY[0x180120B61] << 18) + 0x200220E60LL) |= 1u;
v1 = sub_1800E1188(a1);
v2 = v1;
while ( 1 )
{
v1 = sub_1800E1188(v1);
if ( !(*(_DWORD *)(((unsigned __int64)MEMORY[0x180120B61] << 18) + 0x200220E60LL) & 1) )
break;
if ( (unsigned __int64)(v1 - v2) >= 0xF4240 )
sub_1800D489C("%llx:%d", &byte_180101040, -2045261415062956628LL, 4481LL);
}
return *(_DWORD *)(((unsigned __int64)MEMORY[0x180120B61] << 18) + 0x200220E64LL) & 0x3FFFF;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D2088) ----------------------------------------------------
void sub_1800D2088()
{
sub_1800B5688(0x34u, (__int64)sub_1800D2118, 0LL);
MEMORY[0x200000700] = 58654720;
if ( MEMORY[0x200000708] & 0x37F0000 )
sub_1800D2118();
MEMORY[0x200000708] = 58654720;
((void (__fastcall *)(signed __int64))loc_1800B562C)(52LL);
sub_1800B5688(0x25u, (__int64)sub_1800D2180, 0LL);
MEMORY[0x200D10004] = 32770;
MEMORY[0x200D10008] = -32771;
JUMPOUT(&loc_1800B562C);
}
//----- (00000001800D2118) ----------------------------------------------------
void sub_1800D2118()
{
__int64 v0; // x29
__int64 v1; // x30
if ( MEMORY[0x200000708] & 0x27F0000 || MEMORY[0x200000728] != 136 )
sub_1800D489C("%llx:%d", &byte_180101040, 8003646075766609523LL, 71LL, v0, v1);
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D2180) ----------------------------------------------------
void __noreturn sub_1800D2180()
{
sub_1800D489C("%llx:%d", &byte_180101040, 8003646075766609523LL, 75LL);
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D21B8) ----------------------------------------------------
__int64 sub_1800D21B8()
{
return 0LL;
}
//----- (00000001800D21C0) ----------------------------------------------------
__int64 sub_1800D21C0()
{
sub_1800B5E28();
return 0LL;
}
//----- (00000001800D21D8) ----------------------------------------------------
__int64 __fastcall sub_1800D21D8(int a1)
{
if ( a1 )
sub_1800D489C("%llx:%d", &byte_180101040, 7478666112870837320LL, 54LL);
sub_1800C8744(0);
return 0LL;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D2228) ----------------------------------------------------
signed __int64 __fastcall sub_1800D2228(int a1, unsigned int a2, __int64 a3, unsigned int a4)
{
__int64 v4; // x21
unsigned int v5; // w22
int v6; // w19
bool v7; // zf
signed int v8; // w8
unsigned __int64 v9; // x25
unsigned int v10; // w20
unsigned __int64 v11; // x27
int v12; // w24
unsigned __int64 v13; // x8
unsigned __int64 v14; // x28
unsigned __int64 v15; // x26
unsigned int v16; // w23
_DWORD *v17; // x8
signed __int64 v18; // x9
signed __int64 v19; // x10
unsigned int v20; // w0
signed __int64 v22; // x8
unsigned int v23; // [xsp+1Ch] [xbp-64h]
unsigned __int64 v24; // [xsp+20h] [xbp-60h]
v4 = a3;
v5 = a2;
v6 = a1;
if ( a1 == 1 )
v7 = 1;
else
v7 = a1 == 3;
if ( v7 )
{
v8 = 15;
}
else
{
if ( a1 != 11 )
return 0LL;
v8 = 6;
}
v23 = v8;
v9 = 0LL;
v10 = a2;
v11 = a4;
v24 = a4;
while ( v9 < v11 )
{
if ( v6 == 1 )
{
sub_1800D26D8(v9 + v5, *(unsigned __int16 *)(v4 + 2 * v9));
goto LABEL_25;
}
if ( v6 == 11 )
{
v12 = v9 + v5;
if ( (signed int)(v9 + v5) >= 7 )
{
v22 = 2851LL;
goto LABEL_46;
}
v13 = *sub_1800B82D4(*(unsigned __int16 *)(v4 + 2 * v9), 11, 0);
v14 = v13 >> 9;
v15 = v13 >> 27;
if ( v12 == 6 )
{
MEMORY[0x20E030004] = MEMORY[0x20E030004] & 0xCFFFFFFF | 0x10000000;
v16 = MEMORY[0x20E030014] & 0xFFE0FFFF;
MEMORY[0x20E030014] = v16 | ((sub_1800C8690() & 0x1F) << 16) | 0x1000;
v11 = v24;
MEMORY[0x20E030000] = v15 & 0x1F | ((v14 & 0x1FF) << 12) | 0xA0000000;
v17 = (_DWORD *)8824913920LL;
LABEL_22:
if ( v12 == 6 )
v17 = (_DWORD *)8825012224LL;
while ( *v17 & 0x2000000 )
;
goto LABEL_25;
}
v18 = (v13 >> 33) & 0x1FF;
if ( (_DWORD)v18 )
{
if ( v12 != 2 )
{
v22 = 2889LL;
LABEL_46:
sub_1800D489C("%llx:%d", &byte_180101040, 712204454611609663LL, v22);
}
MEMORY[0x20E008010] = v18 | MEMORY[0x20E008010] & 0xFFFFFE00 | 0x800;
goto LABEL_21;
}
if ( v12 == 4 )
{
MEMORY[0x20E010020] &= 0xFF7FFFFF;
MEMORY[0x20E010020] |= (BYTE4(v13) & 1) << 23;
if ( v13 & 0x100000000LL )
{
v19 = 8824881152LL;
LABEL_32:
*(_DWORD *)((v19 & 0xFFFFFFFFFFFF0000LL | 0x20) - 28) |= 0x1000000u;
}
}
else if ( !v12 )
{
MEMORY[0x20E000020] &= 0xFF7FFFFF;
MEMORY[0x20E000020] |= (BYTE4(v13) & 1) << 23;
if ( v13 & 0x100000000LL )
{
v19 = 8824815616LL;
goto LABEL_32;
}
}
LABEL_21:
*(_DWORD *)(((signed __int64)v12 << 14) + 0x20E000000LL) = (((unsigned int)v13 >> 14) & 0x1F0 | v15 & 0xF) & 0xFFE00FFF | ((v14 & 0x1FF) << 12) | 0xA0000000;
v17 = (_DWORD *)(((signed __int64)v12 << 14) + 8824815616LL);
goto LABEL_22;
}
if ( v6 != 3 )
return 0LL;
sub_1800D2538(v9 + v5, *(unsigned __int16 *)(v4 + 2 * v9));
LABEL_25:
++v9;
++v10;
}
while ( v10 <= v23 )
{
if ( v6 == 1 )
{
v20 = sub_1800B8508(2u, 1);
sub_1800D26D8(v10, v20);
}
else
{
if ( v6 != 3 )
return 0LL;
sub_1800D2538(v10, 49);
}
++v10;
}
return 1LL;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D2538) ----------------------------------------------------
__int64 __fastcall sub_1800D2538(int a1, int a2)
{
unsigned int v2; // w22
int v3; // w20
__int64 *v4; // x21
__int64 v5; // x19
unsigned int v6; // w0
char *v7; // x19
int v8; // w8
int v9; // w0
int v10; // w0
int *v11; // x20
int v12; // w21
int v13; // w21
int v14; // w21
__int64 result; // x0
__int64 v16; // [xsp+0h] [xbp-40h]
__int64 v17; // [xsp+8h] [xbp-38h]
v2 = a2;
v3 = a1;
v17 = 5139240511851214385LL;
v4 = sub_1800B82D4(a2, 3, 0);
v16 = 0LL;
v5 = sub_1800C859C();
v6 = sub_1800C85A4();
v7 = sub_1800B8F78(v5, v6, v2);
v8 = 0;
if ( v2 != 49 )
{
v9 = sub_1800C84D4();
HIDWORD(v16) = sub_1800B8CDC(v2, 0, v9);
sub_1800C6D08(1u, 1u, (unsigned int *)&v16 + 1);
v10 = sub_1800C84D4();
LODWORD(v16) = sub_1800B8CDC(v2, 1, v10);
sub_1800C6D08(8u, 1u, (unsigned int *)&v16);
v8 = HIDWORD(v16) << 24;
}
v11 = (int *)((unsigned int)(16 * v3) + 8825274368LL);
*v11 = (*(_DWORD *)v4 >> 5) & 0x1F0 | v8 | (*(_DWORD *)v4 >> 24) & 0xF | (((*(_DWORD *)v4 >> 15) & 0x1FF) << 12) | ((((*(_DWORD *)v4 >> 15) & 0x1FF) != 0) << 21);
v11[1] = (unsigned __int8)v16;
v12 = sub_1800D438C(1u, *(_DWORD *)v7 & 0xFFFFF) & 0x3F;
v13 = v12 & 0xFFFFC0FF | ((sub_1800D438C(1u, (*(_QWORD *)v7 >> 20) & 0xFFFFF) & 0x3F) << 8);
v14 = v13 & 0xFFC0FFFF | ((sub_1800D438C(1u, (*(_QWORD *)v7 >> 40) & 0xFFFFF) & 0x3F) << 16);
result = sub_1800D438C(1u, *((_DWORD *)v7 + 2) & 0xFFFFF);
v11[2] = v14 & 0xC0FFFFFF | ((result & 0x3F) << 24);
if ( 5139240511851214385LL != v17 )
sub_1800D4A5C();
return result;
}
//----- (00000001800D26D8) ----------------------------------------------------
__int64 __fastcall sub_1800D26D8(int a1, unsigned int a2)
{
unsigned int v2; // w20
int v3; // w19
int v4; // w0
int v5; // w0
__int64 result; // x0
unsigned __int64 v7; // x26
__int64 v8; // x25
unsigned __int8 v9; // w22
char v10; // w23
__int64 v11; // x21
unsigned int v12; // w0
__int64 v13; // x20
unsigned __int64 v14; // x10
unsigned __int64 v15; // x11
signed __int64 v16; // x9
unsigned __int64 v17; // x23
signed __int64 v18; // x24
unsigned __int64 v19; // x21
__int64 v20; // x21
__int64 v21; // x21
__int64 v22; // x25
__int64 v23; // x26
__int64 v24; // x27
__int64 *v25; // x9
int v26; // [xsp+0h] [xbp-60h]
unsigned int v27; // [xsp+4h] [xbp-5Ch]
__int64 v28; // [xsp+8h] [xbp-58h]
v2 = a2;
v3 = a1;
v28 = 5139240511851214385LL;
v4 = sub_1800C84D4();
v27 = sub_1800B8CDC(v2, 0, v4);
sub_1800C6D08(0, 1u, &v27);
v5 = sub_1800C84D4();
v26 = sub_1800B8CDC(v2, 1, v5);
sub_1800C6D08(7u, 1u, (unsigned int *)&v26);
result = (__int64)sub_1800B82D4(v2, 1, 0);
if ( result )
{
v7 = *(_QWORD *)result;
v8 = v27;
v9 = v26;
v10 = MEMORY[0x2102DC010];
v11 = sub_1800C859C();
v12 = sub_1800C85A4();
result = (__int64)sub_1800B8F78(v11, v12, v2);
v13 = result;
if ( result )
{
v14 = v7 >> 9;
v15 = v7 >> 10;
v16 = ((v7 >> 31) & 1) << 23;
if ( ((v7 >> 31) & 3) == 2 )
v16 = (v10 & 1u) << 23;
v17 = ((v7 << 20) & 0x700000000000000LL | (((v7 >> 33) & 7) << 60)) & 0xFFFFF0FFFFFFFFFFLL | (((v7 >> 39) & 0xF) << 40);
v18 = (v7 >> 23) & 0x80000000;
v19 = ((((v7 >> 6) & 0x1C000 | (v7 >> 7) & 0xFFF) & 0xFFFFFFFFFFFFFFF0LL | (v7 >> 23) & 0xF | v15 & 0x1E0000) & 0xFFFFFFFFFFDFFFFFLL | ((v15 & 1) << 21)) & 0xFFFFFFFFFFBFFFFFLL | ((v14 & 1) << 22) | (v8 << 56) | v16 | ((sub_1800D438C(0, *(_DWORD *)result & 0xFFFFF) & 0x3F) << 24);
v20 = v19 | ((sub_1800D438C(0, (*(_QWORD *)v13 >> 20) & 0xFFFFF) & 0x3F) << 32);
v21 = v20 | ((sub_1800D438C(0, (*(_QWORD *)v13 >> 40) & 0xFFFFF) & 0x3F) << 40);
v22 = v21 | ((sub_1800D438C(0, *(_DWORD *)(v13 + 8) & 0xFFFFF) & 0x3F) << 48);
LOBYTE(v21) = sub_1800D438C(0, (*(_QWORD *)(v13 + 8) >> 20) & 0xFFFFF);
v23 = sub_1800D438C(0, (*(_QWORD *)(v13 + 8) >> 40) & 0xFFFFF) & 0x3F;
v24 = (sub_1800D438C(0, *(_DWORD *)(v13 + 16) & 0xFFFFF) & 0x3F) << 8;
result = sub_1800D438C(0, (*(_QWORD *)(v13 + 16) >> 20) & 0xFFFFF);
v25 = (__int64 *)((unsigned int)(32 * v3) + 8639741952LL);
*v25 = v22;
v25[1] = ((v17 | v18) & 0xFFFFFF00FFFFFFFFLL | ((unsigned __int64)v9 << 32)) & 0xFFFFFFFF80FFFFFFLL | ((unsigned __int64)(v21 & 0x7F) << 24) | v23 | v24 | ((unsigned __int64)(result & 0x3F) << 16);
}
}
if ( 5139240511851214385LL != v28 )
sub_1800D4A5C();
return result;
}
//----- (00000001800D2938) ----------------------------------------------------
signed __int64 __fastcall sub_1800D2938(int a1, unsigned int a2, _DWORD *a3, _DWORD *a4)
{
_DWORD *v4; // x20
_DWORD *v5; // x19
int v6; // w8
signed __int64 result; // x0
__int64 v8; // x10
unsigned __int64 v9; // x10
__int64 v10; // x1
unsigned int v11; // w0
__int64 v12; // x1
__int64 v13; // x1
signed __int64 v14; // x1
__int64 v15; // x1
v4 = a4;
v5 = a3;
v6 = a1;
result = 0LL;
switch ( v6 )
{
case 1:
case 2:
case 3:
case 4:
if ( a2 <= 0xF )
{
switch ( v6 )
{
case 1:
v8 = *(_QWORD *)(32 * a2 + 0x202F80000LL);
if ( v8 & 0x200000 )
v9 = (unsigned __int64)(((double)((*(_QWORD *)(32 * a2 + 0x202F80000LL) >> 4) & 0xFFLL)
+ (double)((*(_QWORD *)(32 * a2 + 0x202F80000LL) >> 14) & 7LL) / 5.0)
* 24000000.0)
/ (2 * (*(_QWORD *)(32 * a2 + 0x202F80000LL) & 0xFuLL) + 2);
else
LODWORD(v9) = 24000000;
*a4 = v9;
v15 = *(_QWORD *)(32 * a2 + 0x202F80000LL) >> 56;
v11 = 0;
goto LABEL_15;
case 2:
*a4 = 0;
v14 = (*(_QWORD *)(32 * a2 + 0x202F80008LL) >> 32) & 0xFFLL;
v11 = 7;
goto LABEL_15;
case 3:
*a4 = 24000000
* (unsigned __int64)((*(_DWORD *)(16 * a2 + 0x20E070000LL) >> 12) & 0x1FF)
/ ((*(_DWORD *)(16 * a2 + 0x20E070000LL) >> 4) & 0x1Fu)
/ ((*(_DWORD *)(16 * a2 + 0x20E070000LL) & 0xFu) + 1);
v12 = (unsigned int)(*(_DWORD *)(16 * a2 + 0x20E070000LL) >> 24);
v11 = 1;
goto LABEL_15;
case 4:
*a4 = 0;
v13 = *(_DWORD *)(16 * a2 + 0x20E070004LL) & 0xFF;
v11 = 8;
goto LABEL_15;
default:
goto def_1800D29A4;
}
}
goto def_1800D29A4;
case 7:
if ( a2 > 0xD )
goto def_1800D29A4;
*a4 = 0;
v10 = (*(_DWORD *)(16 * a2 + 0x20E068018LL) >> 12) & 0xFF;
v11 = 2;
LABEL_15:
*a3 = sub_1800C6E38(v11);
goto LABEL_16;
case 11:
*a4 = sub_1800D2B24(a2);
*v5 = 0;
if ( *v4 == -1 )
def_1800D29A4:
result = 0LL;
else
LABEL_16:
result = 1LL;
break;
default:
return result;
}
return result;
}
//----- (00000001800D2B24) ----------------------------------------------------
unsigned __int64 __fastcall sub_1800D2B24(signed int a1)
{
unsigned int *v2; // x8
unsigned int v3; // w8
signed __int64 v4; // x9
int v5; // w10
unsigned __int64 v6; // x9
unsigned __int64 v7; // x10
if ( a1 > 6 )
return 0xFFFFFFFFLL;
v2 = (unsigned int *)((a1 << 14) + 8824815616LL);
if ( a1 == 6 )
v2 = (unsigned int *)8825012224LL;
v3 = *v2;
if ( !(v3 & 0x80000000) )
return 0LL;
if ( v3 & 0x8000000 )
return 24000000LL;
v4 = 24000000LL;
if ( a1 == 4 )
{
v5 = MEMORY[0x20E010020];
LABEL_13:
if ( v5 & 0x800000 )
v4 = 48000000LL;
goto LABEL_15;
}
if ( !a1 )
{
v5 = MEMORY[0x20E000020];
goto LABEL_13;
}
LABEL_15:
v6 = v4 * ((v3 >> 12) & 0x1FF);
if ( a1 == 6 )
v7 = 30LL;
else
v7 = (v3 & 0xF) + 1;
return v6 / v7 / ((v3 >> 4) & 0x1F);
}
//----- (00000001800D2BE0) ----------------------------------------------------
signed __int64 __fastcall sub_1800D2BE0(_BYTE *a1)
{
int v1; // w0
signed int v2; // w21
int v3; // w2
signed __int64 result; // x0
signed __int64 v5; // x8
__int64 v6; // [xsp+10h] [xbp-30h]
__int64 v7; // [xsp+18h] [xbp-28h]
v7 = 5139240511851214385LL;
if ( !(sub_1800EBDF4(0LL, a1, &v6) & 1) )
{
v5 = 2123LL;
goto LABEL_12;
}
v1 = sub_1800D9A1C();
v2 = 26214;
if ( !v1 )
goto LABEL_5;
if ( v1 != 1 )
{
v5 = 2133LL;
LABEL_12:
sub_1800D489C("%llx:%d", &byte_180101040, 712204454611609663LL, v5);
}
v2 = 6553;
LABEL_5:
if ( sub_1800E0D14() )
v3 = 26214;
else
v3 = v2;
result = sub_1800EC320(v6, "dvd-factor", v3);
if ( 5139240511851214385LL != v7 )
sub_1800D4A5C();
return result;
}
// 180101040: using guessed type char byte_180101040;
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800D2CC0) ----------------------------------------------------
__int64 sub_1800D2CC0()
{
sub_1800D2CD8();
return 0LL;
}
//----- (00000001800D2CD8) ----------------------------------------------------
__int64 sub_1800D2CD8()
{
__int64 v0; // x19
int v1; // w0
signed __int64 v2; // x8
__int64 v3; // x8
char *v4; // x9
unsigned int v5; // w10
unsigned int v6; // w12
char *v7; // x10
v0 = 0LL;
MEMORY[0x180122660] = 24000000;
MEMORY[0x180122768] = 192000000;
while ( v0 != 7 )
{
v1 = sub_1800D2B24(v0);
v2 = 4 * v0++ + 6443640416LL;
*(_DWORD *)(v2 + 4) = v1;
}
v3 = 0LL;
v4 = (char *)&qword_18010E378[1] + 2;
while ( v3 != 28 )
{
v5 = 0;
v6 = **(_DWORD **)(v4 - 10);
if ( v6 & 0x80000000 && v6 & 0x3F )
{
v7 = &v4[4 * ((v6 >> 24) & 0xF)];
v5 = *(_DWORD *)(4LL * *((unsigned __int16 *)v7 - 1) + 0x180122660LL)
/ (unsigned int)*(unsigned __int16 *)v7
/ (**(_DWORD **)(v4 - 10) & 0x3Fu);
}
*(_DWORD *)(v3 + 6443640652LL) = v5;
v3 += 4LL;
v4 += 56;
}
MEMORY[0x180122680] = (unsigned int)(((double)(((unsigned __int64)MEMORY[0x202F200C8] >> 18) & 0xFF)
+ (double)(((unsigned __int64)MEMORY[0x202F200C8] >> 28) & 7) / 5.0)
* 24000000.0)
/ (2 * (MEMORY[0x202F200C8] & 0x1Fu) + 2);
sub_1800D37E8(67LL, 0x4Du);
return sub_1800D37E8(9LL, 0x3Au);
}
// 18010E378: using guessed type __int64[7];
//----- (00000001800D2DF4) ----------------------------------------------------
__int64 sub_1800D2DF4()
{
__int64 v0; // x11
_DWORD *v1; // x12
signed __int64 v2; // x10
_DWORD *v3; // x11
int v4; // w0
signed int i; // w19
unsigned int v6; // w0
signed int j; // w19
int v8; // w0
unsigned int k; // w19
int v10; // w0
__int64 v11; // x0
__int64 l; // x8
__int64 m; // x19
unsigned int v15; // [xsp+14h] [xbp-2Ch]
__int64 v16; // [xsp+18h] [xbp-28h]
v0 = 0LL;
v16 = 5139240511851214385LL;
MEMORY[0x200800068] = 219;
MEMORY[0x200800070] = 2;
while ( v0 != 18 )
{
v1 = (_DWORD *)qword_18010E9C0[*((_DWORD *)qword_18010ED98 + v0) - 6];
*v1 |= 0xFu;
while ( (*v1 ^ (*v1 >> 4)) & 0xF )
;
++v0;
}
MEMORY[0x20790C080] = 1;
while ( !(MEMORY[0x20790C084] & 1) )
;
MEMORY[0x200800064] = 772;
v2 = 18LL;
while ( v2 )
{
v3 = (_DWORD *)qword_18010E9C0[*((_DWORD *)qword_18010ED98 + (unsigned int)--v2) - 6];
*v3 &= 0xFFFFFFF0;
while ( (*v3 ^ (*v3 >> 4)) & 0xF )
;
}
LODWORD(qword_1801158C8[6579]) = 24000000;
sub_1800D26D8(0, 6u);
sub_1800D3190(1);
sub_1800C86A8();
sub_1800D26D8(1, 7u);
sub_1800D3518(1, 1);
v4 = sub_1800C85A4();
sub_1800B8874(0LL, v4, 0LL);
MEMORY[0x20E0A0004] = 6018;
sub_1800D26D8(0, 6u);
for ( i = 2; i != 16; ++i )
{
v6 = sub_1800B8508(i, 1);
sub_1800D26D8(i, v6);
}
for ( j = 2; j != 14; ++j )
{
v8 = sub_1800B8508(j, 7);
sub_1800D3518(j, v8);
}
sub_1800E204C();
MEMORY[0x202F20020] = 33554434LL;
while ( MEMORY[0x202F20020] >> 31 )
;
for ( k = 0; k != 17; ++k )
{
v10 = sub_1800B8508(k, 3);
sub_1800D2538(k, v10);
}
MEMORY[0x20E014004] |= 0x1000000u;
MEMORY[0x20E014000] &= 0xF7FFFFFF;
while ( MEMORY[0x20E014000] & 0x2000000 )
;
MEMORY[0x20E070200] |= 0x80000000;
MEMORY[0x210200000] = 2147483648;
while ( MEMORY[0x210200000] & 0x2000000 )
;
v11 = sub_1800B83FC(11, &v15);
if ( !(unsigned int)sub_1800D2228(11, 0, v11, v15) )
sub_1800D489C("%llx:%d", &byte_180101040, 712204454611609663LL, 2662LL);
for ( l = 0LL; l != 81920; l += 0x4000LL )
*(_DWORD *)(l + 8825094144LL) |= 0x80000000;
MEMORY[0x20E068000] = 13;
while ( MEMORY[0x20E068000] & 0x80000000 )
;
for ( m = 0LL; m != 68; ++m )
sub_1800D3668((unsigned int *)qword_18010D690[7 * LODWORD(qword_18010E7A0[m])], HIDWORD(qword_18010E7A0[m]));
MEMORY[0x20E080400] &= 0xEFFFFBFF;
while ( ~MEMORY[0x20E080400] & 0xF0 )
;
sub_1800D2CD8();
if ( 5139240511851214385LL != v16 )
sub_1800D4A5C();
return 0LL;
}
// 180101040: using guessed type char byte_180101040;
// 18010D690: using guessed type __int64 qword_18010D690[63];
// 18010E7A0: using guessed type __int64 qword_18010E7A0[68];
// 18010E9C0: using guessed type __int64 qword_18010E9C0[99];
// 18010ED98: using guessed type __int64 qword_18010ED98[13];
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D3190) ----------------------------------------------------
unsigned int *__fastcall sub_1800D3190(int a1)
{
int v1; // w19
unsigned int v2; // w22
__int64 i; // x20
__int64 v4; // x20
unsigned int v5; // w25
signed __int64 v6; // x8
__int64 j; // x8
_DWORD *v8; // x8
signed __int64 v9; // x9
__int64 k; // x8
_DWORD *v11; // x12
__int64 v12; // x8
signed __int64 l; // x9
_DWORD *v14; // x12
unsigned int *result; // x0
__int64 v16; // [xsp+8h] [xbp-68h]
__int64 v17; // [xsp+10h] [xbp-60h]
__int64 v18; // [xsp+18h] [xbp-58h]
__int64 v19; // [xsp+20h] [xbp-50h]
__int64 v20; // [xsp+28h] [xbp-48h]
v1 = a1;
v2 = 0;
v20 = 5139240511851214385LL;
v16 = 0LL;
v17 = 0LL;
MEMORY[0x20E0A0000] |= 0x1F00u;
v18 = -4611685897908026944LL;
v19 = 1823LL;
for ( i = 6LL; (_DWORD)i != 91; i = (unsigned int)(i + 1) )
{
if ( !(i & 0x3F) )
++v2;
if ( *(&v18 + v2) & (1LL << (i & 0x3F)) )
sub_1800D39CC(i, 1);
}
v4 = 90LL;
v5 = 1;
while ( (unsigned int)v4 >= 6 )
{
v6 = 1LL << (v4 & 0x3F);
if ( !(*(&v18 + v5) & v6) )
{
if ( *(&v16 + v5) & v6 )
sub_1800D3AEC(v4);
else
sub_1800D39CC(v4, 0);
}
v5 -= (v4 & 0x3F) == 0;
v4 = (unsigned int)(v4 - 1);
}
MEMORY[0x20E070200] = 0;
MEMORY[0x20E0DC000] = 0;
MEMORY[0x20E040300] = 0;
sub_1800D446C((unsigned int *)0x2B, 0x2Fu, -2146435072);
for ( j = 0LL; j != 5; ++j )
{
*(_DWORD *)((j << 14) + 0x20E044000LL) = 0;
while ( *(_DWORD *)((j << 14) + 0x20E044000LL) & 0x40000000 )
;
}
sub_1800D446C((unsigned int *)9, 0x35u, -2146435072);
sub_1800D446C((unsigned int *)0x36, 0x36u, -2062548992);
sub_1800D446C((unsigned int *)0x37, 0x3Au, -2146435072);
MEMORY[0x20E068100] = *(_DWORD *)(((MEMORY[0x20E068000] >> 4) & 0xF0) + 0x20E068010LL) & 0xC0 | *(_DWORD *)(((MEMORY[0x20E068000] >> 4) & 0xF0) + 0x20E068010LL) & 0x3F;
MEMORY[0x20E068104] = 0;
MEMORY[0x20E068108] = 0;
MEMORY[0x20E06810C] = 0;
MEMORY[0x20E068000] = 15;
while ( MEMORY[0x20E068000] & 0x80000000 )
;
if ( v1 )
{
v8 = (_DWORD *)8825241660LL;
v9 = 2LL;
while ( 1 )
{
if ( v9 != 15 )
{
if ( v9 == 16 )
break;
*(v8 - 3) = 0;
*(v8 - 2) = 0;
*(v8 - 1) = 0;
*v8 = 0;
}
++v9;
v8 += 4;
}
}
for ( k = 0LL; ; ++k )
{
if ( k == 4 )
continue;
if ( k == 7 )
break;
v11 = (_DWORD *)((k << 14) + 8824815616LL);
if ( k == 6 )
v11 = (_DWORD *)8825012224LL;
if ( k == 6 )
*v11 = 512029;
else
*v11 = -2013261808;
while ( *v11 & 0x2000000 )
;
}
v12 = 0LL;
for ( l = 8824815620LL; ; l += 0x4000LL )
{
if ( v12 == 4 )
goto LABEL_43;
if ( v12 == 7 )
break;
if ( v12 == 6 )
v14 = (_DWORD *)8825012228LL;
else
v14 = (_DWORD *)l;
*v14 = -2142764216;
LABEL_43:
++v12;
}
sub_1800D446C((unsigned int *)0x3B, 0x41u, -2147483647);
MEMORY[0x202F20020] = 0x2000000LL;
while ( MEMORY[0x202F20020] >> 31 )
;
MEMORY[0x210240300] = 0;
result = sub_1800D446C((unsigned int *)0x43, 0x4Du, -2146435072);
MEMORY[0x210200000] = -2013265920;
MEMORY[0x210200004] = 31;
while ( MEMORY[0x210200000] & 0x2000000 )
;
MEMORY[0x2102DC000] = 0;
if ( 5139240511851214385LL != v20 )
sub_1800D4A5C();
return result;
}
//----- (00000001800D3518) ----------------------------------------------------
__int64 __fastcall sub_1800D3518(int a1, int a2)
{
unsigned int v2; // w19
int v3; // w20
__int64 *v4; // x21
int v5; // w0
_DWORD *v6; // x22
__int64 v7; // x20
unsigned int v8; // w0
char *v9; // x19
__int64 result; // x0
int v11; // [xsp+4h] [xbp-2Ch]
__int64 v12; // [xsp+8h] [xbp-28h]
v2 = a2;
v3 = a1;
v12 = 5139240511851214385LL;
v4 = sub_1800B82D4(a2, 7, 0);
v5 = sub_1800C84D4();
v11 = sub_1800B8CDC(v2, 0, v5);
sub_1800C6D08(2u, 1u, (unsigned int *)&v11);
v6 = (_DWORD *)((unsigned int)(16 * (16 - v3) - 16) + 8825241616LL);
*v6 = *((_DWORD *)v4 + 4);
v6[1] = *((_DWORD *)v4 + 3);
v6[2] = ((unsigned __int8)v11 << 12) | *((_DWORD *)v4 + 2);
v7 = sub_1800C859C();
v8 = sub_1800C85A4();
v9 = sub_1800B8F78(v7, v8, v2);
LODWORD(v7) = sub_1800D438C(2u, *(_DWORD *)v9 & 0xFFFFF) & 0x3F;
LODWORD(v7) = v7 & 0xFFFFC0FF | ((sub_1800D438C(2u, (*(_QWORD *)v9 >> 20) & 0xFFFFF) & 0x3F) << 8);
LODWORD(v7) = v7 & 0xFFC0FFFF | ((sub_1800D438C(2u, (*(_QWORD *)v9 >> 40) & 0xFFFFF) & 0x3F) << 16);
result = sub_1800D438C(2u, *((_DWORD *)v9 + 2) & 0xFFFFF);
v6[3] = v7 & 0xC0FFFFFF | ((result & 0x3F) << 24);
if ( 5139240511851214385LL != v12 )
sub_1800D4A5C();
return result;
}
//----- (00000001800D3668) ----------------------------------------------------
unsigned int *__fastcall sub_1800D3668(unsigned int *result, int a2)
{
*result = a2 & 0xFF0FFFFF | (((*result >> 20) & 0xF) << 20);
while ( *result & 0x40000000 )
;
return result;
}
//----- (00000001800D3684) ----------------------------------------------------
unsigned int *sub_1800D3684()
{
return sub_1800D3190(0);
}
//----- (00000001800D368C) ----------------------------------------------------
// write access to const memory has been detected, the output may be wrong!
signed __int64 __fastcall sub_1800D368C(int a1)
{
signed int v1; // w12
if ( (MEMORY[0x202F20050] & 0xF0) != 32LL )
{
MEMORY[0x202F20020] = 33554434LL;
while ( MEMORY[0x202F20020] >> 31 )
;
}
MEMORY[0x20E0A0000] &= 0xFFFFFEFF;
switch ( a1 )
{
case 3:
MEMORY[0x20E068000] = 12;
while ( MEMORY[0x20E068000] & 0x80000000 )
;
dword_180114C88 = 3;
break;
case 4:
case 6:
if ( a1 == 4 )
v1 = 55;
else
v1 = 21;
MEMORY[0x20E0680E0] = MEMORY[0x20E0680E0] & 0xFFFFFFC0 | v1;
MEMORY[0x20E068000] = 13;
while ( MEMORY[0x20E068000] & 0x80000000 )
;
dword_180114C88 = a1;
break;
case 7:
MEMORY[0x20E0680E0] = MEMORY[0x20E0680E0] & 0xFFFFF03F | 0xC0;
MEMORY[0x20E068000] = 13;
while ( MEMORY[0x20E068000] & 0x80000000 )
;
break;
case 8:
MEMORY[0x20E0680E0] = MEMORY[0x20E0680E0] & 0xFFFFF03F | 0x840;
MEMORY[0x20E068000] = 13;
while ( MEMORY[0x20E068000] & 0x80000000 )
;
break;
default:
break;
}
MEMORY[0x20E0A0000] |= 0x100u;
sub_1800D37E8(10LL, 0xAu);
return 6LL;
}
// 1800D3740: write access to const memory at 180114C88 has been detected
// 1800D375C: write access to const memory at 180114C88 has been detected
// 180114C88: using guessed type int dword_180114C88;
//----- (00000001800D37E8) ----------------------------------------------------
__int64 __fastcall sub_1800D37E8(__int64 result, unsigned int a2)
{
unsigned int v2; // w12
unsigned int v3; // w12
char *v4; // x12
if ( (unsigned int)result >= 9 && a2 < 0x3B || (unsigned int)result >= 0x43 && a2 <= 0x4D )
{
while ( (unsigned int)result <= a2 )
{
v2 = *(_DWORD *)qword_18010D690[7 * (unsigned int)result];
if ( v2 & 0x80000000 )
{
v4 = (char *)&qword_18010D690[7 * (unsigned int)result] + 4 * ((v2 >> 24) & 0xF);
v3 = *(_DWORD *)(4LL * *((unsigned __int16 *)v4 + 4) + 0x180122660LL)
/ (unsigned int)*((unsigned __int16 *)v4 + 5);
}
else
{
v3 = 0;
}
*(_DWORD *)(4LL * (unsigned int)result + 0x180122660LL) = v3;
result = (unsigned int)(result + 1);
}
}
return result;
}
// 18010D690: using guessed type __int64 qword_18010D690[63];
//----- (00000001800D386C) ----------------------------------------------------
_QWORD *__fastcall sub_1800D386C(_QWORD *a1, unsigned int a2)
{
unsigned __int64 v2; // x2
if ( a2 >= 0x4E )
v2 = 312LL;
else
v2 = 4LL * a2;
return sub_1800F03F0(a1, (_QWORD *)0x180122660LL, v2);
}
//----- (00000001800D389C) ----------------------------------------------------
__int64 __fastcall sub_1800D389C(int a1)
{
switch ( a1 )
{
case 0:
return MEMORY[0x180122680];
case 1:
return MEMORY[0x1801226BC];
case 2:
return MEMORY[0x180122688];
case 3:
return MEMORY[0x180122708];
case 4:
case 5:
return MEMORY[0x180122660];
case 6:
return MEMORY[0x18012276C];
default:
if ( (unsigned int)(a1 - 43) < 3 )
return MEMORY[0x1801226BC];
switch ( a1 )
{
case 78:
return MEMORY[0x180122690];
case 108:
return MEMORY[0x1801226BC];
case 109:
return MEMORY[0x1801226EC];
case 112:
return MEMORY[0x180122660];
}
return 0LL;
}
}
//----- (00000001800D3988) ----------------------------------------------------
__int64 __fastcall sub_1800D3988(__int64 result)
{
__int64 v1; // x29
__int64 v2; // x30
if ( (_DWORD)result == 78 )
sub_1800D489C("%llx:%d", &byte_180101040, 712204454611609663LL, 3566LL, v1, v2);
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D39CC) ----------------------------------------------------
__int64 __fastcall sub_1800D39CC(__int64 result, int a2)
{
int v2; // w19
unsigned int *v3; // x20
unsigned int v4; // w8
unsigned int v5; // w8
v2 = a2;
if ( (unsigned int)(result - 6) <= 0x54 )
{
v3 = (unsigned int *)qword_18010E9C0[(signed int)result - 6];
if ( (_DWORD)result == 77 && !((a2 ^ 1) & 1) && !(*v3 & 0xF) )
{
MEMORY[0x20E0802B8] |= 0xFu;
while ( (MEMORY[0x20E0802B8] ^ (MEMORY[0x20E0802B8] >> 4)) & 0xF )
;
MEMORY[0x20E0802B8] |= 0x400u;
v3 = (unsigned int *)8825340592LL;
MEMORY[0x20E0802B0] |= 0x400u;
MEMORY[0x20E0802B0] |= 0x80000000;
MEMORY[0x20E0802B8] |= 0x80000000;
result = sub_1800D5F60(1LL);
MEMORY[0x20E0802B8] &= 0x7FFFFFFFu;
MEMORY[0x20E0802B0] &= 0x7FFFFFFFu;
MEMORY[0x20E0802B8] &= 0xFFFFFBFF;
MEMORY[0x20E0802B0] &= 0xFFFFFBFF;
}
v4 = *v3;
if ( v2 )
v5 = v4 | 0xF;
else
v5 = v4 & 0xFFFFFFF0;
*v3 = v5;
while ( (*v3 ^ (*v3 >> 4)) & 0xF )
;
}
return result;
}
// 18010E9C0: using guessed type __int64 qword_18010E9C0[99];
//----- (00000001800D3AEC) ----------------------------------------------------
__int64 __fastcall sub_1800D3AEC(__int64 result)
{
unsigned int *v1; // x8
if ( (unsigned int)(result - 6) <= 0x54 )
{
v1 = (unsigned int *)qword_18010E9C0[(signed int)result - 6];
*v1 = *v1 & 0xFFFFFFF0 | 4;
while ( (*v1 ^ (*v1 >> 4)) & 0xF )
;
}
return result;
}
// 18010E9C0: using guessed type __int64 qword_18010E9C0[99];
//----- (00000001800D3B2C) ----------------------------------------------------
void __fastcall sub_1800D3B2C(char a1)
{
if ( !(a1 & 1) )
sub_1800B1EDC(0);
sub_1800B57D0();
while ( 1 )
;
}
//----- (00000001800D3B48) ----------------------------------------------------
__int64 sub_1800D3B48()
{
__int64 result; // x0
__int64 v1; // x8
__int64 v2; // x9
__int64 v3; // x11
MEMORY[0x20E0BC014] = sub_1800C86B0(0);
MEMORY[0x20E0BC114] = sub_1800C86B0(1);
result = sub_1800C86B0(2);
v1 = 0uLL;
v2 = 0LL;
MEMORY[0x20E0BC214] = result;
while ( v1 != 24 )
{
v3 = qword_18010ECD8[v1 + 1];
if ( (unsigned __int64)(v2 - 3) > 3 )
*(_DWORD *)qword_18010ECD8[v1] = v3;
else
*(_QWORD *)qword_18010ECD8[v1] = v3;
++v2;
v1 += 3LL;
}
return result;
}
// 18010ECD8: using guessed type __int64 qword_18010ECD8[];
//----- (00000001800D3BDC) ----------------------------------------------------
__int64 __fastcall sub_1800D3BDC(__int64 result)
{
_DWORD *v1; // x19
if ( (unsigned int)(result - 6) <= 0x54 )
{
v1 = (_DWORD *)qword_18010E9C0[(signed int)result - 6];
*v1 |= 0x80000000;
result = sub_1800D5F60(1LL);
*v1 &= 0x7FFFFFFFu;
}
return result;
}
// 18010E9C0: using guessed type __int64 qword_18010E9C0[99];
//----- (00000001800D3C2C) ----------------------------------------------------
__int64 __fastcall sub_1800D3C2C(__int64 result, int a2)
{
unsigned int *v2; // x8
unsigned int v3; // w9
unsigned int v4; // w9
if ( (unsigned int)(result - 6) <= 0x54 && (_DWORD)result == 88 )
{
v2 = (unsigned int *)qword_18010E9C0[(signed int)result - 6];
v3 = *v2;
if ( a2 )
v4 = v3 | 0x80000000;
else
v4 = v3 & 0x7FFFFFFF;
*v2 = v4;
}
return result;
}
// 18010E9C0: using guessed type __int64 qword_18010E9C0[99];
//----- (00000001800D3D1C) ----------------------------------------------------
__int64 sub_1800D3D1C()
{
int v0; // w0
__int64 v1; // x22
signed __int64 v2; // x23
signed __int64 v3; // x1
unsigned __int64 v4; // x1
__int64 v5; // x2
unsigned int v6; // t1
unsigned int *v7; // x19
v0 = sub_1800C85A4();
sub_1800B8874((signed __int64)sub_1800D4030, v0, 0LL);
sub_1800BA5EC((signed __int64 *)7, 0x202F200C0uLL, MEMORY[0x202F200C0] & 0x80000LL, 1);
v1 = 0LL;
v2 = 8824815616LL;
while ( v1 != 7 )
{
if ( v1 == 6 )
{
sub_1800BA5EC((signed __int64 *)7, 0x20E030010uLL, MEMORY[0x20E030010], 0);
sub_1800BA5EC((signed __int64 *)7, 0x20E030014uLL, MEMORY[0x20E030014], 0);
v3 = 8825012240LL;
LABEL_4:
v6 = *(_DWORD *)(v3 + 28);
v4 = v3 + 28;
v5 = v6;
LABEL_5:
sub_1800BA5EC((signed __int64 *)7, v4, v5, 0);
}
else
{
switch ( (_DWORD)v1 )
{
case 0:
sub_1800BA5EC((signed __int64 *)7, 0x20E000004uLL, MEMORY[0x20E000004], 0);
v3 = 8824815620LL;
goto LABEL_4;
case 2:
if ( !(MEMORY[0x20E008010] & 0x1FF) )
break;
v5 = MEMORY[0x20E008010];
v4 = 8824848400LL;
goto LABEL_5;
case 4:
sub_1800BA5EC((signed __int64 *)7, 0x20E010004uLL, MEMORY[0x20E010004], 0);
v3 = 8824881156LL;
goto LABEL_4;
case 5:
v4 = 8824897540LL;
v5 = MEMORY[0x20E014004];
goto LABEL_5;
default:
break;
}
}
if ( v1 == 6 )
v7 = (unsigned int *)8825012224LL;
else
v7 = (unsigned int *)v2;
sub_1800BA5EC((signed __int64 *)7, (unsigned __int64)v7, *v7, 0);
sub_1800BAB44((signed __int64 *)7, 0x32u);
sub_1800BA890((signed __int64 *)7, (unsigned __int64)v7, 0LL, 0x2000000LL, 255, 0);
if ( v1 == 6 )
sub_1800BA5EC((signed __int64 *)7, 0x20E0E4000uLL, MEMORY[0x20E0E4000], 0);
++v1;
v2 += 0x4000LL;
}
sub_1800BA5EC((signed __int64 *)7, 0x20E068010uLL, MEMORY[0x20E0680E0] & 0xFFFFFFCF | 0x10, 0);
sub_1800BA5EC((signed __int64 *)7, 0x20E068014uLL, MEMORY[0x20E0680E4], 0);
sub_1800BA5EC((signed __int64 *)7, 0x20E068018uLL, MEMORY[0x20E0680E8], 0);
sub_1800BA5EC((signed __int64 *)7, 0x20E06801CuLL, MEMORY[0x20E0680EC], 0);
sub_1800BA5EC((signed __int64 *)7, 0x20E068000uLL, 0LL, 0);
sub_1800BAB44((signed __int64 *)7, 0xBB8u);
return sub_1800BA890((signed __int64 *)7, 0x20E068000uLL, 0LL, -2147483648LL, 255, 0);
}
// 1800D4030: using guessed type __int64 __fastcall sub_1800D4030();
//----- (00000001800D438C) ----------------------------------------------------
__int64 __fastcall sub_1800D438C(unsigned int a1, unsigned int a2)
{
unsigned int v2; // w19
unsigned int v3; // w20
int v4; // w22
int v5; // w24
unsigned int v6; // w21
int v7; // w0
unsigned int v8; // w8
bool v9; // cf
unsigned int v10; // w8
v2 = a2;
v3 = a1;
if ( (signed int)sub_1800C6E38(a1) < 1 )
return 0LL;
v4 = sub_1800C6E38(v3);
v5 = 0;
v6 = 0;
while ( 1 )
{
if ( v6 > 0xFE )
sub_1800D489C("%llx:%d", &byte_180101040, 712204454611609663LL, 2483LL);
v7 = sub_1800C6E38(v3);
v8 = 1000 * (v7 - v4);
v9 = v8 >= v2;
v10 = v8 - v2;
if ( v9 )
break;
++v6;
v5 = v7;
}
return v6 - (v2 - 1000 * (v5 - v4) < v10);
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D446C) ----------------------------------------------------
unsigned int *__fastcall sub_1800D446C(unsigned int *result, unsigned int a2, int a3)
{
int v3; // w19
unsigned int v4; // w20
unsigned int i; // w21
v3 = a3;
v4 = a2;
for ( i = (unsigned int)result; i <= v4; ++i )
result = sub_1800D3668((unsigned int *)qword_18010D690[7 * i], v3);
return result;
}
// 18010D690: using guessed type __int64 qword_18010D690[63];
//----- (00000001800D44CC) ----------------------------------------------------
__int64 __fastcall sub_1800D44CC(__int64 result, unsigned int a2)
{
unsigned __int64 v2; // x20
unsigned __int64 v3; // x21
unsigned __int64 *v4; // x22
unsigned int *v5; // x19
bool v6; // cf
bool v7; // zf
v2 = (unsigned int)result;
v3 = a2;
v4 = (unsigned __int64 *)&qword_18010D690[7 * (unsigned int)result];
while ( v2 < v3 )
{
v5 = (unsigned int *)*v4;
if ( *v4 )
{
v6 = (unsigned __int64)v5 >= 0x2101FFFFFLL;
v7 = v5 == (unsigned int *)8860467199LL;
}
else
{
v6 = 1;
v7 = 0;
}
if ( v7 || !v6 )
{
sub_1800BA5EC((signed __int64 *)7, *v4, *v5, 0);
result = sub_1800BA890((signed __int64 *)7, (unsigned __int64)v5, 0LL, 0x40000000LL, 255, 0);
}
++v2;
v4 += 7;
}
return result;
}
// 18010D690: using guessed type __int64 qword_18010D690[63];
//----- (00000001800D456C) ----------------------------------------------------
void __usercall __noreturn sub_1800D456C(void *a1@<X0>, void *a2@<X1>, void *a3@<X2>, void *a4@<X3>, void *a5@<X4>, void *a6@<X5>, void *a7@<X6>, signed __int64 a8@<X8>)
{
signed __int64 v8; // x0
v8 = linux_eabi_syscall(a8, a1, a2, a3, a4, a5, a6, a7);
if ( !MEMORY[0x1801280CC] )
{
MEMORY[0x1801280CC] = 1;
MEMORY[0x180116018] = 1;
if ( !BYTE1(qword_1801158C8[9472]) )
{
BYTE1(qword_1801158C8[9472]) = 1;
BYTE2(qword_1801158C8[9472]) = 1;
sub_1800D528C();
}
}
sub_1800D489C("%llx:%d", &byte_180101040, -2291811536998215838LL, 29LL);
}
// 1800D4898: using guessed type __int64 __fastcall nullsub_12(_QWORD);
// 1800F68C4: using guessed type __int64 nullsub_17(void);
// 180101040: using guessed type char byte_180101040;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D46BC) ----------------------------------------------------
__int64 sub_1800D46BC()
{
__int64 result; // x0
unsigned __int8 v1; // [xsp+7h] [xbp-19h]
__int64 v2; // [xsp+8h] [xbp-18h]
v2 = 5139240511851214385LL;
sub_1800D5D18((_BYTE *)0x1801227A8LL);
sub_1800EACD4(MEMORY[0x1801227A0], &v1);
result = v1;
if ( 5139240511851214385LL != v2 )
sub_1800D4A5C();
return result;
}
//----- (00000001800D4728) ----------------------------------------------------
signed __int64 sub_1800D4728()
{
signed __int64 result; // x0
unsigned __int8 v1; // [xsp+7h] [xbp-9h]
__int64 v2; // [xsp+8h] [xbp-8h]
v2 = 5139240511851214385LL;
if ( sub_1800EACD4(MEMORY[0x1801227A0], &v1) < 1 )
result = 1LL;
else
result = v1;
if ( 5139240511851214385LL != v2 )
sub_1800D4A5C();
return result;
}
//----- (00000001800D4788) ----------------------------------------------------
signed __int64 __fastcall sub_1800D4788(char a1)
{
return sub_1800EAC4C(MEMORY[0x1801227A0], a1);
}
//----- (00000001800D47DC) ----------------------------------------------------
__int64 __fastcall sub_1800D47DC(__int64 result)
{
MEMORY[0x180116000] |= result;
return result;
}
//----- (00000001800D47F0) ----------------------------------------------------
__int64 __fastcall sub_1800D47F0(int a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
int v8; // w19
__int64 result; // x0
v8 = a1;
result = sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, -391796804217411975LL);
MEMORY[0x180116000] &= ~v8;
return result;
}
//----- (00000001800D4848) ----------------------------------------------------
__int64 __fastcall sub_1800D4848(__int64 a1)
{
__int64 v1; // x19
v1 = a1;
sub_1800E95B4(a1);
if ( MEMORY[0x180116000] & 1 )
{
if ( (_DWORD)v1 == 10 )
sub_1800E5258(0, 13);
sub_1800E5258(0, v1);
}
return v1;
}
//----- (00000001800D489C) ----------------------------------------------------
void __usercall __noreturn sub_1800D489C(const char *a1@<X1>, _BYTE *a2@<X0>, __int64 a3, ...)
{
const char *v3; // x20
_BYTE *v4; // x19
unsigned int v5; // w9
__int64 v6; // x0
v3 = a1;
v4 = a2;
v5 = LODWORD(qword_1801158C8[6625]) + 1;
LODWORD(qword_1801158C8[6625]) = v5;
if ( v5 >= 3 )
sub_1800B0604();
sub_1800F612C();
sub_1800D52D8();
if ( !qword_1801158C8[232] )
{
sub_1800E1188(v6);
qword_1801158C8[233] = (__int64)v4;
qword_1801158C8[232] = 6443640788LL;
sub_1800EFD00((char *)0x1801227D4LL, 0x400uLL, 0LL, 0x400uLL, (__int64)v3, &a3);
sub_1800D9E6C(9, 0LL, 0LL);
sub_1800EFD4C("\npanic: ");
sub_1800EFD4C(v4);
sub_1800EFD4C(": ");
sub_1800EFD4C((_BYTE *)0x1801227D4LL);
sub_1800EFD4C("\n\n");
sub_1800D9E6C(9, 0LL, 0LL);
sub_1800D3B2C(1);
}
MEMORY[0x1801227D4] = *(_QWORD *)"double panic in ";
MEMORY[0x1801227E4] = 0;
MEMORY[0x1801227DC] = *(_QWORD *)"anic in ";
qword_1801158C8[233] = (__int64)v4;
sub_1800EFDE4(6443640788LL, (__int64)v4, 0x400uLL, 0x400uLL);
sub_1800D9E6C(9, 0LL, 0LL);
sub_1800EFD4C("\n\n");
sub_1800EFD4C((_BYTE *)0x1801227D4LL);
sub_1800EFD4C("\n\n");
sub_1800B0604();
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D49F4) ----------------------------------------------------
// write access to const memory has been detected, the output may be wrong!
__int64 sub_1800D49F4()
{
__int64 result; // x0
signed __int64 v1; // x8
result = sub_1800F5684((_QWORD *)0x1801227C0LL, 8uLL);
if ( (_DWORD)result )
{
v1 = 5139240511851214385LL;
qword_1801158C8[6623] = 5139240511851214385LL;
}
else
{
MEMORY[0x1801227C1] = 0;
v1 = MEMORY[0x1801227C0];
}
qword_180114C90 = v1;
return result;
}
// 1800D4A4C: write access to const memory at 180114C90 has been detected
// 180114C90: using guessed type __int64 qword_180114C90;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D4A5C) ----------------------------------------------------
void __noreturn sub_1800D4A5C()
{
sub_1800D489C("%llx:%d", &byte_180101040, 218577048921417703LL, 274LL);
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D4B0C) ----------------------------------------------------
void __fastcall __noreturn sub_1800D4B0C(__int64 a1, __int64 a2, __int64 a3, unsigned __int64 a4)
{
__int64 v4; // x29
__int64 v5; // x30
if ( a4 > 0x2F )
JUMPOUT(&loc_1800D4A94);
sub_1800D489C("%llx:%d", &byte_180101040, -8047881600196886088LL, 27LL, v4, v5);
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D4B50) ----------------------------------------------------
signed __int64 sub_1800D4B50()
{
signed __int64 result; // x0
sub_1800F5240(6444236800LL, 0x4C000uLL);
sub_1800EE724((_QWORD *)0x1801B4000LL, 0x4C000uLL, 1);
sub_1800D4C18(0);
sub_1800B3A80();
result = sub_1800EAB94(0x1000uLL, 6443640744LL);
MEMORY[0x1801227A0] = result;
return result;
}
//----- (00000001800D4BA0) ----------------------------------------------------
_DWORD *sub_1800D4BA0()
{
__int64 v0; // x0
_DWORD *result; // x0
__int64 v2[2]; // [xsp+8h] [xbp-18h]
__int64 v3; // [xsp+18h] [xbp-8h]
v3 = 5139240511851214385LL;
sub_1800F5440();
sub_1800F5684(v2, 0x10uLL);
sub_1800EE984(v2);
sub_1800EE938();
result = sub_1800D534C(v0);
if ( 5139240511851214385LL != v3 )
sub_1800D4A5C();
return result;
}
// 180114C90: using guessed type __int64 qword_180114C90;
//----- (00000001800D4C18) ----------------------------------------------------
__int64 __fastcall sub_1800D4C18(int a1)
{
int v1; // w19
v1 = a1;
MEMORY[0x180122BE4] = 539754496;
if ( (unsigned int)sub_1800F6860() )
MEMORY[0x180122BE4] |= 0x10000000u;
if ( !(sub_1800F6854() & 1) )
MEMORY[0x180122BE4] |= 0x100020u;
if ( (unsigned int)sub_1800C67A8() )
MEMORY[0x180122BE4] |= 0x8000000u;
MEMORY[0x180122BE8] = -1LL;
MEMORY[0x180122BF0] = 0LL;
if ( v1 )
{
sub_1800D4CE0((_QWORD *)0x800000000LL, 0x20000000uLL);
if ( !(qword_1801158C8[6755] & 1) )
sub_1800D4CE0((_QWORD *)0x820000000LL, 0x28000000uLL);
LOBYTE(qword_1801158C8[6755]) = 1;
}
sub_1800D4D34(0x800000000uLL, 0x20000000LL, 0);
sub_1800F4DC0();
sub_1800EB418();
return 0LL;
}
// 1800F6854: using guessed type __int64 sub_1800F6854(void);
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D4CE0) ----------------------------------------------------
_QWORD *__fastcall sub_1800D4CE0(_QWORD *a1, unsigned __int64 a2)
{
unsigned __int64 v2; // x19
_QWORD *v3; // x20
unsigned __int64 v4; // x21
_QWORD *result; // x0
v2 = a2;
v3 = a1;
do
{
nullsub_17();
if ( v2 >> 28 )
v4 = 0x10000000LL;
else
v4 = v2;
result = sub_1800F05A0(v3, v4);
v3 = (_QWORD *)((char *)v3 + v4);
v2 -= v4;
}
while ( v2 );
return result;
}
// 1800F68C4: using guessed type __int64 nullsub_17(void);
//----- (00000001800D4D34) ----------------------------------------------------
unsigned __int64 __fastcall sub_1800D4D34(unsigned __int64 result, __int64 a2, int a3)
{
if ( !(MEMORY[0x180122BE6] & 1) )
{
if ( a3 )
{
MEMORY[0x180122BE8] = -1LL;
MEMORY[0x180122BF0] = 0LL;
}
else if ( result + a2 > result )
{
if ( result < MEMORY[0x180122BE8] )
MEMORY[0x180122BE8] = result;
if ( MEMORY[0x180122BF0] < result + a2 )
MEMORY[0x180122BF0] = result + a2;
}
}
return result;
}
//----- (00000001800D4D84) ----------------------------------------------------
bool __fastcall sub_1800D4D84(int a1)
{
int v1; // w10
_BOOL8 v2; // x8
v1 = MEMORY[0x180122BE4];
v2 = (MEMORY[0x180122BE4] & a1) == a1;
if ( a1 & 0x10 && (MEMORY[0x180122BE4] & a1) == a1 )
{
MEMORY[0x180122BE4] = MEMORY[0x180122BE4] & 0xDFF3FFDF | 0x20;
v2 = ((~v1 | 0x200C0000) & a1 & 0xFFFFFFDF) == 0;
}
return v2;
}
//----- (00000001800D4DD8) ----------------------------------------------------
void sub_1800D4DD8()
{
MEMORY[0x180122BE4] = MEMORY[0x180122BE4] & 0xDFF3FFDF | 0x20;
}
//----- (00000001800D4DFC) ----------------------------------------------------
signed __int64 __fastcall sub_1800D4DFC(unsigned __int64 a1, __int64 a2)
{
if ( MEMORY[0x180122BE6] & 1 )
return 1LL;
if ( a1 + a2 <= a1 )
return 0LL;
return (MEMORY[0x180122BE8] <= a1) & (unsigned __int8)(a1 + a2 <= MEMORY[0x180122BF0]);
}
//----- (00000001800D4E44) ----------------------------------------------------
bool sub_1800D4E44()
{
JUMPOUT(MEMORY[0x180122BE4] & 0x20, 0, &locret_1800D4E68);
return sub_1800D4E54();
}
//----- (00000001800D4E54) ----------------------------------------------------
bool sub_1800D4E54()
{
return sub_1800D4D84(16);
}
//----- (00000001800D4E6C) ----------------------------------------------------
__int64 __fastcall sub_1800D4E6C(__int64 result)
{
unsigned int v1; // w9
v1 = MEMORY[0x180122BE4] | 0x1000000;
if ( !(_DWORD)result )
v1 = MEMORY[0x180122BE4] & 0xFEFFFFFF;
MEMORY[0x180122BE4] = v1;
return result;
}
//----- (00000001800D4E90) ----------------------------------------------------
__int64 __fastcall sub_1800D4E90(int a1)
{
return (unsigned int)sub_1800F6854() & (a1 ^ 1);
}
// 1800F6854: using guessed type __int64 sub_1800F6854(void);
//----- (00000001800D4EB8) ----------------------------------------------------
_QWORD *__fastcall sub_1800D4EB8(_QWORD *result)
{
int v1; // w10
unsigned int v2; // w11
v1 = MEMORY[0x180122BE4];
v2 = MEMORY[0x180122BE4] & 0xFBFFFFFF;
MEMORY[0x180122BE4] &= 0xFBFFFFFF;
if ( result )
{
MEMORY[0x180122BE4] = v1 | 0x4000000;
result = sub_1800F03F0((_QWORD *)0x180122C08LL, result, 0x30uLL);
}
else
{
MEMORY[0x180122BE4] = v2;
}
return result;
}
//----- (00000001800D4EF4) ----------------------------------------------------
__int64 __fastcall sub_1800D4EF4(__int64 result)
{
unsigned int v1; // w9
v1 = MEMORY[0x180122BE4] | 0x2000000;
if ( !(_DWORD)result )
v1 = MEMORY[0x180122BE4] & 0xFDFFFFFF;
MEMORY[0x180122BE4] = v1;
return result;
}
//----- (00000001800D4F18) ----------------------------------------------------
void sub_1800D4F18()
{
MEMORY[0x180122BE4] |= 0x8000000u;
}
//----- (00000001800D4F30) ----------------------------------------------------
__int64 sub_1800D4F30()
{
return ((unsigned int)MEMORY[0x180122BE7] >> 3) & 1;
}
//----- (00000001800D4F44) ----------------------------------------------------
signed __int64 sub_1800D4F44()
{
int v0; // w8
int *v1; // x0
v0 = MEMORY[0x180122BE4];
if ( MEMORY[0x180122BE4] & 0x1000000 )
{
sub_1800C6960();
v0 = MEMORY[0x180122BE4];
}
if ( !(v0 & 0x40000) )
{
sub_1800C5E08(0xFFFFFFFFLL, 0);
v0 = MEMORY[0x180122BE4];
}
if ( !(v0 & 0x80000) )
{
sub_1800C5E08(0LL, -1);
v0 = MEMORY[0x180122BE4];
}
if ( v0 & 0x4000000 )
v1 = (int *)6443641864LL;
else
v1 = 0LL;
sub_1800C6A94(v1);
sub_1800C6CE0((MEMORY[0x180122BE4] >> 25) & 1);
MEMORY[0x180122BE1] = 1;
return 1LL;
}
// 1800C6960: using guessed type __int64 sub_1800C6960(void);
//----- (00000001800D4FC8) ----------------------------------------------------
__int64 __fastcall sub_1800D4FC8(int a1)
{
int v1; // w19
__int64 result; // x0
signed __int64 v3; // x8
int *v4; // x0
__int64 v5; // x1
int *v6; // x0
char v7; // [xsp+18h] [xbp-58h]
__int64 v8; // [xsp+48h] [xbp-28h]
v1 = a1;
v8 = 5139240511851214385LL;
if ( !(MEMORY[0x180122BE1] & 1) )
{
v3 = 450LL;
LABEL_14:
sub_1800D489C("%llx:%d", &byte_180101040, -5600394141277327902LL, v3);
}
result = sub_1800C5E98();
if ( (_DWORD)result )
{
if ( v1 )
{
v3 = 455LL;
goto LABEL_14;
}
}
else
{
if ( MEMORY[0x180122BE7] & 4 )
{
sub_1800F03F0(&v7, (_QWORD *)0x180122C08LL, 0x30uLL);
v4 = (int *)&v7;
v5 = 48LL;
}
else
{
v4 = 0LL;
v5 = 0LL;
}
v6 = sub_1800C6BF4(v4, v5);
if ( !(MEMORY[0x180122BE7] & 2) )
sub_1800C6CAC();
result = sub_1800C6B74((__int64)v6);
}
if ( 5139240511851214385LL != v8 )
sub_1800D4A5C();
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D50B0) ----------------------------------------------------
unsigned __int64 __fastcall sub_1800D50B0(unsigned __int64 result, __int64 a2)
{
__int64 v2; // x29
__int64 v3; // x30
if ( a2 + result <= result )
sub_1800D489C("%llx:%d", &byte_180101040, -5600394141277327902LL, 490LL, v2, v3);
MEMORY[0x180122BF8] = result;
MEMORY[0x180122C00] = a2 + result;
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D5104) ----------------------------------------------------
__int64 sub_1800D5104()
{
__int64 v0; // x29
__int64 v1; // x30
__int64 result; // x0
result = MEMORY[0x180122BF8];
if ( !(MEMORY[0x180122BE4] & 0x20) && !MEMORY[0x180122BF8] )
sub_1800D489C("%llx:%d", &byte_180101040, -5600394141277327902LL, 498LL, v0, v1);
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D5158) ----------------------------------------------------
__int64 sub_1800D5158()
{
__int64 v0; // x29
__int64 v1; // x30
__int64 result; // x0
result = MEMORY[0x180122C00];
if ( !(MEMORY[0x180122BE4] & 0x20) && !MEMORY[0x180122C00] )
sub_1800D489C("%llx:%d", &byte_180101040, -5600394141277327902LL, 508LL, v0, v1);
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D51AC) ----------------------------------------------------
unsigned __int64 __fastcall sub_1800D51AC(unsigned __int64 result, __int64 a2, int a3)
{
unsigned __int64 v3; // x9
bool v4; // cf
bool v5; // zf
signed __int64 v6; // x9
v3 = a2 + result;
if ( __CFADD__(a2, result) )
{
v6 = 523LL;
goto LABEL_8;
}
if ( result >> 28 >= 0x87 )
{
v4 = v3 >= 0x870004000LL;
v5 = v3 == 36238802944LL;
}
else
{
v4 = 1;
v5 = 0;
}
if ( !v5 && v4 )
{
v6 = 532LL;
goto LABEL_8;
}
if ( a3 != 5 )
{
v6 = 527LL;
LABEL_8:
sub_1800D489C("%llx:%d", &byte_180101040, -5600394141277327902LL, v6);
}
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D522C) ----------------------------------------------------
void __noreturn sub_1800D522C()
{
__int64 v0; // x29
__int64 v1; // x30
int v2; // w9
int v3; // w9
v2 = HIDWORD(qword_1801158C8[9472]);
if ( !v2 )
sub_1800D489C("%llx:%d", &byte_180101040, -889240221779527096LL, 30LL, v0, v1);
v3 = v2 - 1;
HIDWORD(qword_1801158C8[9472]) = v3;
if ( !v3 )
{
LOBYTE(qword_1801158C8[234]) = 0;
sub_1800B05AC();
}
}
// 180101040: using guessed type char byte_180101040;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D528C) ----------------------------------------------------
void __noreturn sub_1800D528C()
{
__int64 v0; // x29
__int64 v1; // x30
if ( MEMORY[0x1801280CC] == 1 )
sub_1800D522C();
sub_1800D489C("%llx:%d", &byte_180101040, -889240221779527096LL, 42LL, v0, v1);
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D52D8) ----------------------------------------------------
void sub_1800D52D8()
{
if ( LOBYTE(qword_1801158C8[234]) )
sub_1800D522C();
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D5338) ----------------------------------------------------
unsigned __int64 sub_1800D5338()
{
qword_1801158C8[241] = (__int64)"ksat";
return sub_1800E0EDC((unsigned __int64)"ksat");
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D534C) ----------------------------------------------------
// write access to const memory has been detected, the output may be wrong!
_DWORD *__fastcall sub_1800D534C(__int64 a1)
{
__int64 v1; // x1
__int64 v2; // x2
__int64 v3; // x3
__int64 v4; // x4
__int64 v5; // x5
__int64 v6; // x6
__int64 v7; // x7
_DWORD *result; // x0
__int64 vars0; // [xsp+0h] [xbp+0h]
MEMORY[0x180123018] = sub_1800E1188(a1);
sub_1800B1A44();
qword_180115038 = (__int64)&qword_180115030;
qword_180115030 = (__int64)&qword_180115030;
sub_1800EF260((__int64)"constructing idle task\n", v1, v2, v3, v4, v5, v6, v7, vars0);
MEMORY[0x180122FE0] = 0x4000LL;
result = sub_1800D53D4((_DWORD *)0x180122C40LL, (__int64)"idle task", (__int64)&loc_1800D54FC, 0LL);
result[10] = 1;
MEMORY[0x180123000] = 2;
BYTE4(qword_1801158C8[6887]) = 1;
return result;
}
// 1800D5374: write access to const memory at 180115038 has been detected
// 1800D5378: write access to const memory at 180115030 has been detected
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180115030: using guessed type __int64 qword_180115030;
// 180115038: using guessed type __int64 qword_180115038;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D53D4) ----------------------------------------------------
// write access to const memory has been detected, the output may be wrong!
_DWORD *__fastcall sub_1800D53D4(_DWORD *a1, __int64 a2, __int64 a3, __int64 a4)
{
__int64 v4; // x20
__int64 v5; // x21
_DWORD *v6; // x19
int v7; // w9
void *v8; // x1
void *v9; // x2
void *v10; // x3
void *v11; // x4
void *v12; // x5
void *v13; // x6
v4 = a4;
v5 = a3;
v6 = a1;
*a1 = 1952543595;
a1[239] = 1953721138;
sub_1800EFE14((__int64)(a1 + 234), a2, 0x10uLL, 0x10uLL);
*((_QWORD *)v6 + 113) = v5;
*((_QWORD *)v6 + 114) = v4;
sub_1800F612C();
v7 = HIDWORD(qword_1801158C8[6888]) + 1;
HIDWORD(qword_1801158C8[6888]) = v7;
v6[238] = v7;
sub_1800F61B4();
*((_QWORD *)v6 + 3) = 0LL;
*((_QWORD *)v6 + 4) = 0LL;
*((_QWORD *)v6 + 111) = v6 + 220;
*((_QWORD *)v6 + 110) = v6 + 220;
*((_QWORD *)v6 + 5) = 0x100000000LL;
sub_1800B1BDC(v6, v8, v9, v10, v11, v12, v13, 0x100000000LL);
if ( !&off_180114CA0 || &off_180114CA0 != &off_180114CA0 )
sub_1800D489C("%llx:%d", &byte_180101040, -7633818827287809967LL, 50LL);
*((_QWORD *)v6 + 1) = &off_180114CA0;
*((_QWORD *)v6 + 2) = &off_180114CA0;
off_180114CA0 = v6 + 2;
off_180114CA8[0] = (void **)(v6 + 2);
++MEMORY[0x180123000];
return v6;
}
// 1800D54A0: write access to const memory at 180114CA0 has been detected
// 1800D54A4: write access to const memory at 180114CA8 has been detected
// 180101040: using guessed type char byte_180101040;
// 180114CA0: using guessed type void *off_180114CA0;
// 180114CA8: using guessed type void **off_180114CA8[3];
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D55FC) ----------------------------------------------------
unsigned __int64 sub_1800D55FC()
{
unsigned __int64 result; // x0
result = sub_1800E0EE4();
if ( !result )
sub_1800D489C("%llx:%d", &byte_180101040, -7633818827287809967LL, 199LL);
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D5648) ----------------------------------------------------
_DWORD *__fastcall sub_1800D5648(__int64 a1, __int64 a2, __int64 a3, unsigned __int64 a4)
{
unsigned __int64 v4; // x19
__int64 v5; // x20
__int64 v6; // x21
__int64 v7; // x22
_QWORD *v8; // x23
signed __int64 v9; // x8
v4 = a4;
v5 = a3;
v6 = a2;
v7 = a1;
v8 = (_QWORD *)sub_1800EDBF4(0x3C0uLL);
sub_1800F05A0(v8, 0x3C0uLL);
v9 = 0x4000LL;
if ( v4 > 0x4000 )
v9 = v4;
v8[116] = v9;
return sub_1800D53D4(v8, v7, v6, v5);
}
//----- (00000001800D56B8) ----------------------------------------------------
void __fastcall sub_1800D56B8(__int64 a1)
{
__int64 v1; // x19
bool v2; // zf
void *v3; // x1
void *v4; // x2
void *v5; // x3
void *v6; // x4
void *v7; // x5
void *v8; // x6
v1 = a1;
sub_1800F612C();
if ( (char *)v1 == "ksat" )
v2 = 1;
else
v2 = v1 == 6443641920LL;
if ( !v2 )
{
if ( *(_QWORD *)(v1 + 24) || *(_QWORD *)(v1 + 32) )
sub_1800D5758((_QWORD *)(v1 + 24));
sub_1800D5758((_QWORD *)(v1 + 8));
sub_1800B1D2C(v1, v3, v4, v5, v6, v7, v8);
}
sub_1800D489C("%llx:%d", &byte_180101040, -7633818827287809967LL, 259LL);
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D5758) ----------------------------------------------------
_QWORD *__fastcall sub_1800D5758(_QWORD *result)
{
__int64 v1; // x29
__int64 v2; // x30
_QWORD **v3; // x8
__int64 v4; // x9
v3 = (_QWORD **)result[1];
if ( !v3 || (v4 = *result) == 0 || *v3 != result || *(_QWORD **)(v4 + 8) != result )
sub_1800D489C("%llx:%d", &byte_180101040, -7633818827287809967LL, 74LL, v1, v2);
*v3 = (_QWORD *)v4;
*(_QWORD *)(*result + 8LL) = result[1];
*result = 0LL;
result[1] = 0LL;
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D57CC) ----------------------------------------------------
void __fastcall sub_1800D57CC(__int64 a1)
{
unsigned __int64 v1; // x0
__int64 v2; // x19
__int64 v3; // x0
unsigned __int64 v4; // x20
__int64 v5; // xzr
__int64 v6; // x2
__int64 v7; // x3
__int64 v8; // x4
__int64 v9; // x5
__int64 v10; // x6
__int64 v11; // x7
_QWORD *v12; // x0
__int64 v13; // [xsp+0h] [xbp-30h]
sub_1800E1188(a1);
v1 = sub_1800D55FC();
v2 = v1;
if ( LODWORD(qword_1801158C8[6888]) || *(_DWORD *)(v1 + 40) != 2 )
{
sub_1800F612C();
sub_1800F6010((_QWORD *)0x180116020LL);
LOBYTE(qword_1801158C8[6889]) = 0;
if ( *(_DWORD *)(v2 + 40) == 2 )
{
*(_DWORD *)(v2 + 40) = 1;
if ( v2 != 6443641920LL )
sub_1800D5904(v2);
}
v3 = sub_1800D5C08((__int64)&off_180114CB0);
if ( v3 )
v4 = v3 - 24;
else
v4 = 0LL;
if ( v4 )
{
v5 = (unsigned int)LODWORD(qword_1801158C8[6888])--;
}
else
{
v4 = 6443641920LL;
if ( !MEMORY[0x180122C68] )
sub_1800D489C("%llx:%d", &byte_180101040, -7633818827287809967LL, 363LL);
}
*(_DWORD *)(v4 + 40) = 2;
qword_1801158C8[241] = v4;
sub_1800E0EDC(v4);
v12 = sub_1800E0E48((_QWORD *)(v2 + 48), (_QWORD *)(v4 + 48), v6, v7, v8, v9, v10, v11, v13);
sub_1800E1188(v12);
sub_1800F61B4();
}
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
// 180101040: using guessed type char byte_180101040;
// 180114CB0: using guessed type void *off_180114CB0;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D5904) ----------------------------------------------------
_QWORD *__fastcall sub_1800D5904(__int64 a1)
{
__int64 v1; // xzr
_QWORD *result; // x0
v1 = LODWORD(qword_1801158C8[6888]);
result = sub_1800D5AD0(&off_180114CB0, (_QWORD *)(a1 + 24));
++LODWORD(qword_1801158C8[6888]);
return result;
}
// 180114CB0: using guessed type void *off_180114CB0;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D5940) ----------------------------------------------------
void __fastcall sub_1800D5940(__int64 a1)
{
__int64 v1; // x19
v1 = a1;
if ( !*(_DWORD *)(a1 + 40) )
{
*(_DWORD *)(a1 + 40) = 1;
sub_1800F612C();
sub_1800D5904(v1);
sub_1800F61B4();
}
}
//----- (00000001800D5984) ----------------------------------------------------
void __fastcall __noreturn sub_1800D5984(int a1)
{
int v1; // w19
unsigned __int64 v2; // x0
__int64 v3; // x0
v1 = a1;
v2 = sub_1800D55FC();
*(_DWORD *)(v2 + 896) = v1;
*(_DWORD *)(v2 + 40) = 5;
v3 = sub_1800D59F0((_QWORD *)(v2 + 880));
--MEMORY[0x180123000];
sub_1800D57CC(v3);
sub_1800D489C("%llx:%d", &byte_180101040, -7633818827287809967LL, 411LL);
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D59F0) ----------------------------------------------------
__int64 __fastcall sub_1800D59F0(_QWORD *a1)
{
_QWORD *v1; // x20
__int64 v2; // x19
_QWORD *i; // x0
__int64 v4; // x21
_QWORD *v5; // x23
v1 = a1;
sub_1800F612C();
v2 = 0LL;
for ( i = (_QWORD *)v1[1]; i != v1; i = v5 )
{
v4 = (__int64)(i - 3);
v5 = (_QWORD *)i[1];
sub_1800D5758(i);
*(_DWORD *)(v4 + 40) = 1;
sub_1800D5904(v4);
v2 = (unsigned int)(v2 + 1);
}
sub_1800F61B4();
return v2;
}
//----- (00000001800D5A60) ----------------------------------------------------
__int64 __fastcall sub_1800D5A60(__int64 a1)
{
__int64 v1; // x19
v1 = a1;
if ( *(_DWORD *)(a1 + 40) != 5 )
sub_1800D5A94((_QWORD *)(a1 + 880));
return *(unsigned int *)(v1 + 896);
}
//----- (00000001800D5A94) ----------------------------------------------------
void __fastcall sub_1800D5A94(_QWORD *a1)
{
_QWORD *v1; // x19
unsigned __int64 v2; // x0
_QWORD *v3; // x0
v1 = a1;
sub_1800F612C();
v2 = sub_1800D55FC();
*(_DWORD *)(v2 + 40) = 3;
v3 = sub_1800D5AD0(v1, (_QWORD *)(v2 + 24));
sub_1800D57CC((__int64)v3);
sub_1800F61B4();
}
//----- (00000001800D5AD0) ----------------------------------------------------
_QWORD *__fastcall sub_1800D5AD0(_QWORD *result, _QWORD *a2)
{
__int64 v2; // x29
__int64 v3; // x30
_QWORD **v4; // x9
__int64 v5; // x8
v4 = (_QWORD **)result[1];
if ( !v4 || (v5 = *result) == 0 || *v4 != result || *(_QWORD **)(v5 + 8) != result )
sub_1800D489C("%llx:%d", &byte_180101040, -7633818827287809967LL, 62LL, v2, v3);
*a2 = v5;
a2[1] = result;
*(_QWORD *)(*result + 8LL) = a2;
*result = a2;
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D5B44) ----------------------------------------------------
void __fastcall sub_1800D5B44(__int64 a1)
{
__int64 v1; // x19
__int64 v2; // x0
__int64 v3; // x0
v1 = a1;
if ( BYTE4(qword_1801158C8[6887]) )
{
sub_1800F612C();
v2 = sub_1800D55FC();
*(_DWORD *)(v2 + 40) = 4;
sub_1800F5E68((_QWORD *)(v2 + 832), v1, (__int64)sub_1800D5BAC, v2);
sub_1800D57CC(v3);
sub_1800F61B4();
}
else
{
sub_1800D5F60(a1);
}
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D5BAC) ----------------------------------------------------
_QWORD *__fastcall sub_1800D5BAC(__int64 a1, __int64 a2)
{
*(_DWORD *)(a2 + 40) = 1;
return sub_1800D5904(a2);
}
//----- (00000001800D5BBC) ----------------------------------------------------
signed __int64 __fastcall sub_1800D5BBC(__int64 a1)
{
__int64 v1; // x19
__int64 v2; // x0
signed __int64 v3; // x19
__int64 v4; // x0
v1 = a1;
sub_1800F612C();
v2 = sub_1800D5C08(v1);
v3 = 0LL;
if ( v2 )
{
v4 = v2 - 24;
if ( v4 )
{
v3 = 1LL;
*(_DWORD *)(v4 + 40) = 1;
sub_1800D5904(v4);
}
}
sub_1800F61B4();
return v3;
}
//----- (00000001800D5C08) ----------------------------------------------------
__int64 __fastcall sub_1800D5C08(__int64 a1)
{
__int64 v1; // x19
v1 = *(_QWORD *)(a1 + 8);
if ( v1 == a1 )
return 0LL;
sub_1800D5758(*(_QWORD **)(a1 + 8));
return v1;
}
//----- (00000001800D5C40) ----------------------------------------------------
__int64 __fastcall sub_1800D5C40(__int64 result, int a2, char a3)
{
*(_QWORD *)(result + 8) = result + 8;
*(_QWORD *)(result + 16) = result + 8;
*(_BYTE *)result = a3;
*(_DWORD *)(result + 4) = a2;
return result;
}
//----- (00000001800D5C54) ----------------------------------------------------
void __fastcall sub_1800D5C54(_BYTE *a1)
{
_BYTE *v1; // x19
_QWORD *v2; // x0
v1 = a1;
sub_1800F612C();
*v1 = 1;
v2 = v1 + 8;
if ( v1[4] & 1 )
{
if ( (signed int)sub_1800D5BBC((__int64)v2) >= 1 )
*v1 = 0;
}
else
{
sub_1800D59F0(v2);
}
sub_1800F61B4();
}
//----- (00000001800D5CA0) ----------------------------------------------------
_BYTE *__fastcall sub_1800D5CA0(_BYTE *result)
{
*result = 0;
return result;
}
//----- (00000001800D5D18) ----------------------------------------------------
void __fastcall sub_1800D5D18(_BYTE *a1)
{
_BYTE *v1; // x19
__int64 v2; // x0
_BYTE *v3; // x19
v3 = a1;
if ( BYTE4(qword_1801158C8[6887]) )
{
sub_1800F612C();
if ( *v3 )
{
if ( v3[4] & 1 )
*v3 = 0;
}
else
{
sub_1800D5A94((_QWORD *)v3 + 1);
}
sub_1800F61B4();
}
else
{
v1 = a1;
while ( 1 )
{
sub_1800F612C();
if ( *v1 )
break;
sub_1800F61B4();
if ( sub_1800D5F1C(v2) > 0xFFFFFFFFFFFFFFFFLL )
return;
}
if ( v1[4] & 1 )
*v1 = 0;
}
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D5D78) ----------------------------------------------------
bool __fastcall sub_1800D5D78(__int64 a1, __int64 a2)
{
__int64 v2; // x20
__int64 v3; // x19
_BOOL8 v4; // x19
_QWORD *v5; // x21
__int64 v7; // [xsp+40h] [xbp-40h]
unsigned __int64 v8; // [xsp+48h] [xbp-38h]
__int64 v9; // [xsp+50h] [xbp-30h]
__int64 v10; // [xsp+58h] [xbp-28h]
v2 = a2;
v3 = a1;
v10 = 5139240511851214385LL;
if ( !BYTE4(qword_1801158C8[6887]) )
{
if ( 5139240511851214385LL == v10 )
JUMPOUT(&loc_1800D5CA8);
LABEL_13:
sub_1800D4A5C();
}
sub_1800F612C();
if ( *(_BYTE *)v3 )
{
if ( *(_BYTE *)(v3 + 4) & 1 )
*(_BYTE *)v3 = 0;
v4 = 1LL;
}
else if ( v2 )
{
v7 = v3;
v8 = sub_1800D55FC();
LOBYTE(v9) = 0;
v5 = (_QWORD *)(v8 + 832);
sub_1800F5E68((_QWORD *)(v8 + 832), v2, (__int64)&loc_1800D5E8C, (__int64)&v7);
sub_1800D5A94((_QWORD *)(v3 + 8));
sub_1800F6010(v5);
v4 = (_BYTE)v9 == 0;
}
else
{
v4 = 0LL;
}
sub_1800F61B4();
if ( 5139240511851214385LL != v10 )
goto LABEL_13;
return v4;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D5F0C) ----------------------------------------------------
void sub_1800D5F0C()
{
LOBYTE(qword_1801158C8[6889]) = 1;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D5F1C) ----------------------------------------------------
unsigned __int64 __fastcall sub_1800D5F1C(__int64 a1)
{
unsigned __int64 v1; // x19
v1 = sub_1800E1188(a1);
return v1 / (unsigned int)sub_1800E11E8();
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
//----- (00000001800D5F30) ----------------------------------------------------
bool __fastcall sub_1800D5F30(__int64 a1, unsigned __int64 a2)
{
return sub_1800D5F1C(a1) - a1 >= a2;
}
//----- (00000001800D5F60) ----------------------------------------------------
__int64 __fastcall sub_1800D5F60(__int64 a1)
{
__int64 v1; // x20
__int64 v2; // x19
__int64 result; // x0
unsigned __int64 v4; // x20
v1 = a1;
v2 = sub_1800E1188(a1);
result = sub_1800E129C(v1);
v4 = result;
do
result = sub_1800E1188(result);
while ( result - v2 <= v4 );
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
//----- (00000001800D60D8) ----------------------------------------------------
__int64 sub_1800D60D8()
{
int v0; // w19
int v1; // w19
int v2; // w19
if ( !(qword_1801158C8[6896] & 1) )
{
sub_1800B7F70(5120LL, 0);
sub_1800B7F70(2819LL, 0);
sub_1800B7F70(2818LL, 0);
sub_1800B7F70(2817LL, 0);
sub_1800B8090(5120LL, -1);
sub_1800B8090(2819LL, -1);
sub_1800B8090(2818LL, -1);
sub_1800B8090(2817LL, -1);
sub_1800D5F60(100LL);
v0 = sub_1800B7D30(2817LL);
v1 = 4 * (unsigned __int64)sub_1800B7D30(2818LL) | 8 * v0;
v2 = v1 | 2 * (unsigned __int64)sub_1800B7D30(2819LL);
MEMORY[0x18012304C] = (v2 | (unsigned __int64)sub_1800B7D30(5120LL)) ^ 0xF;
sub_1800B7F70(5120LL, 4);
sub_1800B7F70(2819LL, 4);
sub_1800B7F70(2818LL, 4);
sub_1800B7F70(2817LL, 4);
MEMORY[0x180123048] = 1;
}
return MEMORY[0x18012304C];
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D61EC) ----------------------------------------------------
signed __int64 sub_1800D61EC()
{
int v0; // w19
unsigned int v1; // w20
signed __int64 result; // x0
v0 = sub_1800C678C();
v1 = sub_1800D60D8();
if ( sub_1800E0D14() )
result = 1LL;
else
result = ((v0 | 4) == 14) & (unsigned __int8)(v1 < 0xF);
return result;
}
//----- (00000001800D623C) ----------------------------------------------------
signed __int64 sub_1800D623C()
{
__int64 v0; // x1
__int64 v1; // x2
__int64 v2; // x3
__int64 v3; // x4
__int64 v4; // x5
__int64 v5; // x6
__int64 v6; // x7
__int64 v7; // x1
__int64 v8; // x2
__int64 v9; // x3
__int64 v10; // x4
__int64 v11; // x5
__int64 v12; // x6
__int64 v13; // x7
signed __int64 result; // x0
unsigned __int8 v15; // [xsp+17h] [xbp-19h]
__int64 v16; // [xsp+18h] [xbp-18h]
v16 = 5139240511851214385LL;
if ( sub_1800E0D14() )
{
if ( (unsigned int)sub_1800D7568(1u) )
{
sub_1800EF260((__int64)"%llx:%d\n", v0, v1, v2, v3, v4, v5, v6, -740463559713838239LL);
}
else
{
sub_1800BB884(1u, 2403, 148, 1);
sub_1800D75CC(1u);
}
}
v15 = 0;
sub_1800BB8A4(1u, 513, &v15);
if ( v15 > 0xDu
|| (!(unsigned int)sub_1800D7568(1u) ? (sub_1800BB884(1u, 12641, 240, 0), sub_1800D75CC(1u)) : sub_1800EF260(
(__int64)"%llx:%d\n",
v7,
v8,
v9,
v10,
v11,
v12,
v13,
-740463559713838239LL),
sub_1800BB884(1u, 12544, 123, 0),
result = sub_1800BB884(1u, 793, 0, 0),
v15 >= 0xDu) )
{
result = sub_1800E0D14();
if ( (_DWORD)result )
{
sub_1800BB884(1u, 803, 7, 0);
result = sub_1800BB884(1u, 2368, 73, 0);
}
}
if ( 5139240511851214385LL != v16 )
sub_1800D4A5C();
return result;
}
//----- (00000001800D63A4) ----------------------------------------------------
void sub_1800D63A4()
{
sub_1800D60D8();
JUMPOUT(&loc_1800BC81C);
}
//----- (00000001800D63C4) ----------------------------------------------------
__int64 sub_1800D63C4()
{
unsigned __int64 v0; // x20
int v1; // w22
unsigned int v2; // w19
__int64 result; // x0
__int64 v4; // x1
__int64 v5; // x2
__int64 v6; // x3
__int64 v7; // x4
__int64 v8; // x5
__int64 v9; // x6
__int64 v10; // x7
int v11; // w21
__int64 v12; // x8
v0 = sub_1800C58E4();
v1 = sub_1800C678C();
v2 = sub_1800D60D8();
result = sub_1800E0CBC();
v11 = result;
if ( !(result & 1) )
result = sub_1800D64AC();
if ( (unsigned int)(v1 - 10) > 5 )
v12 = 0x80000000LL;
else
v12 = qword_18010F100[v1 - 10];
if ( v0 != v12 )
sub_1800D489C("%llx:%d", &byte_180101040, -740463559713838239LL, 668LL);
if ( v11 )
{
if ( v2 <= 0xC )
LABEL_13:
sub_1800E0628((__int64)"(called by %s at %s:%d)\n", v4, v5, v6, v7, v8, v9, v10);
}
else if ( v2 <= 5 )
{
goto LABEL_13;
}
return result;
}
// 180101040: using guessed type char byte_180101040;
// 18010F100: using guessed type __int64 qword_18010F100[6];
//----- (00000001800D64AC) ----------------------------------------------------
__int64 sub_1800D64AC()
{
signed __int64 v0; // x8
int v1; // w19
int v2; // w8
if ( !(MEMORY[0x180123049] & 1) )
{
if ( sub_1800E0CBC() )
{
MEMORY[0x180123050] = 0;
if ( ((unsigned int)sub_1800C678C() | 4) != 14 )
{
v0 = 500LL;
goto LABEL_10;
}
}
else
{
v1 = sub_1800B81F4(5383LL);
v2 = v1 | 16 * (unsigned __int64)sub_1800B81F4(4866LL);
MEMORY[0x180123050] = v2;
if ( v2 && v2 != 17 )
{
v0 = 532LL;
LABEL_10:
sub_1800D489C("%llx:%d", &byte_180101040, -740463559713838239LL, v0);
}
}
MEMORY[0x180123049] = 1;
}
return MEMORY[0x180123050];
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D6570) ----------------------------------------------------
__int64 sub_1800D6570()
{
return 0LL;
}
//----- (00000001800D6578) ----------------------------------------------------
signed __int64 sub_1800D6578()
{
signed __int64 result; // x0
result = sub_1800C68B8();
if ( (_DWORD)result )
result = sub_1800D9AA4();
return result;
}
//----- (00000001800D6598) ----------------------------------------------------
signed __int64 __fastcall sub_1800D6598(_BYTE *a1)
{
_BYTE *v1; // x19
v1 = a1;
if ( (unsigned int)sub_1800BC6B0() == 1 )
{
*v1 = 1;
return sub_1800C6898();
}
if ( *v1 )
return sub_1800C6898();
return 1LL;
}
//----- (00000001800D65E4) ----------------------------------------------------
__int64 __fastcall sub_1800D65E4(int a1)
{
int v1; // w19
__int64 result; // x0
v1 = a1;
result = sub_1800C6898();
if ( (_DWORD)result )
{
if ( v1 )
result = (unsigned int)sub_1800D9AA4() ^ 1;
}
return result;
}
//----- (00000001800D6614) ----------------------------------------------------
signed __int64 sub_1800D6614()
{
signed __int64 result; // x0
if ( (unsigned int)sub_1800B7D30(519LL) || (unsigned int)sub_1800B7D30(5636LL) )
result = 0LL;
else
result = sub_1800D9AA4();
return result;
}
//----- (00000001800D6648) ----------------------------------------------------
__int64 *sub_1800D6648()
{
return qword_1801154E8;
}
// 1801154E8: using guessed type __int64 qword_1801154E8[14];
//----- (00000001800D66C4) ----------------------------------------------------
signed __int64 sub_1800D66C4()
{
return 12LL;
}
//----- (00000001800D66CC) ----------------------------------------------------
signed __int64 sub_1800D66CC()
{
return 19LL;
}
//----- (00000001800D66D4) ----------------------------------------------------
__int64 sub_1800D66D4()
{
unsigned int v0; // w0
__int64 v1; // x1
__int64 v2; // x2
__int64 v3; // x3
__int64 v4; // x4
__int64 v5; // x5
__int64 v6; // x6
__int64 v7; // x7
int v8; // w0
__int64 v9; // x2
__int64 v10; // x1
__int64 v11; // x2
__int64 v12; // x3
__int64 v13; // x4
__int64 v14; // x5
__int64 v15; // x6
__int64 v16; // x7
__int64 v17; // x8
__int64 v19; // [xsp+10h] [xbp-50h]
__int64 v20; // [xsp+18h] [xbp-48h]
unsigned int v21; // [xsp+24h] [xbp-3Ch]
__int64 *v22; // [xsp+28h] [xbp-38h]
__int64 v23; // [xsp+30h] [xbp-30h]
__int64 v24; // [xsp+48h] [xbp-18h]
v24 = 5139240511851214385LL;
v0 = sub_1800C678C();
if ( v0 <= 0xF )
{
if ( (1 << v0) & 0xCC00 )
{
if ( sub_1800ECB8C("emu", 0LL) )
{
sub_1800EF260((__int64)"%llx:%d\n", v1, v2, v3, v4, v5, v6, v7, -740463559713838239LL);
if ( (unsigned int)sub_1800EBDF4(0LL, "product", &v22) )
{
sub_1800EC41C((__int64)v22, "product-description", (__int64)"iPhone (emulated)");
sub_1800EC320((__int64)v22, "artwork-device-subtype", 2436);
sub_1800EC41C((__int64)v22, "graphics-featureset-class", (__int64)"MTL3,2");
sub_1800EC41C((__int64)v22, "graphics-featureset-fallbacks", (__int64)"MTL3,1:MTL2,2:MTL1,2:GLES2,0");
sub_1800EC41C((__int64)v22, "compatible-device-fallback", (__int64)&byte_180101040);
}
}
}
}
if ( sub_1800E0D14() )
{
v8 = sub_1800D64AC();
if ( v8 )
{
if ( v8 != 17 )
sub_1800D489C("%llx:%d", &byte_180101040, -740463559713838239LL, 810LL);
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io/spi2/multi-touch", &v22) )
sub_1800EC460(v22, "compatible");
}
}
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io/aop/iop-aop-nub/compass", &v22)
&& (unsigned int)sub_1800EC0DC((__int64)v22, "compass-orientation", &v20, &v21) )
{
sub_1800F661C(1129475956, (_QWORD *)v20, v21);
}
sub_1800C3C68("arm-io/i2c0/display-pmu");
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io/mipi-dsim/lcd", &v22) )
{
if ( !(sub_1800EBDF4(0LL, "arm-io/disp0", &v23) & 1) )
v23 = 0LL;
if ( (unsigned int)sub_1800EBDF4(0LL, "backlight", &v19) )
{
v9 = v19;
}
else
{
v9 = 0LL;
v19 = 0LL;
}
sub_1800E2914((__int64)v22, v23, v9);
}
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io/mipi-dsim", &v22) )
sub_1800C0CB4((__int64)v22, v10, v11, v12, v13, v14, v15, v16);
if ( (unsigned int)sub_1800EBDF4(0LL, "arm-io/i2c0/audio-speaker", &v22)
&& (unsigned int)sub_1800EC0DC((__int64)v22, "speaker-config", &v20, &v21)
&& (unsigned int)sub_1800F661C(1447183169, &v23, 0x14uLL) == 20 )
{
v17 = v20;
*(_BYTE *)(v20 + 12) = *(_BYTE *)(v20 + 12) & 0xE0 | BYTE4(v23) & 0x1F;
*(_BYTE *)(v17 + 16) = v23;
}
sub_1800E3040((__int64)qword_180115110, 1);
if ( 5139240511851214385LL != v24 )
sub_1800D4A5C();
return 0LL;
}
// 180101040: using guessed type char byte_180101040;
// 180114C90: using guessed type __int64 qword_180114C90;
// 180115110: using guessed type __int64 qword_180115110[7];
//----- (00000001800D69B8) ----------------------------------------------------
__int64 __fastcall sub_1800D69B8(int a1, __int64 a2)
{
bool v2; // zf
if ( a2 )
{
if ( a1 == 8 )
v2 = 1;
else
v2 = a1 == 6;
if ( v2 )
{
*(_DWORD *)a2 = 1;
*(_DWORD *)(a2 + 4) = 2;
*(_QWORD *)(a2 + 8) = "GCLC";
*(_QWORD *)(a2 + 16) = 0LL;
}
else
{
a2 = 0LL;
}
}
return a2;
}
//----- (00000001800D6B14) ----------------------------------------------------
signed __int64 __fastcall sub_1800D6B14(char a1, __int64 a2, __int64 a3, unsigned __int64 a4, int a5, __int64 a6, _QWORD *a7)
{
_QWORD *v7; // x23
__int64 v8; // x20
unsigned __int64 v9; // x22
__int64 v10; // x19
__int64 v11; // x21
unsigned int v12; // w9
signed __int64 result; // x0
unsigned int v14; // w10
__int64 v15; // x24
__int64 *v16; // x0
__int64 *v17; // x0
signed __int64 v18; // x9
v7 = a7;
v8 = a6;
v9 = a4;
v10 = a3;
v11 = a2;
if ( a4 & 0xF || !(a5 & 0xFFF) && !a6 || (v12 = a1 & 0xF, v12 > 1) )
{
v18 = 167LL;
goto LABEL_27;
}
if ( a5 & 0xFFF )
{
if ( (unsigned int)((__int64 (*)(void))loc_1800B52A0)() )
result = 0xFFFFFFFFLL;
else
result = 0LL;
return result;
}
v14 = a5 & 0xF0000000;
if ( !(a5 & 0xF0000000) )
{
v15 = 16LL;
goto LABEL_16;
}
if ( v14 == 0x20000000 )
{
v15 = 32LL;
goto LABEL_16;
}
if ( v14 != 0x10000000 )
{
v18 = 92LL;
LABEL_27:
sub_1800D489C("%llx:%d", &byte_180101040, 5420575940684019856LL, v18);
}
v15 = 24LL;
LABEL_16:
if ( (a1 & 0xF0) == 16 )
{
if ( v12 == 1 )
v16 = sub_1800FCFEC();
else
v16 = sub_1800FCFF8();
sub_1800FC788((__int64)v16, v15, v8, v7, v9 >> 4, v11, v10);
}
else
{
if ( v12 == 1 )
v17 = sub_1800FD004();
else
v17 = sub_1800FD010();
sub_1800D6C78((__int64)v17, v15, v8, v9, v11, v10);
}
return 0LL;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D6C78) ----------------------------------------------------
__int64 __fastcall sub_1800D6C78(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6)
{
__int64 v6; // x19
__int64 v7; // x20
__int64 v8; // x21
__int64 v9; // x22
signed __int64 *v10; // x23
__int64 result; // x0
__int64 v12; // [xsp+0h] [xbp-40h]
__int64 v13; // [xsp+8h] [xbp-38h]
v6 = a6;
v7 = a5;
v8 = a4;
v9 = a1;
v13 = 5139240511851214385LL;
v10 = (__int64 *)((char *)&v12 - ((*(_QWORD *)a1 + 15LL) & 0xFFFFFFFFFFFFFFF0LL));
(*(void (**)(void))(a1 + 16))();
(*(void (__fastcall **)(signed __int64 *, __int64, __int64, __int64))(v9 + 24))(v10, v8, v7, v6);
result = sub_1800FE1D0(*(_QWORD *)v9, v10);
if ( 5139240511851214385LL != v13 )
sub_1800D4A5C();
return result;
}
//----- (00000001800D6D3C) ----------------------------------------------------
signed __int64 __fastcall sub_1800D6D3C(__int64 a1, int a2, __int64 a3)
{
int v3; // w20
__int64 v4; // x19
signed __int64 result; // x0
v3 = a2;
v4 = a1;
result = 0xFFFFFFFFLL;
if ( v4 && a3 )
{
*(_QWORD *)v4 = a3;
*(_DWORD *)(v4 + 8) = a2;
sub_1800D5C40(v4 + 24, 1, 0);
sub_1800D5C40(v4 + 48, 1, 0);
if ( v3 == 2 )
{
sub_1800D7274(v4);
}
else
{
if ( v3 != 1 )
return 4294967294LL;
sub_1800D6F14(v4);
}
*(_QWORD *)(v4 + 88) = 128LL;
if ( sub_1800EEA08() && (unsigned int)sub_1800EE9F0() >= 0xC01 )
{
*(_QWORD *)(v4 + 104) = sub_1800EDBF4(24LL * *(_QWORD *)(v4 + 88));
}
else
{
*(_QWORD *)(v4 + 88) = 0LL;
*(_QWORD *)(v4 + 104) = 0LL;
}
result = 0LL;
*(_QWORD *)(v4 + 96) = 0LL;
*(_DWORD *)(*(unsigned int *)(v4 + 80) + *(_QWORD *)v4) = 4369;
*(_DWORD *)(*(unsigned int *)(v4 + 72) + *(_QWORD *)v4) |= 1u;
*(_DWORD *)(*(unsigned int *)(v4 + 76) + *(_QWORD *)v4) |= 1u;
}
return result;
}
//----- (00000001800D6E3C) ----------------------------------------------------
__int64 __fastcall sub_1800D6E3C(__int64 a1)
{
__int64 v1; // x19
_QWORD *v2; // x0
v1 = a1;
v2 = *(_QWORD **)(a1 + 104);
if ( v2 )
sub_1800EE010(v2);
*(_QWORD *)(v1 + 104) = 0LL;
*(_QWORD *)(v1 + 88) = 0LL;
return 0LL;
}
//----- (00000001800D6E70) ----------------------------------------------------
__int64 __fastcall sub_1800D6E70(__int64 result, int a2)
{
int v2; // w8
__int64 v3; // x19
__int64 v4; // x0
__int64 v5; // x0
__int64 v6; // x0
__int64 v7; // x19
__int64 v8; // x0
v2 = *(_DWORD *)(result + 8);
if ( v2 == 2 )
{
v7 = result;
if ( !(a2 & 1) )
{
((void (__fastcall *)(_QWORD))loc_1800B55EC)(*(unsigned int *)(result + 16));
v8 = *(unsigned int *)(v7 + 12);
JUMPOUT(&loc_1800B55EC);
}
}
else if ( v2 == 1 )
{
v3 = result;
v4 = *(unsigned int *)(result + 16);
if ( a2 )
{
((void (__fastcall *)(__int64))loc_1800B562C)(v4);
v5 = *(unsigned int *)(v3 + 12);
JUMPOUT(&loc_1800B562C);
}
((void (__fastcall *)(__int64))loc_1800B55EC)(v4);
v6 = *(unsigned int *)(v3 + 12);
JUMPOUT(&loc_1800B55EC);
}
return result;
}
//----- (00000001800D6E90) ----------------------------------------------------
__int64 __fastcall sub_1800D6E90(__int64 result, _QWORD *a2, char a3)
{
char v3; // w20
_QWORD *v4; // x19
__int64 v5; // x9
signed __int64 v6; // x8
v3 = a3;
v4 = (_QWORD *)result;
if ( *(_QWORD *)(result + 88) )
{
*(_QWORD *)(*(_QWORD *)(result + 104) + 24LL * *(_QWORD *)(result + 96) + 8) = a2[1];
*(_QWORD *)(*(_QWORD *)(result + 104) + 24LL * *(_QWORD *)(result + 96)) = *a2;
result = sub_1800E1188(result);
*(_QWORD *)(v4[13] + 24LL * v4[12] + 16) = result & 0xFFFFFFFFFFFFFFFCLL | v3 & 3;
v5 = v4[12];
if ( (unsigned __int64)(v5 + 1) < v4[11] )
v6 = v5 + 1;
else
v6 = 0LL;
v4[12] = v6;
}
return result;
}
// 1800E1188: using guessed type __int64 __fastcall sub_1800E1188(_QWORD);
//----- (00000001800D6F14) ----------------------------------------------------
__int64 __fastcall sub_1800D6F14(__int64 a1)
{
__int64 v1; // x19
v1 = a1;
*(_QWORD *)(a1 + 72) = 70506183147528LL;
*(_QWORD *)(a1 + 80) = 70385924063232LL;
*(_DWORD *)(*(_QWORD *)a1 + 3076LL) = 4369;
sub_1800B5688(*(_DWORD *)(a1 + 16), (__int64)sub_1800D6F74, a1);
return sub_1800B5688(*(_DWORD *)(v1 + 12), (__int64)sub_1800D6F98, v1);
}
//----- (00000001800D6F74) ----------------------------------------------------
void __fastcall sub_1800D6F74(__int64 a1)
{
__int64 v1; // xzr
*(_DWORD *)(*(unsigned int *)(a1 + 80) + *(_QWORD *)a1) = 4096;
v1 = *(unsigned int *)(*(unsigned int *)(a1 + 76) + *(_QWORD *)a1);
sub_1800D5C54((_BYTE *)(a1 + 24));
}
//----- (00000001800D6F98) ----------------------------------------------------
void __fastcall sub_1800D6F98(__int64 a1)
{
__int64 v1; // xzr
*(_DWORD *)(*(unsigned int *)(a1 + 80) + *(_QWORD *)a1) = 1;
v1 = *(unsigned int *)(*(unsigned int *)(a1 + 72) + *(_QWORD *)a1);
sub_1800D5C54((_BYTE *)(a1 + 48));
}
//----- (00000001800D7274) ----------------------------------------------------
__int64 __fastcall sub_1800D7274(__int64 a1)
{
__int64 v1; // x19
v1 = a1;
*(_QWORD *)(a1 + 72) = 141888539623688LL;
*(_QWORD *)(a1 + 80) = 141854179885312LL;
sub_1800B5688(*(_DWORD *)(a1 + 16), (__int64)sub_1800D72C8, a1);
return sub_1800B5688(*(_DWORD *)(v1 + 12), (__int64)sub_1800D72F0, v1);
}
//----- (00000001800D72C8) ----------------------------------------------------
void __fastcall sub_1800D72C8(__int64 a1)
{
__int64 v1; // x19
v1 = a1;
((void (__fastcall *)(_QWORD))loc_1800B55EC)(*(unsigned int *)(a1 + 16));
sub_1800D5C54((_BYTE *)(v1 + 24));
}
//----- (00000001800D72F0) ----------------------------------------------------
void __fastcall sub_1800D72F0(__int64 a1)
{
__int64 v1; // x19
v1 = a1;
((void (__fastcall *)(_QWORD))loc_1800B55EC)(*(unsigned int *)(a1 + 12));
sub_1800D5C54((_BYTE *)(v1 + 48));
}
//----- (00000001800D7568) ----------------------------------------------------
signed __int64 __fastcall sub_1800D7568(unsigned int a1)
{
unsigned int v1; // w19
signed __int64 v2; // x20
signed __int64 result; // x0
v1 = a1;
v2 = 0uLL;
while ( v2 <= 3 )
{
result = sub_1800BB884(v1, (unsigned __int16)v2 + 28673, (unsigned __int8)byte_18010FB4C[v2], 0);
++v2;
if ( (_DWORD)result )
return result;
}
return 0LL;
}
//----- (00000001800D75CC) ----------------------------------------------------
signed __int64 __fastcall sub_1800D75CC(unsigned int a1)
{
signed __int64 result; // x0
result = sub_1800BB884(a1, 28672, 0, 0);
if ( (_DWORD)result )
sub_1800D489C("%llx:%d", &byte_180101040, 6396108908777904807LL, 71LL);
return result;
}
// 180101040: using guessed type char byte_180101040;
//----- (00000001800D7624) ----------------------------------------------------
signed __int64 sub_1800D7624()
{
signed __int64 result; // x0
sub_1800D7648();
result = sub_1800E9290();
if ( (_DWORD)result )
{
sub_1800D769C();
result = 0xFFFFFFFFLL;
}
return result;
}
//----- (00000001800D7648) ----------------------------------------------------
void sub_1800D7648()
{
if ( !(MEMORY[0x180123532] & 1) )
{
MEMORY[0x180123530] = sub_1800D7B54(0x2004500u);
MEMORY[0x180123531] = sub_1800D7B54(0x2004B00u);
MEMORY[0x180123532] = 1;
}
}
//----- (00000001800D769C) ----------------------------------------------------
void sub_1800D769C()
{
if ( LOBYTE(qword_1801158C8[7051]) != 1 )
JUMPOUT(&loc_1800D76CC);
JUMPOUT(qword_1801158C8[242], 0, sub_1800D76BC);
if ( MEMORY[0x180125BB1] == 1 )
{
sub_1800F0620((signed __int64 *)0x180125BF8LL, 0, 0x90uLL);
if ( MEMORY[0x180125BD8] )
{
sub_1800EE010(MEMORY[0x180125BD8]);
MEMORY[0x180125BD8] = 0LL;
}
MEMORY[0x180125BB1] = 0;
}
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D76BC) ----------------------------------------------------
void sub_1800D76BC()
{
nullsub_16();
JUMPOUT(&loc_1800E9758);
}
// 1800E9A20: using guessed type __int64 nullsub_16(void);
//----- (00000001800D7778) ----------------------------------------------------
signed __int64 sub_1800D7778()
{
signed __int64 result; // x0
int v1; // w0
void **v2; // x0
sub_1800D7648();
v2 = sub_1800E5634();
if ( qword_1801158C8[7051] & 1 )
return 0LL;
sub_1800E76E0(v2);
if ( LOBYTE(qword_1801158C8[242]) )
{
if ( (unsigned int)sub_1800E7E54((__int64)"Apple Mobile Device (DFU Mode)") == -1 )
goto LABEL_13;
v1 = sub_1800E8DD4();
}
else
{
if ( (unsigned int)sub_1800E7E54((__int64)"Apple Mobile Device (Recovery Mode)") == -1
|| (unsigned int)sub_1800E98AC() == -1 )
{
goto LABEL_13;
}
v1 = sub_1800E9378();
}
if ( v1 != -1 && (unsigned int)sub_1800E8050() != -1 )
{
result = 0LL;
LOBYTE(qword_1801158C8[7051]) = 1;
return result;
}
LABEL_13:
sub_1800D769C();
return 0xFFFFFFFFLL;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D7790) ----------------------------------------------------
__int64 sub_1800D7790()
{
__int64 result; // x0
if ( LOBYTE(qword_1801158C8[7051]) == 1 )
{
sub_1800E8C80();
sub_1800D769C();
result = sub_1800E76E0(0LL);
LOBYTE(qword_1801158C8[7051]) = 0;
}
return result;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D77CC) ----------------------------------------------------
void sub_1800D77CC()
{
LOBYTE(qword_1801158C8[242]) = 1;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D77DC) ----------------------------------------------------
__int64 sub_1800D77DC()
{
return LOBYTE(qword_1801158C8[242]);
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D77E8) ----------------------------------------------------
__int64 sub_1800D77E8()
{
return MEMORY[0x180123531];
}
//----- (00000001800D77F8) ----------------------------------------------------
signed __int64 __fastcall sub_1800D77F8(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
_BYTE *v8; // x19
_DWORD *v9; // x20
__int64 v10; // x21
signed __int64 result; // x0
v8 = (_BYTE *)a3;
v9 = (_DWORD *)a2;
v10 = a1;
sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, -8535276184153498425LL);
result = sub_1800F56A4(v10, v9);
*v8 = result;
return result;
}
//----- (00000001800D7870) ----------------------------------------------------
void sub_1800D7870()
{
sub_1800D5C54((_BYTE *)0x180123568LL);
}
//----- (00000001800D7880) ----------------------------------------------------
void sub_1800D7880()
{
sub_1800D5C54((_BYTE *)0x180123580LL);
}
//----- (00000001800D7890) ----------------------------------------------------
void sub_1800D7890()
{
if ( (unsigned int)sub_1800E7B4C() - 1 <= 2 )
sub_1800D5C54((_BYTE *)0x180123580LL);
JUMPOUT(&loc_1800E7A68);
}
//----- (00000001800D78D4) ----------------------------------------------------
void sub_1800D78D4()
{
if ( !MEMORY[0x180123538] && !LOBYTE(qword_1801158C8[242]) )
{
sub_1800D5C40(6443644240LL, 1, 0);
MEMORY[0x180123538] = sub_1800D5648((__int64)"usb req", (__int64)sub_1800D79BC, 0LL, 0x3000uLL);
sub_1800D5940(MEMORY[0x180123538]);
}
if ( !MEMORY[0x180123540] )
{
sub_1800D5C40(6443644264LL, 1, 0);
MEMORY[0x180123540] = sub_1800D5648((__int64)"usb-high-current", (__int64)sub_1800D7A04, 0LL, 0x600uLL);
sub_1800D5940(MEMORY[0x180123540]);
}
if ( !MEMORY[0x180123548] )
{
sub_1800D5C40(6443644288LL, 1, 0);
MEMORY[0x180123548] = sub_1800D5648((__int64)"usb-no-current", (__int64)sub_1800D7A34, 0LL, 0x400uLL);
sub_1800D5940(MEMORY[0x180123548]);
}
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D79BC) ----------------------------------------------------
void __noreturn sub_1800D79BC()
{
__int64 v0; // x1
__int64 v1; // x2
__int64 v2; // x3
__int64 v3; // x4
__int64 v4; // x5
__int64 v5; // x6
__int64 v6; // x7
while ( 1 )
{
sub_1800D5D18((_BYTE *)0x180123550LL);
sub_1800D5D18(&qword_1801157A8);
sub_1800E7B58(MEMORY[0x1801168BC], v0, v1, v2, v3, v4, v5, v6);
}
}
// 1801157A8: using guessed type __int64 qword_1801157A8;
//----- (00000001800D7A04) ----------------------------------------------------
void __noreturn sub_1800D7A04()
{
while ( 1 )
{
sub_1800D5D18((_BYTE *)0x180123568LL);
sub_1800D834C(1LL, 0);
}
}
//----- (00000001800D7A34) ----------------------------------------------------
void __noreturn sub_1800D7A34()
{
while ( 1 )
{
sub_1800D5D18((_BYTE *)0x180123580LL);
sub_1800D834C(0LL, 0);
}
}
//----- (00000001800D7A64) ----------------------------------------------------
__int64 __fastcall sub_1800D7A64(__int64 a1, int a2)
{
if ( a2 != -1 )
JUMPOUT(&locret_1800D7A98);
JUMPOUT(qword_1801158C8[242], 0, &locret_1800D7A98);
return sub_1800D7A80();
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D7A80) ----------------------------------------------------
signed __int64 sub_1800D7A80()
{
sub_1800E7C40();
return 1LL;
}
//----- (00000001800D7A9C) ----------------------------------------------------
signed __int64 __fastcall sub_1800D7A9C(char *a1, int a2, __int64 a3, signed int *a4, _DWORD *a5)
{
_DWORD *v5; // x19
signed int *v6; // x20
char *v7; // x21
signed __int64 result; // x0
int v9; // w8
int v10; // w22
__int64 (*v11)(void); // x8
signed int v12; // w0
signed int v13; // w8
v5 = a5;
v6 = a4;
v7 = a1;
if ( LOBYTE(qword_1801158C8[242]) )
return 0xFFFFFFFFLL;
v9 = *a1 & 0x1F;
if ( v9 == 1 )
{
v10 = *((unsigned __int16 *)a1 + 2);
if ( v10 < a2 )
{
v11 = *(__int64 (**)(void))(*(_QWORD *)(a3 + 8LL * *((unsigned __int16 *)a1 + 2)) + 136LL);
if ( v11 )
{
v12 = v11();
v13 = v12;
if ( *v7 & 0x80000000 )
return 0LL;
if ( v12 >= 1 )
{
result = 0LL;
*v6 = v13;
*v5 = v10;
return result;
}
if ( !v12 )
{
sub_1800E7C0C();
return 0LL;
}
}
}
return 0xFFFFFFFFLL;
}
if ( !(*a1 & 0x1F) )
{
sub_1800E7D08(a1);
return 0LL;
}
return 1LL;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D7B54) ----------------------------------------------------
__int64 __fastcall sub_1800D7B54(unsigned int a1)
{
__int64 result; // x0
unsigned __int8 v2; // [xsp+7h] [xbp-9h]
__int64 v3; // [xsp+8h] [xbp-8h]
v3 = 5139240511851214385LL;
sub_1800F0E34(a1, 327680, &v2);
result = v2;
if ( 5139240511851214385LL != v3 )
sub_1800D4A5C();
return result;
}
//----- (00000001800D7BA8) ----------------------------------------------------
__int64 __fastcall sub_1800D7BA8(__int64 a1, unsigned __int64 a2, int a3)
{
int v3; // w21
unsigned __int64 v4; // x19
__int64 v5; // x20
__int64 v6; // x3
__int64 v7; // x4
__int64 v8; // x5
__int64 v9; // x6
__int64 v10; // x7
__int64 v11; // x19
_QWORD *v13; // [xsp+0h] [xbp-30h]
__int64 v14; // [xsp+8h] [xbp-28h]
v3 = a3;
v4 = a2;
v5 = a1;
v14 = 5139240511851214385LL;
v13 = 0LL;
sub_1800EE538((signed __int64 *)&v13, 0x40uLL, 0x200uLL);
if ( (*(unsigned int (__fastcall **)(__int64, _QWORD *, unsigned __int64, signed __int64))(v5 + 40))(
v5,
v13,
v4,
512LL) == 512 )
{
v11 = sub_1800C16B0(v13, v5, v4, v3);
if ( (_DWORD)v11 )
{
LOBYTE(qword_1801158C8[7066]) = 1;
LABEL_5:
sub_1800ED05C("image-version", 4LL, 0, v6, v7, v8, v9, v10);
goto LABEL_7;
}
if ( LOBYTE(qword_1801158C8[7066]) == 1 )
goto LABEL_5;
}
v11 = 0LL;
LABEL_7:
if ( v13 )
sub_1800EE010(v13);
if ( 5139240511851214385LL != v14 )
sub_1800D4A5C();
return v11;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D7CA8) ----------------------------------------------------
signed __int64 __fastcall sub_1800D7CA8(unsigned int *a1, unsigned int *a2, unsigned int a3, unsigned int *a4, char *a5, unsigned __int64 a6, unsigned __int64 *a7)
{
unsigned __int64 *v7; // x19
unsigned __int64 v8; // x20
char *v9; // x21
unsigned int *v10; // x22
unsigned int v11; // w25
__int64 v12; // x23
unsigned int *v13; // x24
__int64 v14; // x1
__int64 v15; // x1
__int64 v16; // x2
__int64 v17; // x3
__int64 v18; // x4
__int64 v19; // x5
__int64 v20; // x6
__int64 v21; // x7
unsigned int v22; // w1
v7 = a7;
v8 = a6;
v9 = a5;
v10 = a4;
v11 = a3;
v12 = (__int64)a2;
v13 = a1;
if ( a2 )
v14 = *a2;
sub_1800F5AC0(196620LL);
if ( v13 )
{
if ( *v13 <= v8 )
{
if ( v12 || !v11 )
{
if ( v11 < 2 || v10 )
{
if ( v10 )
*v10 = 0;
v22 = v13[2];
if ( v22 != 1298492794 && v22 != 1768777524 )
{
sub_1800F5AC0(1073938440LL);
}
else if ( !(unsigned int)sub_1800C1994(v13, v12, v11, v10, v9, v8, v7) )
{
sub_1800F598C(196621LL);
return 0LL;
}
}
else
{
sub_1800EF260((__int64)"%llx:%d\n", v15, v16, v17, v18, v19, v20, v21, -2779338095591142239LL);
sub_1800F598C(1073938435LL);
}
}
else
{
sub_1800EF260((__int64)"%llx:%d\n", v15, v16, v17, v18, v19, v20, v21, -2779338095591142239LL);
sub_1800F598C(1073938434LL);
}
}
else
{
sub_1800EF260((__int64)"%llx:%d\n", v15, v16, v17, v18, v19, v20, v21, -2779338095591142239LL);
sub_1800F598C(1073938433LL);
}
}
else
{
sub_1800EF260((__int64)"%llx:%d\n", v15, v16, v17, v18, v19, v20, v21, -2779338095591142239LL);
sub_1800F598C(1073938436LL);
}
sub_1800F598C(1073938446LL);
if ( v7 )
*v7 = 0LL;
return 0xFFFFFFFFLL;
}
//----- (00000001800D7E6C) ----------------------------------------------------
signed __int64 __fastcall sub_1800D7E6C(__int64 a1, int a2, int a3)
{
int v3; // w19
int v4; // w20
__int64 v5; // x21
signed __int64 result; // x0
v3 = a3;
v4 = a2;
v5 = a1;
result = sub_1800EDBF4(0x18uLL);
*(_QWORD *)(result + 8) = 0LL;
*(_QWORD *)(result + 16) = 0LL;
*(_QWORD *)result = 0LL;
*(_DWORD *)result = v4;
*(_DWORD *)(result + 8) = 1298492794;
*(_DWORD *)(result + 12) = v3;
*(_QWORD *)(result + 16) = v5;
return result;
}
//----- (00000001800D7EC0) ----------------------------------------------------
signed __int64 __fastcall sub_1800D7EC0(_BYTE *a1, char *a2, unsigned __int64 a3, unsigned __int64 *a4, unsigned int *a5, unsigned int a6, unsigned int *a7, int a8)
{
int v8; // w25
unsigned int *v9; // x20
unsigned int v10; // w24
unsigned int *v11; // x22
unsigned __int64 *v12; // x19
unsigned __int64 v13; // x21
char *v14; // x23
_BYTE *v15; // x26
__int64 v16; // x1
unsigned int *v17; // x0
unsigned int *v18; // x25
signed __int64 v19; // x19
__int64 v20; // x0
unsigned __int64 v22; // [xsp+0h] [xbp-60h]
__int64 v23; // [xsp+8h] [xbp-58h]
v8 = a8;
v9 = a7;
v10 = a6;
v11 = a5;
v12 = a4;
v13 = a3;
v14 = a2;
v15 = a1;
v23 = 5139240511851214385LL;
if ( a5 )
v16 = *a5;
sub_1800F5AC0(196623LL);
v22 = 0x20000000LL;
if ( (unsigned int)sub_1800EDA60(v15, (_QWORD *)0x800000000LL, &v22) || v22 > v13 )
goto LABEL_9;
v17 = (unsigned int *)sub_1800D7E6C(0x800000000LL, v22, v8);
v18 = v17;
if ( !v17 )
{
sub_1800F598C(1073938438LL);
LABEL_9:
v19 = 0xFFFFFFFFLL;
goto LABEL_10;
}
v19 = sub_1800D7CA8(v17, v11, v10, v9, v14, v13, v12);
sub_1800D8014(v18);
if ( !(v19 & 0x80000000) )
{
v20 = 196624LL;
goto LABEL_11;
}
LABEL_10:
sub_1800F598C(196625LL);
sub_1800F05A0((_QWORD *)0x800000000LL, 0x20000000uLL);
v20 = 196615LL;
LABEL_11:
sub_1800F598C(v20);
if ( 5139240511851214385LL != v23 )
sub_1800D4A5C();
return v19;
}
//----- (00000001800D8014) ----------------------------------------------------
void __fastcall sub_1800D8014(_QWORD *a1)
{
if ( a1 )
{
if ( *((_DWORD *)a1 + 2) == 1298492794 )
sub_1800EE010(a1);
}
}
//----- (00000001800D8034) ----------------------------------------------------
signed __int64 __fastcall sub_1800D8034(__int64 a1, int a2, char *a3, unsigned __int64 a4, unsigned __int64 *a5, unsigned int *a6, unsigned int a7, unsigned int *a8, int a9)
{
unsigned int *v9; // x20
unsigned int v10; // w24
unsigned int *v11; // x22
unsigned __int64 *v12; // x19
unsigned __int64 v13; // x21
char *v14; // x23
unsigned int *v15; // x0
unsigned int *v16; // x25
signed __int64 v17; // x19
v9 = a8;
v10 = a7;
v11 = a6;
v12 = a5;
v13 = a4;
v14 = a3;
v15 = (unsigned int *)sub_1800D7E6C(a1, a2, a9);
v16 = v15;
if ( !v15 )
{
v17 = 0xFFFFFFFFLL;
LABEL_5:
sub_1800F5CF0("boot-breadcrumbs");
return v17;
}
v17 = sub_1800D7CA8(v15, v11, v10, v9, v14, v13, v12);
sub_1800D8014(v16);
if ( v17 & 0x80000000 )
goto LABEL_5;
return v17;
}
//----- (00000001800D80D4) ----------------------------------------------------
signed __int64 __fastcall sub_1800D80D4(char *a1, unsigned __int64 a2, unsigned __int64 *a3, int a4)
{
unsigned __int64 *v4; // x19
unsigned __int64 v5; // x20
char *v6; // x21
unsigned int *v7; // x0
signed __int64 v8; // x19
int v10; // [xsp+4h] [xbp-2Ch]
__int64 v11; // [xsp+8h] [xbp-28h]
v4 = a3;
v5 = a2;
v6 = a1;
v11 = 5139240511851214385LL;
v10 = a4;
v7 = (unsigned int *)sub_1800C1958(a4);
if ( v7 )
{
v8 = sub_1800D7CA8(v7, (unsigned int *)&v10, 1u, 0LL, v6, v5, v4);
if ( !(v8 & 0x80000000) )
goto LABEL_6;
}
else
{
v8 = 0xFFFFFFFFLL;
}
sub_1800F5CF0("boot-breadcrumbs");
LABEL_6:
if ( 5139240511851214385LL != v11 )
sub_1800D4A5C();
return v8;
}
//----- (00000001800D8188) ----------------------------------------------------
__int64 sub_1800D8188()
{
return MEMORY[0x1801235B8];
}
//----- (00000001800D8198) ----------------------------------------------------
__int64 __fastcall sub_1800D8198(int a1, int a2, int a3, char a4)
{
__int64 v4; // x8
unsigned int v5; // w22
char v6; // w20
signed int v7; // w14
int v8; // w15
int v9; // w23
int v10; // w19
signed int i; // w19
bool v12; // cf
bool v13; // zf
unsigned int v14; // w1
int v16; // [xsp+4h] [xbp-3Ch]
__int64 v17; // [xsp+8h] [xbp-38h]
v4 = 0LL;
v5 = 0;
v6 = 0;
v17 = 5139240511851214385LL;
while ( v4 != 4 )
{
v7 = *(_DWORD *)(v4 + 6443644348LL);
if ( ((v7 != 3) | a1 | a3 ^ 1) != 1 )
{
v5 = 0;
goto LABEL_15;
}
switch ( v7 )
{
case 3:
if ( ((BYTE4(qword_1801158C8[242]) != 0) | a2 | a1) & 1 )
{
v5 = 500;
break;
}
break;
case 5:
goto LABEL_9;
case 4:
v8 = *(_DWORD *)(v4 + 6443644352LL) - 1;
if ( (unsigned int)v8 < 5 )
{
v5 = *((_DWORD *)qword_18010FB70 + v8);
break;
}
LABEL_9:
v5 = 1000;
break;
case 6:
v5 = 500;
break;
default:
v5 = 100;
break;
}
LABEL_15:
v6 |= v7 > 2;
v4 += 4LL;
}
MEMORY[0x1801235B8] = 0;
v16 = 0;
if ( !(a4 & 1) )
{
LOWORD(v9) = 0;
v10 = 0;
MEMORY[0x1801235B8] = v5;
while ( v10 != 1 )
{
v9 = (unsigned __int64)sub_1800E736C() + (unsigned __int16)v9;
++v10;
}
if ( v5 > 0x64 && !(unsigned int)sub_1800E7364() )
LOWORD(v9) = 0;
v16 = (unsigned __int16)v9;
}
for ( i = 1; i; --i )
{
if ( MEMORY[0x1801235B8] )
{
v12 = v5 >= MEMORY[0x1801235B8];
v13 = v5 == MEMORY[0x1801235B8];
}
else
{
v12 = 0;
v13 = 0;
}
if ( !v13 && v12 )
v14 = MEMORY[0x1801235B8];
else
v14 = v5;
sub_1800E71B8(0LL, v14, (unsigned int *)&v16);
}
if ( 5139240511851214385LL != v17 )
sub_1800D4A5C();
return v6 & 1;
}
// 18010FB70: using guessed type __int64 qword_18010FB70[7];
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D834C) ----------------------------------------------------
__int64 __fastcall sub_1800D834C(__int64 a1, int a2)
{
int v2; // w19
int v3; // w20
v2 = a2;
v3 = a1;
nullsub_15(a1);
return sub_1800D8198(0, v3, v2, 0);
}
// 1800E7360: using guessed type __int64 __fastcall nullsub_15(_QWORD);
//----- (00000001800D8380) ----------------------------------------------------
signed __int64 __fastcall sub_1800D8380(int a1)
{
signed __int64 result; // x0
char v2; // [xsp+2h] [xbp-Eh]
char v3; // [xsp+4h] [xbp-Ch]
__int64 v4; // [xsp+8h] [xbp-8h]
v4 = 5139240511851214385LL;
if ( a1 )
{
result = sub_1800E3608((__int64)&v2);
if ( !(_DWORD)result || !(v2 & 0x10) || !(v3 & 0x80000000) )
goto LABEL_7;
a1 = 1;
}
result = sub_1800E36D0(a1);
LABEL_7:
if ( 5139240511851214385LL != v4 )
sub_1800D4A5C();
return result;
}
//----- (00000001800D83EC) ----------------------------------------------------
__int64 sub_1800D83EC()
{
sub_1800BBD08();
LOBYTE(qword_1801158C8[7067]) = 1;
return 0LL;
}
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D8410) ----------------------------------------------------
__int64 sub_1800D8410()
{
char v0; // w19
int v1; // w8
__int64 v2; // x9
int v3; // w20
int v4; // w10
int v5; // w1
unsigned __int8 v7; // [xsp+17h] [xbp-29h]
__int64 v8; // [xsp+18h] [xbp-28h]
v8 = 5139240511851214385LL;
if ( !(qword_1801158C8[7067] & 1) )
sub_1800D489C("%llx:%d", &byte_180101040, 3553392363025658480LL, 552LL);
sub_1800E6D44();
v0 = sub_1800E7364();
sub_1800D8198(0, 0, 0, 1);
sub_1800E7374(&dword_180115558);
LOBYTE(qword_1801158C8[7069]) = 0;
if ( v0 & 1 )
{
sub_1800BEFBC();
LOBYTE(qword_1801158C8[7069]) = ((__int64 (__fastcall *)(signed __int64, signed __int64))loc_1800BF254)(20LL, 1LL) & 1;
}
sub_1800D8198(0, 0, 0, 0);
sub_1800BC278(1u, &v7);
sub_1800D8644();
sub_1800D8198(LOBYTE(qword_1801158C8[7069]) != 0, 0, 0, 0);
v1 = 0;
v2 = 0LL;
LOWORD(v3) = 8186;
while ( v2 <= 0 )
{
v4 = *(_DWORD *)(4 * v2++ + 0x1801235BCLL);
v1 += 0x4000;
if ( v4 == 4 )
{
v3 = *(_DWORD *)(4 * v2 + 0x1801235BCLL) % 10 + (v1 | 0x1FFA);
break;
}
}
sub_1800BC320(9u, (unsigned __int8)v3);
sub_1800BC320(0xAu, (unsigned __int16)v3 >> 8);
sub_1800E7018();
sub_1800BC278(0, &v7);
MEMORY[0x1801235B1] = (v7 & 0x50 | 0xFFFFFF80) == -112;
if ( MEMORY[0x1801235B0] )
v5 = v7 | 0x20;
else
v5 = v7 & 0xDF;
v7 = v5;
sub_1800BC320(0, v5);
sub_1800BBF1C();
if ( 5139240511851214385LL != v8 )
sub_1800D4A5C();
return 0LL;
}
// 180101040: using guessed type char byte_180101040;
// 180115558: using guessed type int dword_180115558;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D8634) ----------------------------------------------------
__int64 sub_1800D8634()
{
return 0LL;
}
//----- (00000001800D863C) ----------------------------------------------------
signed __int64 sub_1800D863C()
{
return sub_1800E7364();
}
//----- (00000001800D8644) ----------------------------------------------------
void sub_1800D8644()
{
__int64 v0; // x19
__int64 v1; // x1
__int64 v2; // x2
__int64 v3; // x3
__int64 v4; // x4
__int64 v5; // x5
__int64 v6; // x6
__int64 v7; // x7
signed int v8; // w23
__int64 v9; // x23
int v10; // w0
unsigned int v11; // w0
unsigned int v12; // w10
int v13; // w11
int v14; // w23
__int64 v15; // x1
__int64 v16; // x2
__int64 v17; // x3
__int64 v18; // x4
__int64 v19; // x5
__int64 v20; // x6
__int64 v21; // x7
__int64 v22; // x0
__int64 v23; // [xsp+0h] [xbp-70h]
int v24; // [xsp+8h] [xbp-68h]
int v25; // [xsp+Ch] [xbp-64h]
unsigned int v26; // [xsp+10h] [xbp-60h]
unsigned int v27; // [xsp+14h] [xbp-5Ch]
__int64 v28; // [xsp+18h] [xbp-58h]
v0 = 0LL;
v28 = 5139240511851214385LL;
while ( v0 != 1 )
{
if ( sub_1800E713C() & 1 )
{
v8 = 6;
goto LABEL_35;
}
if ( !(unsigned int)sub_1800E70DC() )
{
if ( sub_1800E7134() & 1 )
{
v8 = 2;
}
else
{
*(_DWORD *)(4 * v0 + 0x1801235C0LL) = 0;
v8 = 1;
}
goto LABEL_35;
}
if ( *(_DWORD *)(4 * v0 + 0x1801235C0LL) )
goto LABEL_6;
v9 = 0LL;
*(_DWORD *)(4 * v0 + 0x1801235C0LL) = 0;
while ( v9 != 8 )
{
if ( v9 == 4 )
v10 = 1;
else
v10 = 2;
sub_1800E33E0(v10);
sub_1800D5F60(2000LL);
v11 = sub_1800BBAB0();
*(unsigned int *)((char *)&v26 + v9) = v11;
if ( v11 > 0x8AC )
{
if ( v11 > 0xB4A )
*(int *)((char *)&v24 + v9) = 2;
else
*(int *)((char *)&v24 + v9) = 1;
}
else
{
*(int *)((char *)&v24 + v9) = 0;
}
sub_1800E33E0(0);
v9 += 4LL;
}
if ( v27 )
{
v12 = 1000 * v26 / v27;
if ( v12 - 1291 < 0xD7 )
{
v13 = 2;
goto LABEL_28;
}
if ( v12 - 665 < 0x6F )
{
v13 = 4;
goto LABEL_28;
}
}
else
{
v12 = 0;
}
v13 = 3 * v25 + v24 + 1;
LABEL_28:
if ( v27 >= 0x3E8 && v26 > 0x3E7 )
{
if ( v12 - 500 <= 0x5DC )
{
*(_DWORD *)(4 * v0 + 0x1801235C0LL) = v13;
LABEL_6:
v8 = 4;
goto LABEL_35;
}
LABEL_34:
v8 = 3;
goto LABEL_35;
}
if ( !(unsigned int)sub_1800E33E0(4) )
goto LABEL_34;
sub_1800D5B44(40000LL);
v14 = sub_1800BBAB0();
sub_1800E33E0(0);
if ( (unsigned int)(v14 - 251) >= 0x225 )
goto LABEL_34;
v8 = 5;
LABEL_35:
sub_1800EF260((__int64)"power supply type %s", v1, v2, v3, v4, v5, v6, v7, (__int64)*(&off_180112B88 + v8));
if ( v8 == 4 )
sub_1800EF260((__int64)" id %d", v15, v16, v17, v18, v19, v20, v21, *(unsigned int *)(4 * v0 + 0x1801235C0LL));
v22 = sub_1800EF260((__int64)"\n", v15, v16, v17, v18, v19, v20, v21, v23);
if ( v8 != *(_DWORD *)(4 * v0 + 0x1801235BCLL) )
{
*(_DWORD *)(4 * v0 + 0x1801235BCLL) = v8;
nullsub_15(v22);
}
++v0;
}
if ( 5139240511851214385LL != v28 )
sub_1800D4A5C();
}
// 1800E7360: using guessed type __int64 __fastcall nullsub_15(_QWORD);
// 180112B88: using guessed type void *off_180112B88;
//----- (00000001800D88B8) ----------------------------------------------------
__int64 sub_1800D88B8()
{
nullsub_7();
return 0LL;
}
// 1800C0010: using guessed type __int64 nullsub_7(void);
//----- (00000001800D88D0) ----------------------------------------------------
// write access to const memory has been detected, the output may be wrong!
bool sub_1800D88D0()
{
_BOOL8 result; // x0
signed int v1; // w23
__int64 v2; // x1
__int64 v3; // x2
__int64 v4; // x3
__int64 v5; // x4
__int64 v6; // x5
__int64 v7; // x6
__int64 v8; // x7
unsigned __int8 v9; // [xsp+27h] [xbp-39h]
__int64 v10; // [xsp+28h] [xbp-38h]
v10 = 5139240511851214385LL;
if ( sub_1800D9FD0() )
{
result = 0LL;
}
else if ( LOBYTE(qword_1801158C8[7069]) )
{
result = 1LL;
}
else
{
v9 = 0;
sub_1800BC278(0, &v9);
MEMORY[0x1801235B0] = (v9 >> 5) & 1;
MEMORY[0x1801235B1] = (v9 & 0x50 | 0xFFFFFF80) == -112;
sub_1800BC278(0xAu, &v9);
v1 = (unsigned int)v9 >> 6;
dword_180115558 = (v9 & 0x1F) << 8;
sub_1800BC278(9u, &v9);
if ( v1 )
*(_DWORD *)(4LL * v1 + 0x1801235BCLL) = 5;
dword_180115558 = -6;
MEMORY[0x1801235C4] = 3706;
sub_1800EF260(
(__int64)"battery voltage %d mV, delta_target=%d, no_battery_power=%d\n",
v2,
v3,
v4,
v5,
v6,
v7,
v8,
4294967290LL);
sub_1800D8644();
sub_1800D8198(MEMORY[0x1801235B0] != 0, 0, 0, 0);
result = LOBYTE(qword_1801158C8[7069]) != 0;
}
if ( 5139240511851214385LL != v10 )
sub_1800D4A5C();
return result;
}
// 1800D89CC: write access to const memory at 180115558 has been detected
// 1800D898C: write access to const memory at 180115558 has been detected
// 180114CE8: using guessed type __int64[105];
// 180115558: using guessed type int dword_180115558;
// 1801158C8: using guessed type __int64 qword_1801158C8[39];
//----- (00000001800D8A88) ----------------------------------------------------
signed __int64 sub_1800D8A88()
{
signed __int64 result; // x0
unsigned __int8 v1; // [xsp+7h] [xbp-19h]
__int64 v2; // [xsp+8h] [xbp-18h]
v2 = 5139240511851214385LL;
if ( MEMORY[0x1801235B1] )
{
v1 = 0;
sub_1800BC278(0, &v1);
v1 &= 0x2Fu;
result = sub_1800BC320(0, v1);
MEMORY[0x1801235B1] = 0;
}
if ( 5139240511851214385LL != v2 )
sub_1800D4A5C();
return result;
}
//----- (00000001800D8B10) ----------------------------------------------------
signed __int64 sub_1800D8B10()
{
return 0xFFFFFFFFLL;
}
//----- (00000001800D8B1C) ----------------------------------------------------
_DWORD *__fastcall sub_1800D8B1C(_DWORD *result, __int64 a2)
{
char v2; // w9
int v3; // w8
v2 = 0;
v3 = MEMORY[0x1801235C0];
if ( MEMORY[0x1801235BC] != 4 )
v3 = 0;
while ( !(v2 & 1) && a2 )
{
*result = v3;
v2 = 1;
}
return result;
}
//----- (00000001800D8B4C) ----------------------------------------------------
__int64 __fastcall sub_1800D8B4C(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8)
{
sub_1800EF260((__int64)"%llx:%d\n", a2, a3, a4, a5, a6, a7, a8, 3553392363025658480LL);
return MEMORY[0x1801235C8];
}
//----- (00000001800D8B94) ----------------------------------------------------
__int64 __fastcall sub_1800D8B94(__int64 result)
{
MEMORY[0x1801235C8] |= result;
return result;
}
//----- (00000001800D8BAC) ----------------------------------------------------
signed __int64 sub_1800D8BAC()
{
int v0; // w19
int v1; // w21
__int64 v2; // x1
__int64 v3; // x2
__int64 v4; // x3
__int64 v5; // x4
__int64 v6; // x5
__int64 v7; // x6
__int64 v8; // x7
__int64 v9; // x1
__int64 v10; // x2
__int64 v11; // x3
__int64 v12; // x4
__int64 v13; // x5
__int64 v14; // x6
__int64 v15; // x7
signed int v16; // w8
__int64 v17; // x1
__int64 v18; // x2
__int64 v19; // x3
__int64 v20; // x4
__int64 v21; // x5
__int64 v22; // x6
__int64 v23; // x7
unsigned __int8 v24; // w19
__int64 v25; // x1
__int64 v26; // x2
__int64 v27; // x3
__int64 v28; // x4
__int64 v29; // x5
__int64 v30; // x6
__int64 v31; // x7
__int64 v32; // x0
__int64 v33; // x1
__int64 v34; // x2
__int64 v35; // x3
__int64 v36; // x4
__int64 v37; // x5
__int64 v38; // x6
__int64 v39; // x7
__int64 v40; // x0
__int64 v41; // x1
__int64 v42; // x2
__int64 v43; // x3
__int64 v44; // x4
__int64 v45; // x5
__int64 v46; // x6
__int64 v47; // x7
__int64 v48; // x1
__int64 v49; // x2
__int64 v50; // x3
__int64 v51; // x4
__int64 v52; // x5
__int64 v53; // x6
__int64 v54; // x7
__int64 v55; // x23
__int64 v56; // x0
__int64 v57; // x1
__int64 v58; // x2
__int64 v59; // x3
__int64 v60; // x4
__int64 v61; // x5
__int64 v62; // x6
__int64 v63; // x7
char v64; // w19
int v65; // w0
int v66; // w0
int v67; // w0
__int64 v68; // x24
__int64 v69; // x1
__int64 v70; // x2
__int64 v71; // x3
__int64 v72; // x4
__int64 v73; // x5
__int64 v74; // x6
__int64 v75; // x7
int v77; // w19
__int64 v78; // x1
__int64 v79; // x2
__int64 v80; // x3
__int64 v81; // x4
__int64 v82; // x5
__int64 v83; // x6
__int64 v84; // x7
char v85; // w19
int v86; // w0
unsigned __int8 v87; // w23
signed int v88; // w19
__int64 v89; // x1
__int64 v90; // x2
__int64 v91; // x3
__int64 v92; // x4
__int64 v93; // x5
__int64 v94; // x6
__int64 v95; // x7
int i; // w8
__int64 v97; // x1
__int64 v98; // x2
__int64 v99; // x3
__int64 v100; // x4
__int64 v101; // x5
__int64 v102; // x6
__int64 v103; // x7
char v104; // w19
int v105; // w1
__int64 v106; // x1
__int64 v107; // x2
__int64 v108; // x3
__int64 v109; // x4
__int64 v110; // x5
__int64 v111; // x6
__int64 v112; // x7
int v113; // w1
int v114; // w1
__int64 v115; // x1
__int64 v116; // x2
__int64 v117; // x3
__int64 v118; // x4
__int64 v119; // x5
__int64 v120; // x6
__int64 v121; // x7
__int64 v122; // [xsp+0h] [xbp-70h]
unsigned __int8 v123; // [xsp+27h] [xbp-49h]
__int64 v124; // [xsp+28h] [xbp-48h]
char v125; // [xsp+31h] [xbp-3Fh]
char v126; // [xsp+32h] [xbp-3Eh]
char v127; // [xsp+33h] [xbp-3Dh]
unsigned __int8 v128; // [xsp+34h] [xbp-3Ch]
char v129; // [xsp+35h] [xbp-3Bh]
char v130; // [xsp+36h] [xbp-3Ah]
char v131; // [xsp+37h] [xbp-39h]
__int64 v132; // [xsp+38h] [xbp-38h]
v132 = 5139240511851214385LL;
v123 = 0;
v0 = MEMORY[0x1801235B1];
sub_1800BC278(0, &v123);
if ( v0 )
{
v1 = v123 & 0xD0;
}
else if ( v123 & 4 )
{
v123 &= 0xFBu;
sub_1800BC320(0, v123);
v1 = 0;
MEMORY[0x1801235C8] |= 0x20u;
}
else
{
v1 = 0;
}
if ( sub_1800D9FD0() )
{
sub_1800BC278(0xDu, (_BYTE *)&v124 + 4);
if ( BYTE4(v124) )
sub_1800EF260((__int64)"%llx:%d\n", v2, v3, v4, v5, v6, v7, v8, 3553392363025658480LL);
goto LABEL_28;
}
v128 = 0;
v124 = 85899345924LL;
sub_1800BFA30((signed __int64)&v124 + 4, (signed int *)&v124);
v16 = v124 | HIDWORD(v124);
if ( v124 )
{
sub_1800EF260((__int64)"%llx:%d\n", v9, v10, v11, v12, v13, v14, v15, 3553392363025658480LL);
sub_1800BC278(0xDu, &v128);
v24 = v128;
if ( !v128 )
{
sub_1800EF260((__int64)"%llx:%d\n", v17, v18, v19, v20, v21, v22, v23, 3553392363025658480LL);
v16 = 0;
goto LABEL_20;
}
if ( v128 & 0x60 )
goto LABEL_19;
sub_1800D9B3C(&v127, (bool *)&v126, &v125);
sub_1800EF260(
(__int64)"upo: upo_state=%x powersupply_changed=%d button_event=%d rtc_event=%d\n",
v25,
v26,
v27,
v28,
v29,
v30,
v31,
v128);
if ( v127 )
{
sub_1800D8644();
v32 = sub_1800D8198(1, 0, 0, 0);
if ( !(_DWORD)v32 )
v127 = 0;
sub_1800EF260((__int64)"upo: ok=%d powersupply_changed=%d\n", v33, v34, v35, v36, v37, v38, v39, v32);
}
v40 = sub_1800BCA68(0);
if ( v127 )
goto LABEL_19;
v77 = v24 & 7;
if ( (char)v128 & 0x80000000 )
{
if ( (char)v128 != -128 )
{
sub_1800EF260((__int64)"%llx:%d\n", v17, v18, v19, v20, v21, v22, v23, 3553392363025658480LL);
v16 = -1;
goto LABEL_20;
}
goto LABEL_61;
}
if ( v125 )
{
if ( !v77 )
{
LABEL_61:
if ( v128 & 0x40 )
{
sub_1800C5950(v40, v17, v18, v19, v20, v21, v22, v23);
v85 = sub_1800F36C4(0);
sub_1800D9BFC(0xFFFFFFFFLL);
sub_1800F1D3C(1819240303LL);
if ( v86 )
sub_1800F1D70();
else
sub_1800F1CE4(0, 0, 0);
sub_1800F36C4(v85);
sub_1800F2544();
for ( i = HIDWORD(v124); i; i = HIDWORD(v124)-- - 1 )
{
sub_1800D9B3C(&v127, (bool *)&v126, &v125);
if ( v127 )
{
sub_1800D8644();
if ( (unsigned int)sub_1800D8198(1, 0, 0, 0) )
{
sub_1800EF260((__int64)"%llx:%d\n", v97, v98, v99, v100, v101, v102, v103, 3553392363025658480LL);
break;
}
}
if ( (unsigned int)sub_1800BFAA8() )
{
sub_1800D99E0(0x338u);
v104 = 0;
goto LABEL_84;
}
sub_1800D5B44(1000000LL);
}
v104 = 1;
LABEL_84:
sub_1800EF260((__int64)"%llx:%d\n", v89, v90, v91, v92, v93, v94, v95, 3553392363025658480LL);
if ( v127 )
v16 = 1;
else
v16 = 3;
if ( v104 & 1 || v127 )
goto LABEL_20;
v113 = v128 | 0x20;
v128 |= 0x20u;
sub_1800BC320(0xDu, v113);
goto LABEL_90;
}
if ( v77 != 7 )
{
v87 = v124;
if ( v128 & 0x80 )
{
sub_1800EF260((__int64)"%llx:%d\n", v17, v18, v19, v20, v21, v22, v23, 3553392363025658480LL);
v88 = 1;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment